SVM算法
简介
SVM全程Support Vector Machine,支持向量机,在深度学习出来之前,长期霸占机器学习算法图像识别榜首位置多年,可见该算法的魅力,相当于冷兵器时代的长枪。
线性可分支持向量机
分割超平面
假设在二维平面上有两个数据集,C和D为两个不想交的凸集,则存在超平面P,P可以将C和D分离。
两个集合的距离,定义为两个集合间元素的最短距离;
做集合C和集合D最短线段的垂直平分线。
分割超平面的思考
- 如何定义两个集合的最优分割超平面?
- 找到集合“边界”上的若干点,以这些点位“基础”计算超平面的方向;以两个集合边界上的这些点的平均作为超平面的“截距”
- 支持向量:support vector
- 若两个集合有部分相交,如何定义超平面,使得连个集合“尽量”分开?
支持向量机推导过程
输入数据
假设给定一个特征空间上的训练数据集,T={(x1,y1),(x2,y2),(x3,y3),…(xn,yn)}
其中x∈Rn,yi∈{-1,+1},i=1,2,…N
xi为第i个实例
yi为xi的类标记:
* 当yi = +1时,称xi为正例
* 当yi = -1时,称xi为负例
(xi,yi)称为样本点
线性可分支持向量机
- 给定线性可分训练数据集,通过间隔最大化得到分离超平面:
- y(x) = wTφ(x) + b
- 相应的分类决策函数 f(x) = sign(wTφ(x) + b),该决策函数称为线性可分支持向量机
- φ(x)是某个确定的特征空间转换函数,他的作用是将x映射到更高的维度
- 稍后介绍,求解分离超平面问题可以等价我求解相应的凸二次规划问题
根据上述介绍,可以得到下面的符号:
线性可分支持向量机表述为下图:
推导线性可分支持向量机目标函数
线性不可分支持向量机
若数据线性不可分,则增加松弛因子ξi,使得函数间隔加上松弛变量大于等于1,这样约束条件变成:
yi(w.xi + b ) >= 1-ξi
目标函数就变成了:
损失函数分析
核函数
可以使用核函数,将原始输入空间映射到新的特征空间,从而,使得原本线性不可分的样本可能在核空间可分。
包括多项式核函数、高斯核函数、sigmoid核函数。