【机器学习】SVM基础知识+代码实现

 

1. 基本知识

二分类:通过分离超平面对数据点进行分类,训练分离超平面。

原理:最大化支持向量到分离超平面的距离。支持向量:离分离超平面最近的点。

2. 完全线性可分(硬间隔)

2.1 SVM基本型

分离超平面:w^Tx + b。(训练中更新w和b,或alpha,使得分离超平面分类效果最佳)

某点到分离超平面的函数距离:y_i(w^T\mathbf{x}_i + b)

某点到分离超平面的几何距离:\frac{y_i(w^T\mathbf{x}_i + b)}{||w||}, ||w||为w的L2范数。

点集到分离超平面的几何距离 => 距离超平面最近的点到其的距离:\min_{n}{\frac{y_i(w^T\mathbf{x}_i + b)}{||w||}}

SVM的目标:

arg\max_{w,b}\min_{n}{\frac{y_i(w^T\mathbf{x}_i + b)}{||w||}}

引入约束条件,假设所有点到超平面的距离都大于等于1,其中里分离超平面距离为1的点称为‘支持向量’(即等号成立时的点)。则问题转化为:

arg\max_{w,b}{\frac{1}{||w||}}, \ y(w^T\mathbf{x}+b) \geq 1

arg\min_{w,b}{\frac{1}{2}}||w||^2, \ y(w^T\mathbf{x}+b) \geq 1

2.2 对偶问题

求解:arg\min_{w,b}{\frac{1}{2}}||w||^2, \ y(w^T\mathbf{x}+b) \geq 1,以求得分离超平面,为凸二次规划问题。

引入拉格朗日乘子\alpha_i \geq 0,则拉格朗日函数为:

L(w,b,\alpha) = \frac{1}{2}||w||^2 + \sum_{i=1}^{n}\alpha_i(1-y_i(w^T\mathbf{x}_i + b) ) , \ \alpha \geq 0

L(w,b,\alpha) = \frac{1}{2}||w||^2 - \sum_{i=1}^{n}y_i(w^T\mathbf{x}_i + b) + \sum_{i=1}^n\alpha_i, \ \alpha \geq 0

分别对w,b求偏导,使导数为零:

\\w = \sum_{i=1}^n\alpha_i y_i \mathbf{x}_i \\0 = \sum_{i=1}^n \alpha_iy_i

将w和b由alpha表示,并添加约束条件,最后使得问题转化为:

\\ {\color{DarkBlue} \max_{\alpha} -\frac{1}{2}\sum_{i=1}^n\sum_{j=1}^n\alpha_i\alpha_jy_iy_j(\mathbf{x}_i ^T\mathbf{x}_j) + \sum_{i=1}^n\alpha_i } \\ {\color{DarkBlue} s.t. \ \ \alpha\geq 0, \ \sum_{i=1}^n\alpha_iy_i = 0}

最后得到:

f(\mathbf{x}) = \mathbf{w}^T\mathbf{x}+b = \sum_{i=1}^n\alpha_iy_i\mathbf{x}_i \mathbf{x} + b

上述过程满足KKT条件:

\\KKT: \\ {\color{DarkBlue} \alpha_i \geq 0} \\ {\color{DarkBlue} y_if(\mathbf{x}_i) \geq 1} \\ {\color{DarkBlue} \alpha_i(y_if(\mathbf{x}_i)-1) = 0 }

上述KKT条件说明,当alpha为0时,对应的数据点不参与w的计算,而当alpha不为0时,y_if(\mathbf{x}_i)为1,说明这些点到分离超平面距离为1,为支持向量。这说明:训练完成后,只需要保留支持向量的样本即可。

3. SMO算法

SMO:sequential minimal optimization 序列最小优化。优化求解alpha。

基本思路:固定

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值