问题及目标
寻找区分数据最合适的超平面,所有数据离该平面越远越好
•超平面:二维以直线分隔、三维以平面分隔、更多维类似
•正负样本离该平面越远,预测数据抗扰动能力越强
•虚线为支持向量,实线为超平面
人工标记正负样本,我们将寻找离超平面最近的两个正负样本作为支持向量来分类数据
•红标记为1,人为规定为正样本:y=1
•蓝标记为-1,人为规定为负样本:y=-1
SVM为便于计算,假设两个支持向量函数值为±1,这样实际预测时正样本值≥1,自然达到分类效果;负样本同理
自然地,两类样本满足
为保证所有样本离超平面尽量远,则选支持向量与超平面有最大距离;根据初中点到直线距离可得:
距离概念上是正数则分子含绝对值、
因此支持向量|wx+b|=1承担着历史重任,我们需要确定w、b使支持向量与超平面有最大距离。转换为数学问题:
将w做平方是方便利用凸优化进行后续求解,系数0.5仅仅方便抵消w求导后的常数值2。SVM的目标即求解如下问题:
约束条件:
核函数
实际问题在原有特征维度很容易遇到无法线性可分时,核函数将一对样本映射到高维世界
简单地说,小学公式可见2个参数运算等效于3个参数运算。向量内积中等效于a(x1,y1)、b(x2,y2)映射为
则a、b升维后,其内积便有
而恰好,SVM求解过程中会出现两个向量的内积运算。我们借此机会将向量映射为高维运算。从上文可知,我们并不需要care真正的高维是什么样子的,因为直接在低维进行变换计算就已经实现了高维的运算。因此a1·a2转换为高维计算可表达为K(a1,a2)
核函数包括高斯核、多项式核等等,借助核函数我们就可以将问题趋近于线性可分
松弛变量
实际问题中还存在少数派(离群点)影响分类结果。我们需要容许这些离群点落在支持向量与超平面内,则对于原问题我们会多加一项以故意产生误差
约束条件:
•ti是每个样本的松弛变量,离群点自然一定程度≤1
•,不再这个区间意义就混乱了;后续求解问题时会通过约束条件对正常点的,使误差只源于离群点
•w后面新增项即为误差(把我们要求的最小值变大了自然就产生误差了)
•C需提前指定,根据训练结果进行调节;C越大代表越照顾离群点(C↑,则w↑,则d↓)
•若正负样本比例偏斜严重,则正负样本的C可简单的通过数量比例关系转化
注:新增项等效于回归问题中的正则化L1,你也可以用L2
高斯核+软间隔(B为高斯核的方差参数)的支持向量可视化区分效果: