SVM(支持向量机)
引言
支持向量机(Support Vector Machine,SVM),可以用来解答二分类问题。支持向量(Support Vector):把划分数据的决策边界叫做超平面,点到超平面的距离叫做间隔。在SVM中,距离超平面最近的且满足一定条件的几个训练样本点被称为支持向量。
图中,被圈出来的就是支持向量。支持向量机是要使超平面和支持向量之间的间隔尽可能的大,这样才能使两类样本尽可能地分开。
间隔又分为硬间隔和软间隔。
- 硬间隔
在使用超平面进行分割数据时,严格地让所有实例都不在最大间隔之间,并且位于正确的一遍,就是硬间隔。
硬间隔存在的问题:1.只在数据线性可分时有效 2.对异常值非常敏感。
- 软间隔
要避免硬间隔存在的问题,目标是尽可能在保持最大间隔宽阔和限制间隔违例之间找到良好平衡。
SVM存在以下优点:
SVM通过优化一个凸二次规划问题来求解最佳的超平面,其中包括最小化模型的复杂度,同时限制训练样本的误分类情况。
我们将支持向量机的判别面、支持面表示为:
w x + b = ± 1 w x + b = 0 wx+b= \pm 1\\ wx+b = 0 wx+b=±1wx+b=0
从而可以算得,支持面和判别面的距离为 d = 1 ∣ ∣ w ∣ ∣ d = \frac{1}{||w||} d=∣∣w∣∣1
在使用SVM模型时,由于SVM的支持面与判别面的距离为 d = 1 ∣ ∣ w ∣ ∣ d = \frac{1}{||w||} d=∣∣w∣∣1,所以两个支持面的距离为 2 d = 2 ∣ ∣ w ∣ ∣ 2d=\frac{2}{||w||} 2d=∣∣w∣∣2最大化两支持面之间的距离 2 ∣ ∣ w ∣ ∣ \frac{2}{||w||} ∣∣w∣∣2,等价于最小化 ∣ ∣ w ∣ ∣ 2 2 ( 给 ∣ ∣ w ∣ ∣ 加平方是为了去除根号 ) \frac{||w||^2}{2}(给{||w||}加平方是为了去除根号) 2∣∣w∣∣2(给∣∣w∣∣加平方是为了去除根号)
-
硬间隔SVM的损失函数
硬间隔SVM最大化支持面之间的距离,并要求所有样本在支持面之外。因此,硬间隔的损失函数如下:
目标函数:
L ( w , b ) = 1 2 ∣ ∣ w ∣ ∣ 2 L(w,b)=\frac{1}{2}||w||^2 L(w,b)=21∣∣w∣∣2
约束条件:
y i ( w x i + b ) − 1 ≥ 0 , i = 1 , 2 , . . . . . , N y_i(wx_i+b)−1 \geq 0 , i=1,2,.....,N yi(wxi+b)−1≥0,i=1,2,.....,N正样本要在正支持面一侧,即 w x i + b ≥ 1 wx_i+b \geq 1 wxi+b≥1,此时 y i = 1 y_i = 1 yi=1,可得 y i ( w x i + b ) − 1 ≥ 0 y_i(wx_i + b)-1 \geq 0 yi(wxi