支持向量机,一般简称SVM,通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。在线性可分时,在原空间寻找两类样本的最优分类超平面。在线性不可分时,加入松弛变量并通过使用非线性映射将低维度输入空间的样本映射到高维度空间使其变为线性可分,这样就可以在该特征空间中寻找最优分类超平面。
优点:
支持向量机算法可以解决小样本情况下的机器学习问题,简化了通常的分类和回归等问题。
泛化错误率低,计算开销不大,结果易解释
缺点:
支持向量机算法对大规模训练样本难以实施。
对参数调节和核函数的选择敏感,原始分类器不加修改仅适用与处理二分类问题
线性分类
现在有一个二维平面,平面上有两种不同的数据,分别用圈和叉表示。由于这些数据是线性可分的,所以可以用一条直线将这两类数据分开,这条直线就相当于一个超平面,超平面一边的数据点所对应的y全是-1 ,另一边所对应的y全是1。
这个超平面可以用分类函数表示,当f(x) 等于0的时候,x便是位于超平面上的点,而f(x)大于0的点对应 y=1 的数据点,f(x)小于0的点对应y=-1的点
最大间隔分类器
对一个数据点进行分类,当超平面离数据点的间隔越大,分类的确信度也越大。所以,为了使得分类的确信度尽量高,需要让所选择的超平面能够最大化这个间隔值。
简化版smo算法实现:
数据集:
1.32 -5.36 -1
2.01 -3.26 -1
2.85 -3.92 -1
3.96 -3.99 -1
3.92 -2.74 -1
3.34 -1.68 -1
3.87 0.68 -1
4.02 0.65 -1
4.35 -1.54 -1
5.01 -1.21 -1
5.28 -0.96 -1
5.54 0.01 -1
5.96 -1.75 -1
5.78 2.03 -1
5.89 -0.93 -1
6.21 0.65 -1
6.32 -0.98 -1
6.45 0.87 -1
6.89 1.34 -1
7.21 2.98 -1
-3.21 -2.32 1
-2.87 -0.98 1
-2.32 0.57 1
-2.68 2.69 1
-2.48 3.98 1
-1.96 0.11 1
-1.54 -0.87 1
-1.32 1.58 1
-1.25 2.14 1
-1.21 3.57 1
-0.87 0.89 1
-0.65 2.82 1
-0.42 4.21 1
-0.22 5.98 1
0.87 2.65 1
1.21 3.69 1
1.36 5.84 1
1.68 3.98 1
1.87 4.03 1
2.54 5.21 1
辅助函数:
简化版的smo函数:
运行结果:
b:
大于0的元素的数量:
支持向量的数据点:
计算w:
w:
显示结果: