支持向量机的概念
支持向量机是一种二分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器;支持向量机还包括核技巧,这使它成为非线性分类器。
SVM学习策略:SVM的学习策略为间隔最大化,可形式化为一个凸二次规划问题的求解,也等价于正则化的合页损失函数的最小化问题。
支持向量机的学习算法是求解凸二次规划的最优化算法。
支持向量机和感知机的区别
感知机采用了误分类最小策略来求得分离超平面,由于选取不同的初值或不同的误分类点,解可以不同。
线性可分支持向量机利用间隔最大化求最优分离超平面,来使得解具有唯一性。
支持向量机的类别
线性可分支持向量机
- 线性可分支持向量机:给定线性可分训练数据集,通过硬间隔最大化,学习一个线性的分类器。线性可分支持向量机函数间隔为:
2||w||
2
|
|
w
|
|
学习得到的分离超平面为: w∗x+b∗=0 w ∗ x + b ∗ = 0
以及相应的分类决策函数: f(x)=sign(w∗x+b∗) f ( x ) = s i g n ( w ∗ x + b ∗ )
当分离超平面 f(x)=0 f ( x ) = 0 时, x x 位于分离超平面上;的点对应 y=1 y = 1 的数据点; f(x)<0 f ( x ) < 0 的点对应 y=−1 y = − 1 的数据点。
确定超平面方法:函数间隔和几何间隔
样本点
(xi,yi)
(
x
i
,
y
i
)
的被超平面
(w,b)
(
w
,
b
)
正确分类时,点
xi
x
i
与超平面
(w,b)
(
w
,
b
)
的函数间隔和几何间隔为别为:
函数间隔(
γ̂ i
γ
^
i
):
γ̂ i=yi(wxi+b)=yif(xi)
γ
^
i
=
y
i
(
w
x
i
+
b
)
=
y
i
f
(
x
i
)
几何间隔:
γi=yi(w||w||xi+b||w||)
γ
i
=
y
i
(
w
|
|
w
|
|
x
i
+
b
|
|
w
|
|
)
函数间隔和几何间隔的关系:若
||w||=1
|
|
w
|
|
=
1
,那么函数间隔和几何间隔相等;如果超平面参数
w
w
和成比例的改变,函数间隔也成比例改变,几何间隔不变 。
线性可分支持向量机:利用拉格朗日对偶性首先求
L(w,b,α)
L
(
w
,
b
,
α
)
对
w,b
w
,
b
求极小,在对
α
α
求极大。
线性支持向量机
- 线性支持向量机:当训练数据近似线性可分时,通过软间隔最大化,得到的分类器。
线性支持向量机对每个样本点 (xi,yi) ( x i , y i ) 引入松弛变量 ξi≥0 ξ i ≥ 0 ,使得函数间隔加上松弛变量大于等于1。 - 非线性支持向量机:当训练数据线性不可分时,通过使用核技巧及软间隔最大化得到的非线性支持向量机。
- 将核技巧应用到支持向量机:通过一个非线性变换将输入空间对应于一个特征空间,使得在输入空间中的超曲面模型对应于特征空间中的超平面模型。这样转换为:在特征空间中求解线性支持向量机就可以完成。
- 常用的核函数有多项式核函数、高斯核函数、字符串核函数。
from sklearn import svm
import numpy as np
import matplotlib.pyplot as plt
x=np.r_[np.random.randn(20,2)-[2,2],np.random.randn(20,2)+[2,2]] #生成2*(20*2)的数据
y=[0]*20+[1]*20
clf = svm.SVC(kernel='linear')
clf.fit(x,y)
w=clf.coef_[0] #获取w
a=-w[0]/w[1] #斜率
xx=np.linspace(-5,5) #默认生成50个数
yy=a*xx - (clf.intercept_[0]/w[1]) #xx带入y,Ax+By+C=0,y=(-A/B)*x-(C/B)
#这里的B=w[1],C=clf.intercept_[0],clf.intercept_表示常数C*
#画出与点相切的线
b=clf.support_vectors_[0]
yy_down=a*xx+(b[1]-a*b[0])
b=clf.support_vectors_[-1]
yy_up=a*xx+(b[1]-a*b[0])
plt.figure(figsize=(8,4))
plt.plot(xx,yy)
plt.plot(xx,yy_down)
plt.plot(xx,yy_up)
plt.scatter(x[:,0],x[:,1])
plt.scatter(clf.support_vectors_[:,0],clf.support_vectors_[:,1],s=80)
plt.show()
参考:https://blog.csdn.net/v_july_v/article/details/7624837
拉格朗日对偶:https://www.cnblogs.com/90zeng/p/Lagrange_duality.html