Support Vector Machine
要解决的问题:什么样的决策边界才是最好的呢?
决策边界:选出来离两个类别的距离最远的决策边界
点到平面的距离的计算
数据标签定义
数据集:(X1,Y1)(X2,Y2)… (Xn,Yn)
Y为样本的类别: 当X为正例时候 Y = +1 当X为负例时候 Y = -1
决策方程:
优化的目标
通俗解释:找到一个条线(w和b),使得离该线最近的点能够最远
将点到直线的距离化简得:
目标函数
放缩变换:对于决策方程(w,b)可以通过放缩使得其结果值|Y|>= 1
(之前我们认为恒大于0,现在严格了些)
优化目标:
因为后面最小值为1
常规套路:将求解极大值问题转换成极小值问题:
如何求解:应用拉格朗日乘子法求解
拉格朗日乘子法
带约束的优化问题:
原式转换:
我们的式子:
(约束条件不要忘:
分别对w和b求偏导,分别得到两个条件(由于对偶性质)
对w求偏导:
对b求偏导:
SVM求解
带入原始:
其中
完成了第一步求解
继续对ɑ求极大值:
条件:
极大值转换成求极小值:
条件:
SVM求解实例
数据:3个点,其中正例 X1(3,3) ,X2(4,3) ,负例X3(1,1)
求解:
约束条件:
原式:
由于:
化简可得:
分别对ɑ1和ɑ2求偏导,偏导等于0可得:
(并不满足约束条件,所以解应在边界上)
最小值在(0.25,0,0.25)处取得
将ɑ结果带入求解
平面方程为:
支持向量:真正发挥作用的数据点,ɑ值不为0的点,即边界点,非边界点的ɑ值必定为0
soft-margin
软间隔:有时候数据中有一些噪音点,如果考虑它们咱们的线就不太好
之前的方法要求要把两类点完全分得开,这个要求有点过于严格
为了解决该问题,引入松弛因子
新的目标函数:
当C趋近于很大时:意味着分类严格不能有错误
当C趋近于很小时:意味着可以有更大的错误容忍
C是我们需要指定的一个超参数
拉格朗日乘子法:
约束:
同样的解法:
低维不可分问题
核变换:既然低维的时候不可分,那我给它映射到高维呢?
低维不可分问题
目标:找到一种变换的方法,也就是 ()
实例:
高斯核函数:
线性核函数
高斯核函数