SVM 支持向量机算法(Support Vector Machine )【Python机器学习系列(十四

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

ωTxi​+b=1成立。以此作为限制条件,这样就可以把分母消去了。

该约束条件可表示为

r

i

=

ω

T

x

i

b

ω

y

i

1

ω

r_i =\frac{\omega^Tx_i + b}{||\omega||}y_i≥\frac{1}{||\omega||}

ri​=∣∣ω∣∣ωTxi​+b​yi​≥∣∣ω∣∣1​

提示:这里的限制条件只用了一个表达式表示,实际上有m个(m也是样本点的个数)。每个样本点对应一个限制条件。
当且仅目标当样本

x

i

x_i

xi​为支持向量时,等号成立,取得点到超平面的最小距离

1

ω

\frac{1}{||\omega||}

∣∣ω∣∣1​。

目标函数,即点到超平面的最小距离

1

ω

\frac{1}{||\omega||}

∣∣ω∣∣1​。要使该最小距离最大化,即

ω

||\omega||

∣∣ω∣∣最小,为了后边计算方便,进一步将研究问题及表达式转化为,求

1

2

ω

2

\frac{1}{2}||\omega||^2

21​∣∣ω∣∣2关于

ω

\omega

ω和

b

b

b的最小值。
目标函数即:

m

i

n

ω

,

b

1

2

ω

2

min_{\omega,b}\frac{1}{2}||\omega||^2

minω,b​21​∣∣ω∣∣2

进一步,限制条件可再转化为:

(

ω

T

x

i

b

)

y

i

1

0

(\omega^Tx_i + b)y_i-1 ≥ 0

(ωTxi​+b)yi​−1≥0


2.2 Part2 SVM拉格朗日乘子法求解

现在我们已经得到了目标函数表达式与限制条件的表达式,可以使用拉格朗日乘子法对其进行求解。
构建拉格朗日函数表达式如下:

L

(

ω

,

b

,

λ

)

=

1

2

ω

2

i

=

1

m

λ

i

[

1

(

ω

T

x

i

b

)

y

i

]

L(\omega,b,\lambda)=\frac{1}{2}||\omega||2+\sum_{i=1}{m}{\lambda_i}{[1-(\omega^Tx_i+b)y_i]}

L(ω,b,λ)=21​∣∣ω∣∣2+∑i=1m​λi​[1−(ωTxi​+b)yi​]

=

1

2

ω

T

ω

i

=

1

m

λ

i

[

1

(

ω

T

x

i

b

)

y

i

]

=\frac{1}{2}\omega^T \omega+\sum_{i=1}{m}{\lambda_i}{[1-(\omegaTx_i+b)y_i]}

=21​ωTω+∑i=1m​λi​[1−(ωTxi​+b)yi​]

目标问题是一个凸二次规划问题:目标函数是二次型函数,且约束函数是仿射函数。所以该问题有全局最小值。

其中,

λ

\lambda

λ是拉格朗日乘子,这里的m是样本的个数,每个样本对应一个拉格朗日算子,共计m个拉格朗日算子,对应m个限制条件。

F

(

ω

,

b

,

λ

)

对F(\omega,b,\lambda)

对F(ω,b,λ)求关于

ω

\omega

ω 和

b

b

b的偏导,并令其为0,再求解:

L

(

ω

,

b

,

λ

)

ω

=

ω

i

=

1

m

λ

i

y

i

x

i

=

0

\frac{∂L(\omega,b,\lambda)}{∂\omega}=\omega-\sum_{i=1}^{m}\lambda_iy_ix_i=0

∂ω∂L(ω,b,λ)​=ω−∑i=1m​λi​yi​xi​=0

L

(

ω

,

b

,

λ

)

b

=

i

=

1

m

λ

i

y

i

=

0

\frac{∂L(\omega,b,\lambda)}{∂b}=-\sum_{i=1}^{m}\lambda_iy_i=0

∂b∂L(ω,b,λ)​=−∑i=1m​λi​yi​=0

解得

ω

=

i

=

1

m

λ

i

y

i

x

i

\omega=\sum_{i=1}^{m}\lambda_iy_ix_i

ω=∑i=1m​λi​yi​xi​

0

=

i

=

1

m

λ

i

y

i

0=\sum_{i=1}^{m}\lambda_iy_i

0=∑i=1m​λi​yi​

将求解结果带回原

L

(

ω

,

b

,

λ

)

L(\omega,b,\lambda)

L(ω,b,λ),并进一步化简得:

L

(

ω

,

b

,

λ

)

=

1

2

ω

T

ω

i

=

1

m

λ

i

ω

T

i

=

1

m

λ

i

y

i

x

i

b

i

=

1

m

λ

i

y

i

L(\omega,b,\lambda)=\frac{1}{2}\omega^T \omega+\sum_{i=1}^{m}\lambda_i -\omegaT\sum_{i=1}{m}\lambda_iy_ix_i-b\sum_{i=1}^{m}\lambda_iy_i

L(ω,b,λ)=21​ωTω+∑i=1m​λi​−ωT∑i=1m​λi​yi​xi​−b∑i=1m​λi​yi​

=

i

=

1

m

λ

i

1

2

ω

T

ω

=\sum_{i=1}{m}\lambda_i-\frac{1}{2}\omegaT\omega

=∑i=1m​λi​−21​ωTω

=

i

=

1

m

λ

i

1

2

(

i

=

1

m

λ

i

y

i

x

i

)

T

(

i

=

1

m

λ

i

y

i

x

i

)

=\sum_{i=1}^{m}\lambda_i - \frac{1}{2}( \sum_{i=1}{m}\lambda_iy_ix_i)T (\sum_{i=1}^{m}\lambda_iy_ix_i)

=∑i=1m​λi​−21​(∑i=1m​λi​yi​xi​)T(∑i=1m​λi​yi​xi​)

=

i

=

1

m

λ

i

1

2

i

=

1

m

j

=

1

m

λ

i

λ

j

y

i

y

j

x

i

T

x

j

=\sum_{i=1}{m}\lambda_i-\frac{1}{2}\sum_{i=1}{m}\sum_{j=1}{m}\lambda_i\lambda_jy_iy_jx_iTx_j

=∑i=1m​λi​−21​∑i=1m​∑j=1m​λi​λj​yi​yj​xiT​xj​

上边已经说到,将这两个表达式带入

L

(

ω

,

b

,

λ

)

L(\omega,b,\lambda)

L(ω,b,λ)后,我们得到的新的表达式中已经没有了

ω

\omega

ω和

b

b

b,只剩下的参数为

λ

\lambda

λ,这个新表达式的限制条件即为我们带入的两个式子,这两个式子表示该表达式关于

ω

\omega

ω和

b

b

b的极小值。

进而求关于

λ

\lambda

λ的极值,到此要求解的函数已经转化为:

i

=

1

m

λ

i

1

2

i

=

1

m

j

=

1

m

λ

i

λ

j

y

i

y

j

x

i

T

x

j

\sum_{i=1}{m}\lambda_i-\frac{1}{2}\sum_{i=1}{m}\sum_{j=1}{m}\lambda_i\lambda_jy_iy_jx_iTx_j

∑i=1m​λi​−21​∑i=1m​∑j=1m​λi​λj​yi​yj​xiT​xj​

要求解的是该式关于

λ

\lambda

λ的极大值,所以也即求解

1

2

i

=

1

m

j

=

1

m

λ

i

λ

j

y

i

y

j

x

i

T

x

j

i

=

1

m

λ

i

\frac{1}{2}\sum_{i=1}{m}\sum_{j=1}{m}\lambda_i\lambda_jy_iy_jx_iTx_j-\sum_{i=1}{m}\lambda_i

21​∑i=1m​∑j=1m​λi​λj​yi​yj​xiT​xj​−∑i=1m​λi​

的极小值。

限制条件为:

s

.

t

.

s.t.

s.t.

i

=

1

m

λ

i

y

i

=

0

\sum_{i=1}^{m}\lambda_iy_i=0

∑i=1m​λi​yi​=0

λ

i

0

\lambda_i≥0

λi​≥0, i=1,2,…,m


2.3 Part3 求解超平面

目标函数:

m

i

n

ω

,

b

min_{\omega,b}

minω,b​

1

2

i

=

1

m

j

=

1

m

λ

i

λ

j

y

i

y

j

x

i

T

x

j

i

=

1

m

λ

i

\frac{1}{2}\sum_{i=1}{m}\sum_{j=1}{m}\lambda_i\lambda_jy_iy_jx_iTx_j-\sum_{i=1}{m}\lambda_i

21​∑i=1m​∑j=1m​λi​λj​yi​yj​xiT​xj​−∑i=1m​λi​

限制条件:

s

.

t

.

s.t.

s.t.

i

=

1

m

λ

i

y

i

=

0

\sum_{i=1}^{m}\lambda_iy_i=0

∑i=1m​λi​yi​=0

λ

i

0

\lambda_i≥0

λi​≥0, i=1,2,…,m

然后接下来,不难发现这是一个二次规划问题,将每个样本点的

x

i

x_i

xi​、

y

i

y_i

yi​替换为样本值数字,然后求目标函数关于

λ

1

\lambda_1

λ1​,

λ

2

\lambda_2

λ2​,… ,

λ

n

\lambda_n

λn​的偏导数,并令其等于0,从而得到m个等式,联立这 m 个等式,以及

i

=

1

m

λ

i

y

i

=

0

\sum_{i=1}^{m}\lambda_iy_i=0

∑i=1m​λi​yi​=0进行求解。理论上即可以求出

λ

1

\lambda_1

λ1​,

λ

2

\lambda_2

λ2​,… ,

λ

n

\lambda_n

λn​的值。

再将这些值代入表达式

ω

=

i

=

1

m

λ

i

y

i

x

i

\omega*=\sum_{i=1}{m}\lambda_iy_ix_i

ω∗=∑i=1m​λi​yi​xi​ 即可求解出

ω

\omega^*

ω∗。(

ω

1

\omega_1

ω1​,

ω

2

\omega_2

ω2​, … ,

ω

n

\omega_n

ωn​)

再由公式

b

=

y

i

=

1

m

λ

i

y

i

x

i

T

x

i

b^* =y-\sum_{i=1}{m}\lambda_iy_ix_iTx_i

b∗=y−∑i=1m​λi​yi​xiT​xi​

代入支持向量,即可求得参数b的值。这是一种解方程的思路。但是这种方法过于繁琐,只是理论上可行。
在解决这个问题方面,先辈们提出了很多高效的算法,比如SMO算法(Sequential Minimal Optimization)。
使用梯度下降法,也可以如愿求得超平面的方程。

最后,根据下式(符号函数sgn)即可对样本数据进行分类:

f

(

x

)

=

s

g

n

(

ω

T

x

b

)

f(x)=sgn(\omega{*T}x+b*)

f(x)=sgn(ω∗Tx+b∗)


3.核函数

到此我们已经完整地实现了线性可分的支持向量机。但是现实中目标数据未必一直是线性可分的。面对这样的情况,我们可以使用 核函数 对原始目标数据进行“升维”操作。
如果原始数据是有限维的,那么一定会存在一个更高维的特征空间使得样本线性可分。

ϕ

(

x

)

\phi(x)

ϕ(x)表示

x

x

x经过映射后的特征向量,则核函数可以表示为

k

(

x

i

,

x

j

)

=

<

ϕ

(

x

i

)

,

ϕ

(

x

j

)

=

ϕ

(

x

i

)

T

ϕ

(

x

j

)

k(x_i,x_j)=<\phi(x_i),\phi(x_j)>=\phi(x_i)^T\phi(x_j)

k(xi​,xj​)=<ϕ(xi​),ϕ(xj​)>=ϕ(xi​)Tϕ(xj​)

核函数的具体形式我们通常是不知道的。
但是 核函数定理表明,只要一个对称函数(

k

(

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

y

i

=

0

\sum_{i=1}^{m}\lambda_iy_i=0

∑i=1m​λi​yi​=0进行求解。理论上即可以求出

λ

1

\lambda_1

λ1​,

λ

2

\lambda_2

λ2​,… ,

λ

n

\lambda_n

λn​的值。

再将这些值代入表达式

ω

=

i

=

1

m

λ

i

y

i

x

i

\omega*=\sum_{i=1}{m}\lambda_iy_ix_i

ω∗=∑i=1m​λi​yi​xi​ 即可求解出

ω

\omega^*

ω∗。(

ω

1

\omega_1

ω1​,

ω

2

\omega_2

ω2​, … ,

ω

n

\omega_n

ωn​)

再由公式

b

=

y

i

=

1

m

λ

i

y

i

x

i

T

x

i

b^* =y-\sum_{i=1}{m}\lambda_iy_ix_iTx_i

b∗=y−∑i=1m​λi​yi​xiT​xi​

代入支持向量,即可求得参数b的值。这是一种解方程的思路。但是这种方法过于繁琐,只是理论上可行。
在解决这个问题方面,先辈们提出了很多高效的算法,比如SMO算法(Sequential Minimal Optimization)。
使用梯度下降法,也可以如愿求得超平面的方程。

最后,根据下式(符号函数sgn)即可对样本数据进行分类:

f

(

x

)

=

s

g

n

(

ω

T

x

b

)

f(x)=sgn(\omega{*T}x+b*)

f(x)=sgn(ω∗Tx+b∗)


3.核函数

到此我们已经完整地实现了线性可分的支持向量机。但是现实中目标数据未必一直是线性可分的。面对这样的情况,我们可以使用 核函数 对原始目标数据进行“升维”操作。
如果原始数据是有限维的,那么一定会存在一个更高维的特征空间使得样本线性可分。

ϕ

(

x

)

\phi(x)

ϕ(x)表示

x

x

x经过映射后的特征向量,则核函数可以表示为

k

(

x

i

,

x

j

)

=

<

ϕ

(

x

i

)

,

ϕ

(

x

j

)

=

ϕ

(

x

i

)

T

ϕ

(

x

j

)

k(x_i,x_j)=<\phi(x_i),\phi(x_j)>=\phi(x_i)^T\phi(x_j)

k(xi​,xj​)=<ϕ(xi​),ϕ(xj​)>=ϕ(xi​)Tϕ(xj​)

核函数的具体形式我们通常是不知道的。
但是 核函数定理表明,只要一个对称函数(

k

(

[外链图片转存中…(img-3p2FZBFE-1715689390705)]
[外链图片转存中…(img-DnuL0G22-1715689390706)]
[外链图片转存中…(img-rbIZ21tm-1715689390706)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

  • 28
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值