支持向量机
1. 概述
- SVM有三宝: 间隔、对偶、核技巧
- 找一个超平面作为决策边界实现二分类
优点:泛化错误率低,计算开销不大,结果易解释。
缺点:对参数调节和核函数的选择敏感,原始分类器不加修改仅适用于处理二类问题。
适用数据类型:数值型和标称型数据。
2. 实现
- 寻找最大间隔
超平面的形式可写为: w T x + b = 0 \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b=0 wTx+b=0
任意点 x x x到超平面的距离为: r = ∣ w T x + b ∣ ∥ w ∥ r=\frac{\left|\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b\right|}{\|\boldsymbol{w}\|} r=∥w∥∣wTx+b∣
距离超平面最近的训练样本就称为“支持向量”,满足条件: ∣ w T x + b ∣ = 1 |{w}^{\mathrm{T}} \boldsymbol{x}+b| = 1 ∣wTx+b∣=1
两个异类的支持向量到超平面的距离和(间隔)为: γ = 2 ∥ w ∥ \gamma=\frac{2}{\|\boldsymbol{w}\|} γ=∥w∥2
找到最大间隔,也就是找到满足约束条件的参数 w w w和 b b b:
min w , b 1 2 ∥ w ∥ 2 \min _{\boldsymbol{w}, b} \frac{1}{2}\|\boldsymbol{w}\|^{2} w,bmin21∥w∥2 s . t . y i ( w T x i + b ) ⩾ 1 , i = 1 , 2 , … , m s.t.\ y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right) \geqslant 1, \quad i=1,2, \ldots, m s.t. yi(wTxi+b)⩾1,i=1,2,…,m
- 分类器求解优化问题
在求解参数 w w w和 b b b的过程中,使用拉格朗日乘子法结合“对偶问题”可巧妙的转换成:
max α ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j \max _{\boldsymbol{\alpha}} \sum_{i=1}^{m} \alpha_{i}-\frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_{i} \alpha_{j} y_{i} y_{j} \boldsymbol{x}_{i}^{\mathrm{T}} \boldsymbol{x}_{j} αmaxi=1∑mαi−21i=1∑mj=1∑mαiαjyiyjxiTxj s.t. ∑ i = 1 m α i y i = 0 α i ⩾ 0 , i = 1 , 2 , … , m \begin{array}{ll} \text { s.t. } & \sum_{i=1}^{m} \alpha_{i} y_{i}=0 \alpha_{i} \geqslant 0, & i=1,2, \ldots, m \end{array} s.t. ∑i=1mαiyi=0αi⩾0,i=1,2,…,m
解出 α \alpha α后,求出 w w w与 b b b即可得到模型,当 x x x为新数据时,代入函数根据结果实现分类: f ( x ) = w T x + b = ∑ i = 1 m α i y i x i T x + b \begin{aligned} f(\boldsymbol{x}) &=\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b =\sum_{i=1}^{m} \alpha_{i} y_{i} \boldsymbol{x}_{i}^{\mathrm{T}} \boldsymbol{x}+b \end{aligned} f(x)=wTx+b=i=1∑mαiyixiTx+b
关于解 α \alpha α,其中有对拉格朗日函数求 w w w和 b b b偏导等于零得出的条件,还有KKT约束 - SMO高效优化算法
是一种用于在线性约束下优化具有多个变量的目标函数的算法,用本书中的例子来描述,大致思路就是每次选择两个合适的 α \alpha α,固定其他的 α \alpha α,根据误差修改选择的 α \alpha α,不断执行直至收敛 - 在复杂数据上应用核函数
- 对于复杂的数据,利用核函数把数据映射到高维空间,在高维空间把它变成线性问题解决,相当于低维空间中解决非线性问题
- 常用的核函数有多项式核、高斯核(RBF核)和拉普拉斯核等,对于文本数据通常采用线性核,不明时可使用高斯核
高 斯 核 : k ( x , y ) = exp ( − ∥ x − y ∥ 2 2 σ 2 ) ( σ 是 带 宽 ) 高斯核: k(x, y)=\exp \left(\frac{-\|x-y\|^{2}}{2 \sigma^{2}}\right)(\sigma是带宽) 高斯核:k(x,y)=exp(2σ2−∥x−y∥2)(σ是带宽)
3. 总结
- 支持向量机是一种分类器,它会产生一个二值决策结果,具有很好的学习能力
- 在本章中了解到的 w T x + b \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b wTx+b将是一个通用的格式,通过核技巧(本人将其描述为升维出击),对机器学习有了一个新的理解