1、SVM
support vector machine
支持向量机(二分类模型)
这是一种分类算法,针对于数据小的情况,非线性以及高维的分类问题。
在小数据的情况下,神经网络的的拟合算法都没有svm
好
1.1 算法原理
svm
- 构造出最大间距的边界,可以提高分类算法的鲁棒性
1.2 公式推导过程
公式推导过程
其中:w为超平面方向;b为位移项,决定距离;
于是:求解svm算法,就是满足约束条件的前提下,求解||W ^2||的最小值
但是:
对于那种线性不可分的数据集,用上面这种方法找不到分隔超平面,应该怎么办呢???
这种时候就需要加入一个
松弛系数
2、常用的核函数
线性函数:
多项式函数
高斯核函数
2.1 如何选择算法
3、sklearn中的SVM
SVC
- 用来进行分类的任务
SVR
- 用来进行数值回归任务
以SVC为例子:
1、选择SVM的核函数,由参数kernel
指定,其中linear
表示线性函数,只能产生直线形状的分割超平面
2、核函数表示:
- 线性函数 -
linear
- 多项式函数 -
poly
- 高斯核函数 -
rbf
3、注意点:
- 线性函数只需要指定
kernel
- 多项式函数还需要指定
degree
- 高斯核函数还需要指定
gamma
,对应的是1/(2σ^2)
的值
另一个例子:
俩个特征,三个类别的数据集,用四个SVM算法拟合数据集,分别用线性核函数,三阶多项式核函数,y = 0.5和y = 0.1的高斯核函数,最后将拟合画面全部都拟合出了。
plot_hyperplane()函数
- 画出样本点,同时画出分类区间
具体功能:
最后的图片: