本站原创文章,转载请说明来自《老饼讲解-机器学习》ml.bbbdata.com
目录
一. SVM的目标和思想
1.1 SVM硬间隔模型的原始目的
1.2 SVM的直接目标
1.3 什么是支持向量
二. SVM的支持平面的表示方式
2.1 支持面表示方式的初步思路
2.2 初步思路的缺陷与改进
2.3 支持面的最终表示方式
三. SVM模型表达式
3.1 SVM模型表达式
3.2 wx+b的意义
四. SVM模型损失函数
4.1 损失函数
4.2 损失函数解说
本文解说SVM的硬间隔损失函数的定义和思想,以及硬间隔损失函数的推导
本节先大概了解SVM模型的主要思想和目标
SVM硬间隔模型用于样本线性可分的二分类,
它的原始目的是找出一个判别面,让样本离判断面的最小距离最大化,
这样的判别面称为SVM的最优判别面声明
本文所说的SVM都是指硬间隔模型,它基于样本线性可分,
硬间隔是相对软间隔模型而言,软间隔不要求样本线性可分
直接找最优判别面较难找,SVM并不是直接找最优判别面,
而是在两类样本之间,引入两个平行的支持面(支持面之间不能有样本)
然后让支持平面尽量撑开,
当两个支持平面的距离最大化时,
两个支持平面的中心,就是要找的最优判别面
所以,
SVM的直接目标是找出距离最大化的两个支持面
从而曲线救国达到找出最优判别面的原始目的
落在支持面上的样本,称为支持向量,
它们是模型的关键样本
也就是说,看起来用很多样本训练模型,但最关键的样本其实并不多
本节说明SVM支持平面的表示方法,是后面讲述模型和损失函数的基础和前提
一组支持面可以由(w,b,d)指定,
(w,b)代表两个支持面的中心平面wx+b =0,
中心平面向两边展开d距离,就是两个支持面
注: wx+b =0 同时也就是判别面
初步思路中的缺陷
初步思路中,用(w,b,d)来表示支持面
这种表述最大的问题是,
由于wx+b=0与k(wx+b)=0表示的是同一个平面,
虽然最优支持面只有一组,假设为(w,b,d)
但对所有k>0, (kw,kb,d)都能表示这组最优支持平面,
即最后的解(的表述)存在无限多个
改进思路
注意到d的取值范围为
对平面wx+b=0,的取值范围也是
,
不妨用
来替代d,这样可以消去d,
这样的表示能让解的表述较为唯一,
如下(w,b)表示的是以Wx+b=0为中心面两边展开
距离的一组支持面
而(kw,kb)虽然与(W,b)的中心面一致,但撑开的距离为
,
所以两者表示的不是同一组支持面(k=-1除外)
SVM对支持面的表示最终设计如下,
👉支持面的表示方法:(w,b)
其中,
wx+b=0是两个支持面的中心
是支持面离中面心的距离
即由wx+b=0两边展开
距离,就得到了两个支持面注:同时,wx+b=0也就是最后需要得到的判别面
本节展示SVM模型的表达式,和讲解模型表达式的意义
SVM模型数学表达式为
也就是判断样本是在判别面的正侧还是负侧,
从而决定模型是正样本还是负样本
特别说明
光看表达式很容易让人误解,以为SVM是一个平面的模型
但其实它是一个“三个平面”的模型:
以wx+b=0为判别平面,为支持距离生成两个支持平面,
共三个平面,如图:
这家伙是带翅膀的!
虽然最后的判断核心是依靠判别面,
但支持面提供了样本可信程度的一个参考
由几何关系可知,样本到判别面的距离为
如果保留距离的正负号,则有
即有:
其中是支持平面到判别平面的距离,
所以,wx+b的意义,是带符号的样本距离与支持距离的比值,
这样比较绕,不妨如下理解:
wx+b就是样本与判别平面的距离,
但这个距离是带正负号的,且它以支持距离为单位
本节讲解SVM模型(硬间隔)的损失函数和解读损失函数的意义
SVM硬间隔损失函数如下
损失函数
约束条件:
损失函数的优化目标
损失函数的优化目标的本质是最小化
,
又,所以本质是最大化两个支持面平间的距离(2d)
将改成
,
加平方是为了可以去掉2范数里的根号,同时乘以,
进一步方便损失函数求导后的简洁
损失函数的约束条件
下面我们分析约束条件,
将它拆成和
两种场景:
上面已经分析过,
wx+b 的意义就是样本与判别平面的距离(带符号,以支持距离为单位),
所以约束条件就是,
y=+1 时,即正样本,不能在正支持面的负侧
y= -1时,即负样本,不能在负支持面的正侧
损失函数意义总结
损失函数总的意思,
就是约束两个支持面必须在正负样本之间,
且两个支持面之间不能有样本,
然后最大化两个支持面之间的距离
笔者小故事
辨析清楚判别面、支持面、支持向量这些概念非常重要,
笔者最初学习时,因为不清晰这些概念,常常被误导
例如,
笔者误以为SVM要搞的是判别面,
在理解算法时,所有符号都往判别面上挂,
特别是损失函数中的,百思不得其解,
其实SVM一切一切一切都是在搞支持面,
符号的含义、函数的目标等等,都应该往支持面上挂。
损失函数中的w在这里就不应理解成判别面的权重
而是支持面之间的距离,这才是它在损失函数中所要代表的对象
又例如,
笔者以为支持向量构成了支持面,
在看到支持面上只有一个样本时就疑惑了,
一个样本怎么能构成面呢?
其实不然,支持向量只是一个定义,说明这些样本是关键样本
SVM一直在找的只有支持面,支持向量和判别面是顺带出来的东西
认识到这点对笔者来说非常重要,
对SVM的理解方向正确了,一切也就简单合理了~
相关文章
《老饼讲解|【逻辑回归】逻辑回归损失函数交叉熵形式的理解》
《老饼讲解|【原理】CART决策树算法实现流程》
《老饼讲解|【原理】逻辑回归原理》
下一篇:秋瑾为何被称为鉴湖女侠