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

img
img
img

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

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

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


ʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞ
                 在这里插入图片描述请添加图片描述请添加图片描述请添加图片描述在这里插入图片描述
    ʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞ


大家好,我是侯小啾!在这里插入图片描述

在这里插入图片描述今天分享的内容是支持向量机算法的逻辑,及其python实现。

在这里插入图片描述


1.SVM简介

在深度学习出现之前,支持向量机 被称为表现最好的算法。支持向量机算法适用于一些复杂数据的分类。现在更多用的是深度学习,深度学习的效果大于SVM。但是SVM作为经典算法,还是十分重要,是学习机器学习过程的必修内容。

SVM具有两个特点:1.适合小样本。2.数学逻辑优美。

支持向量机算法分为线性可分的支持向量机非线性可分的支持向量机

线性可分样本集:只要我们可以用一条直线可以把样本集的两类完全分开,就可以将其称为线性可分样本集。反之,称为非线性可分样本集。

支持向量机的超平面具有唯一性。可以分割样本数据的线(或超平面)存在有无数条,但是只有一条是最好的。找到这条线(或超平面),是支持向量机算法要做的。

SVM算法的目标即为:找到使分类间隔最小距离d 最大的超平面。


2. SVM 逻辑推导

2.1 Part1 化简限制条件

给定样本数据集,假设样本特征为X,样本标签为y。
每个样本的特征值可以展示为:

x

1

x_1

x1​,

x

2

x_2

x2​,

x

3

x_3

x3​,…

x

n

x_n

xn​。y 的取值只能有+1和-1.

欲将这些样本分为二类,则需要找到中间的超平面。该超平面表示为:

ω

T

x

b

=

0

\omega^Tx + b = 0

ωTx+b=0

其中

ω

\omega

ω 称为法向量,其决定了超平面的方向。

点到超平面的距离可以表示为

r

i

=

ω

T

x

i

b

ω

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

ri​=∣∣ω∣∣∣ωTxi​+b∣​

这里的

x

i

x_i

xi​指的不再是超平面上的点,而是样本点的向量。

以二维的情况中点与线的关系为例进行说明,假设有一个点 点A(m,n) 和一条线ax+by+c=0,则当点在线上时,直线的等号会刚好成立。当点分布于直线的两侧时,分别可写作am+bn+c>0,am+bn+c<0。多维情况下,也是同理。

再结合点到超平面的距离公式,

r

i

r_i

ri​也可以写为:

r

i

=

ω

T

x

i

b

ω

y

i

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

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

其中,位于超平面

ω

T

x

i

b

=

0

\omega^Tx_i + b = 0

ωTxi​+b=0 左右的标签对应的y_i的正负不要设定反了,只有设定正确该公式才可以保证得到正值。不然的话保证得到的就会是负值。

然后就是要寻找 支持向量。支持向量是距离超平面最近的点的向量,分布在超平面的两边,所以这样的点至少有两个,即支持向量至少有两个。(至少左右各一个)。

我们下一步要做的,即:求

r

i

r_i

ri​关于

x

i

x_i

xi​的极小值,再求该极小值关于

ω

\omega

ω和

b

b

b的极大值。

对该距离公式的分子,

ω

T

x

i

b

\omega^Tx_i + b

ωTxi​+b,即超平面的方程

ω

T

x

b

=

0

\omega^Tx + b = 0

ωTx+b=0 的一部分,考虑到超平立面的方程,就像二维的直线方程一样是可以放缩的(登号两边同乘以一个数),因此可以通过放缩,使得

ω

T

x

i

b

=

1

\omega^Tx_i + b =1

ω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 个等式,以及

img
img

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

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

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

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 个等式,以及

[外链图片转存中…(img-BNn8vydj-1715339243912)]
[外链图片转存中…(img-mbT6EVcL-1715339243912)]

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

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值