机器学习-支持向量机SVM算法

Posted 吾仄lo咚锵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习-支持向量机SVM算法相关的知识,希望对你有一定的参考价值。

文章目录

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站

简介


支持向量机(Support Vector Machine, SVM)对监督学习下二分类问题提供了一个绝妙的解决方案。通过对偶函数和核函数求解,将适用范围从二维线性推广到多维非线性模型,使用相关方法变形,也可用于多分类问题和回归问题。

支持向量机SVM是方法统称,如果应用于分类Classification,也叫支持向量分类SVC;如果应用于回归Regression,也叫支持向量回归SVR。

原理

硬间隔


首先考虑如何评估分类模型的好坏?

在上图中,红点和蓝叉分别表示两类线性可分的数据(取自鸢尾花数据集)。有黑色、橙色和绿色三个线性模型,都可以将数据分为两类。

直观来说,一般我们会认为黑色表示的分类模型会更好。在SVM中,是因为黑色的间隔最大。所谓的「间隔」,直白的说,就是向垂直方向两边平移,直到遇到数据点,所形成的间隔。

间隔示意图如下所示:

而SVM中认为最佳的模型,就是可以取到最大间隔 d d d的中间那条直线,也就是到两边各是 d 2 \\fracd2 2d,这样就在最大间隔中若干平行线里,唯一确定了最优的线。

如此一来,由于黑色的间隔最大,所以认为优于橙色和绿色所表示的模型。

支持向量


可以看出,在确定最大间隔时,只与少量样本数据有关,平移过程中遇到数据点即停止。我们称这部分样本数据为支持向量,也就是支持向量机名字的由来。这也是支持向量机的一大优势——适用于小样本情况。

以上是二维特征便于可视化的情况。对于二维,我们可以用线来划分;对于三维,我们可以用平面来划分;对于多维,我们称之为超平面,使用超平面来划分。
用如下方程表示超平面:
w T x + b = 0 \\bold w^T\\bold x +b =0 wTx+b=0
w \\bold w w x \\bold x x是向量,分别表示权重和特征。

对于二分类任务中,当y=+1是表示正例,y=-1表示负例。也就是y=+1时, w T x + b ≥ 0 \\bold w^T\\bold x +b \\geq 0 wTx+b0,令:
w T x i + b ≥ + 1 , y i = + 1 w T x i + b ≤ − 1 , y i = − 1 \\begincases\\bold w^T\\bold x_i+b \\geq +1,& y_i=+1\\\\ \\bold w^T\\bold x_i+b \\leq -1,& y_i=-1\\endcases wTxi+b+1,wTxi+b1,yi=+1yi=1

也就是说,上图中三条平行线的表达式分别是 w T x + b = + 1 \\bold w^T\\bold x+b=+1 wTx+b=+1 w T x + b = 0 \\bold w^T\\bold x+b=0 wTx+b=0 w T x + b = − 1 \\bold w^T\\bold x+b=-1 wTx+b=1

再由点到平面距离公式 r = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ r=\\frac|\\bold w^T \\bold x+b|||\\bold w|| r=wwTx+b,得到间隔(两个异类支持向量到超平面距离)定义:
γ = 2 ∣ ∣ w ∣ ∣ \\gamma=\\frac2||\\bold w|| γ=w2

为了求最大间隔,需要分式中分母最小,即最小化 ∣ ∣ w ∣ ∣ − 1 \\bold ||w||^-1 w1,等价于最小化 1 2 ∣ ∣ w ∣ ∣ 2 \\frac12||\\bold w||^2 21w2

如此一来,对于线性模型,我们求解如下表达式即可求得最大间隔,也称支持向量机的基本型:
m i n w , b 1 2 ∣ ∣ w ∣ ∣ 2 s . t . y i ( w T x i + b ) ≥ 1 \\mathopmin\\limits_\\bold w,b\\quad\\frac12||\\bold w||^2 \\\\ s.t.\\quad y_i(\\bold w^T\\bold x_i+b)\\geq1 w,bmin21w2s.t.yi(wTxi+b)1

属于二次规划问题,即目标函数二次项,限制条件一次项。使用拉格朗日乘子法可求得其对偶问题,使用对偶问题优化目标函数和限制条件,方便进行求解。

对偶问题


对偶问题(dual problem)简单来说就是同一问题的不同角度解法。比如时间=路程÷速度,那么求最短的时间等价于求最大的速度。

对偶问题定义 L ( w , α , β ) = f ( w ) + α T g ( w ) + β T ( w ) L(w,\\alpha,\\beta)=f(w)+\\alpha^Tg(w)+\\beta^T(w) L(w,α,β)=f(w)+αTg(w)+βT(w)
w ∗ w^* w是原问题的解, α ∗ \\alpha^* α β ∗ \\beta^* β是对偶问题的解,则有 f ( w ∗ ) ≥ θ ( α ∗ , β ∗ ) f(w^*)\\geq\\theta(\\alpha^*,\\beta^*) f(w)θ(α,β)

对约束添加拉格朗日乘子 α i ≥ 0 \\alpha_i\\geq0 αi0 α i = ( α 1 , α 2 , … , α m ) \\alpha_i=(\\alpha_1,\\alpha_2,\\dots,\\alpha_m) αi=(α1,α2,,αm)
定义凸二次规划拉格朗日函数: L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 m α i ( 1 − y i ( w T x i + b ) ) L(\\bold w,b,\\alpha)=\\frac12||\\bold w||^2+\\sum_i=1^m\\alpha_i(1-y_i(\\bold w^T\\bold x_i+b)) L(w,b,α)=21w2+i=1mαi(1yi(wTxi+b))

定义原问题与对偶问题的间距 G G G G = f ( w ∗ ) − θ ( α ∗ , β ∗ ) ≥ 0 G=f(w^*)-\\theta(\\alpha^*,\\beta^*)\\geq0 G=f(w)θ(α,β)0以上是关于机器学习-支持向量机SVM算法的主要内容,如果未能解决你的问题,请参考以下文章

如何用Python实现支持向量机

机器学习之支持向量机(手推公式版)

机器学习之支持向量机(手推公式版)

机器学习100天(四十一):041 对偶支持向量机-公式推导

机器学习(04):SVM支持向量机

分类和回归-支持向量机SVM算法