机器学习---支持向量机的初步理解-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

1. SVM的经典解释

改编自支持向量机解释得很好 |字节大小生物学 (bytesizebio.net)

       话说在遥远的从前有一只贪玩爱搞破坏的妖怪阿布劫持了善良美丽的女主小美智勇双全

的男主大壮挺身而出大壮跟随阿布来到了妖怪的住处于是妖怪将两种能量球吐到了桌子上

并要求大壮用他手里的棍子将两种能量球分开如果大壮能赢得游戏就成全他和小美。

大壮思索了片刻就将他手里的棍子放了上去正好将两种能量球分到不同阵营。

然后阿布胸有成竹的又吐出了新的球恰巧有一个球在不属于他的阵营。

大壮将手里的棍子变粗并试图通过在棍子两侧留出尽可能大的间隙来将棍子放在最佳位置。 

阿布气急败坏将桌子上的能量球全部打乱顺序。

        大壮一时间想不出办法阿布转身就要和小美去玩游戏大壮很生气的拍了一下桌子恍然

大悟并将手里的棍子扔了出去。

 在阿布的眼中棍子正好穿过了所有的能量球并将其划分在不同的领域。

棍子也恰好打在了阿布的头上大壮和小美幸福的生活在了一起。 

        经过后人的杜篡将球写成了数据data将棍子写为了分类classifier 将最大间隙

写成了最优化optimization、将拍桌子描绘成核方法kernelling将桌子写为超平面

hyperplane。

2. SVM的算法定义

        SVM全称是supported vector machine⽀持向量机即寻找到⼀个超平⾯使样本分成两

类并且间隔最大。 SVM能够执⾏线性或非线性分类、回归甚⾄是异常值检测任务。它是机器

学习领域最受欢迎的模型之⼀。SVM特别适用于中小型复杂数据集的分类。

超平面最⼤间隔介绍

        上左图显示了三种可能的线性分类器的决策边界虚线所代表的模型表现非常糟糕甚至都

⽆法正确实现分类。其余两个模型在这个训练集上表现堪称完美但是它们的决策边界与实例过于

接近导致在面对新实例时表现可能不会太好。 右图中的实线代表SVM分类器的决策边界不

仅分离了两个类别且尽可能远离最近的训练实例。 

2.1 硬间隔

       在上面我们使用超平⾯进行分割数据的过程中如果我们严格地让所有实例都不在最⼤间隔之

间并且位于正确的⼀边这就是硬间隔分类。 硬间隔分类有两个问题⾸先它只在数据是线

性可分离的时候才有效其次它对异常值非常敏感。

        当有⼀个额外异常值的鸢尾花数据左图的数据根本找不出硬间隔⽽右图最终显示的决策

边界与我们之前所看到的⽆异常值时的决策边界也⼤不相同可能⽆法很好地泛化。

2.2 软间隔

        要避免这些问题最好使⽤更灵活的模型。⽬标是尽可能在保持最⼤间隔宽阔和限制间隔违

例即位于最⼤间隔之上 甚⾄在错误的⼀边的实例之间找到良好的平衡这就是软间隔分

类。 要避免这些问题最好使⽤更灵活的模型。⽬标是尽可能在保持间隔宽阔和限制间隔违例之

间找到良好的平衡这就是软间隔分类。

       在Scikit-Learn的SVM类中可以通过超参数C来控制这个平衡C值越小则间隔越宽但是

间隔违例也会越多。上图显示了在⼀个非线性可分离数据集上两个软间隔SVM分类器各自的决

策边界和间隔。 左边使用了高C值分类器的错误样本间隔违例较少但是间隔也较小。 右

边使用了低C值间隔大了很多但是位于间隔上的实例也更多。看起来第⼆个分类器的泛化效果

更好因为⼤多数间隔违例实际上都位于决策边界正确的⼀边所以即便是在该训练集上它做出

的错误预测也会更少。 

3. SVM的损失函数

在SVM中我们主要讨论三种损失函数

绿色0/1损失

        当正例的点落在y=0这个超平⾯的下边说明是分类正确⽆论距离超平⾯所远多近误差都是0。

        当这个正例的样本点落在y=0的上方说明分类错误⽆论距离多远多近误差都为1。 

        图像就是上图绿色线。

蓝色SVM Hinge损失函数

        当⼀个正例点落在y=1的直线上距离超平面长度1那么1-ξ=1ξ=0也就是说误差为0。 

        当它落在距离超平面0.5的地方1-ξ=0.5ξ=0.5也就是说误差为0.5。

        当它落在y=0上的时候距离为01-ξ=0ξ=1误差为1。

        当这个点落在了y=0的上方被误分到了负例中距离算出来应该是负的比如-0.5那么1-

ξ=-0.5ξ=1.5。误差为1.5。

        以此类推画在⼆维坐标上就是上图中蓝色那根线了。

红色Logistic损失函数

        损失函数的公式为

        当y = 0时损失等于ln2这样线很难画所以给这个损失函数除以ln2这样到y = 0时损

失为1即损失函数过01点即上图中的红色线。 

4. SVM的核方法

       核函数并不是SVM特有的核函数可以和其他算法也进⾏结合只是核函数与SVM结合的优

势非常⼤。核函数是将原始输⼊空间映射到新的特征空间从而使得原本线性不可分的样本可

能在核空间可分。

       下图所示的两类数据分别分布为两个圆圈的形状这样的数据本身就是线性不可分的此时

该如何把这两类数据分开呢? 

       假设X是输⼊空间 H是特征空间 存在⼀个映射ϕ使得X中的点x能够计算得到H空间中的点

h 对于所有的X中的点都成立

若xz是X空间中的点函数k(x,z)满足下述条件则称k为核函数⽽ϕ为映射函数

核方法案例1

经过上⾯公式具体变换过过程为

核方法案例2

       下⾯这张图位于第⼀、⼆象限内。我们关注红色的门以及“北京四合院”这⼏个字和下面的紫

色的字母。 下⾯这张图位于第⼀、⼆象限内。我们关注红色的门以及“北京四合院”这几个字和下

⾯的紫色的字母。

       绿色的平面可以完美地分割红色和紫色两类数据在三维空间中变成线性可分的了。 三维中

的这个判决边界再映射回⼆维空间中是⼀条双曲线它不是线性的。 核函数的作用就是⼀个

从低维空间到高维空间的映射⽽这个映射可以把低维空间中线性不可分的两类点变成线性可分

的。

常见的核函数

1.多项核中d=1时退化为线性核

2.高斯核亦称为RBF核。 

线性核和多项式核

        这两种核的作用也是⾸先在属性空间中找到⼀些点把这些点当做base核函数的作用就是

找与该点距离和角度满足某种关系的样本点。

        当样本点与该点的夹角近乎垂直时两个样本的欧式长度必须非常长才能保证满足线性核函

数大于0而当样本点与base点的方向相同时长度就不必很长而当方向相反时核函数值就是

负的被判为反类。即它在空间上划分出⼀个梭形按照梭形来进⾏正反类划分。

RBF核

          高斯核函数就是在属性空间中找到⼀些点这些点可以是也可以不是样本点把这些点当做

base以这些 base 为圆心向外扩展扩展半径即为带宽即可划分数据。 换句话说在属性空

间中找到⼀些超圆⽤这些超圆来判定正反类。

Sigmoid核

        同样地是定义⼀些base 核函数就是将线性核函数经过⼀个tanh函数进⾏处理把值域限制

在了-1到1上。 总之都是在定义距离⼤于该距离判为正小于该距离判为负。至于选择哪

⼀种核函数要根据具体的样本分布情况来确定。

⼀般有如下指导规则

       1 如果Feature的数量很大甚至和样本数量差不多时往往线性可分这时选用LR或者线

性核Linear

       2 如果Feature的数量很小样本数量正常不算多也不算少这时选用RBF核

       3 如果Feature的数量很小而样本的数量很大这时⼿动添加⼀些Feature使得线性可

分然后选用LR或者线性核Linear

       4 多项式核⼀般很少使用效率不高结果也不优于RBF

       5 Linear核参数少速度快RBF核参数多分类结果⾮常依赖于参数需要交叉验证或网

格搜索最佳参数⽐较耗时

       6应用最⼴的应该就是RBF核⽆论是小样本还是⼤样本高维还是低维等情况RBF核函

数均适用。

 

 

 

 

 

 

 

 

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: 机器学习