• Machine Learning --- SVM & Kernel Trick & GLM


    一、SVM

    SVM:支持向量机,即用不多的几个向量(二维是点)撑起分类界面,如图:

    QQ20131112210213_thumb

    固定间隔为1,目标是让几何间隔越大越好(类分得越开越好),即找出最小的||w||。这里间隔定义为:|g|=y*(w'x+b),几何间隔定义为:|g|/||w||(即点到直线的距离)。为方便运算,把w的二范式平方(即权重平方和),最后就把SVM转变为二次规划问题:

    image_thumb

    解规划问题,自然想到拉格朗日乘子法,定义拉格朗日函数:

    image3_thumb

    此式对w求偏导,便得最小w(a是一个稀疏向量,非零项对应的x为支持向量):

    因此判别函数便出来了:

    image14_thumb

    将测试的点x带入上式,与训练的点xi算内积,得出的结果大于1便是+类,小于1便是-类。

    以上为理想情况,如果出现利群点在俩间隔内,还用上式将出现不可分类问题。解决过拟合要加正则,解决不可分类要加松弛变量,松弛变量前乘上惩罚因子c,如下式:

    image20_thumb

    如式所示:间隔由[-1,1](硬间隔)变成了[-(1-ξ),(1-ξ)](软间隔)。由此总结出:SVM即软间隔分类器,测试时只要将点x代入f(x)公式,与训练点xi算内积,结果大于1-ξ则为+类,小于-1+ξ则为-类。

    注:为求系数向量a,将w0和w代入拉格朗日函数L(a,w0,w)得对偶表达式

      

    满足限制条件:

    解对偶问题仍是二次规划,变量N,约束N+1,当N较大时对偶问题复杂度高于原问题;当维数D较大时可用核方法复杂度低于原问题。

    二、解决线性不可分——核函数(向更高维映射计算高维内积)

    SVM在两群点线性可分时能找到分界超平面,如果两类点本来就线性不可分,就要将x映射到更高维得到x',以在更高维线性可分。于是内积运算变成:

    image34_thumb

    这里xi'和x'都不知道,而且向高维映射容易出现维度灾难。如何在已知xi和x的基础上得到xi'和x'的内积呢?核函数实现了此功能,低维输入高维输出。

    image28_thumb

    等价于内积运算,因此只要出现内积的地方用核函数代替就好了。

    总结:SVM即加入核方法的软间隔线性分类器

    三、泛化的线性模型(GLM):

    image49_thumb

    多项式基:

    image56_thumb

    径向基(RBF,平移不变基):

    图例如下:

    image66_thumbimage70_thumb

    四、典型的核函数(使用方法:将内积运算替换为核函)

    1.多项式核

    image39_thumb如:

    image75_thumb

    image87_thumb

    2.RBF核(平移不变核/高斯核)

    image90_thumb

    image99_thumb

    为带宽,带宽太小会过拟合,太大则会欠拟合。

    3.Sigmoid核

    image104_thumb

    4.余弦相似度核

    image114_thumb,在处理文本分类时常用。

    5.字符串核

    image119_thumb

    6.金字塔匹配核(词袋模型,加权直方图交)

    image126_thumb

    7.概率乘积核

    image130_thumb

    8.Fisher核

    image134_thumb

  • 相关阅读:
    Oracle 数据块,文件块转换,查看数据块对像
    逆向与汇编视频(36课) IDA 使用
    VC++消息钩子编程
    VS2008中opengl配置
    BSP技术详解3有图有真相
    BSP技术详解1有图有真相
    oracle 跟踪文件和转储命令
    BSP技术详解2有图有真相
    Recognizing and Learning Object Categories 连接放送
    自学MVC看这里——全网最全ASP.NET MVC 教程汇总
  • 原文地址:https://www.cnblogs.com/jizhiyuan/p/3420522.html
Copyright © 2020-2023  润新知