当前位置: 首页 > article >正文

支持向量机(Support Vector Machine)基础知识2

本文目录

  • 前文回顾
  • 四、SVM优化求解:SMO
    • 1、序列最小优化算法 Sequential Minimal Optimization, SMO
    • 2、SMO 动机:坐标上升
    • 3、SVM 坐标上升求解
    • 4、SMO:更新一对变量
    • 5、SMO: 关于两个变量的优化方法
    • 6、SMO: 关于一个变量优化
    • 7、求解 α 2 \alpha_2 α2
    • 8、SMO: 关于一个变量优化
    • 9、SMO: 两个变量的最优解
    • 10、SMO: 第一个变量的选择
    • 11、SMO: 第二个变量的选择
    • 12、SMO: b b b及对偶值 E i E_i Ei
    • 13、SMO 算法
    • 14、SMO 小结
  • 五、SVM回归(SVR)
    • 1、ε不敏感损失函数
    • 2、支持向量回归(Support Vector Regression,SVR)
    • 3、松弛变量
    • 4、拉格朗日函数
    • 5、SVR的对偶问题
    • 6、对偶问题的构建
    • 7、SVR模型
    • 8、SVR的支持向量
  • 六、Sklearn中的SVM的API
    • 1、Scikit-Learn中的SVM实现
    • 2、LinearSVC
    • 3、参数说明
    • 4、LinearSVC的属性
    • 5、LinearSVC的方法
    • 6、SVC
    • 7、SVC的属性
    • 8、SVC的常用方法
    • 9、核函数参数
    • 10、多类别分类
    • 11、得分与概率
    • 12、计算复杂度

前文回顾

四、SVM优化求解:SMO

1、序列最小优化算法 Sequential Minimal Optimization, SMO

  支持向量机(SVM)的原始问题可以通过传统的凸二次规划方法获得全局最优解。然而,这种方法在训练数据集很大时,算法会变得很慢。

  SMO算法由John Platt在1998年提出,是一种高效求解SVM对偶问题的方法。

  对偶问题可以表示为:
max ⁡ ( ∑ i = 1 N α i − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j x i T x j ) s.t.  ∑ i = 1 N α i y i = 0 0 ≤ α i ≤ C , i = 1 , 2 , … , N \begin{align*} \max \left( \sum_{i=1}^{N} \alpha_i - \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_i \alpha_j y_i y_j x_i^T x_j \right) \\ \text{s.t. } \sum_{i=1}^{N} \alpha_i y_i = 0 \\ 0 \leq \alpha_i \leq C, \quad i = 1, 2, \ldots, N \end{align*} max(i=1Nαi21i=1Nj=1NαiαjyiyjxiTxj)s.t. i=1Nαiyi=00αiC,i=1,2,,N

2、SMO 动机:坐标上升

  无约束最优化问题可以表示为:
W ( α 1 , α 2 , … , α N ) = ∑ i = 1 N α i − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j x i T x j W(\alpha_1, \alpha_2, \ldots, \alpha_N) = \sum_{i=1}^{N} \alpha_i - \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_i \alpha_j y_i y_j x_i^T x_j W(α1,α2,,αN)=i=1Nαi21i=1Nj=1NαiαjyiyjxiTxj

  坐标上升优化算法(Coordinate Ascent Optimization Algorithm):
Loop until convergence for  i = 1 , 2 , … , N α i = arg ⁡ max ⁡ α ~ i W ( α 1 , α 2 , α 3 , … , α i − 1 , α ~ i , α i + 1 , … , α N ) \begin{align*} \text{Loop until convergence} \\ \quad \text{for } i = 1, 2, \ldots, N \\ \quad \quad \alpha_i = \arg\max_{\tilde{\alpha}_i} W(\alpha_1, \alpha_2, \alpha_3, \ldots, \alpha_{i-1}, \tilde{\alpha}_i, \alpha_{i+1}, \ldots, \alpha_N) \end{align*} Loop until convergencefor i=1,2,,Nαi=argα~imaxW(α1,α2,α3,,αi1,α~i,αi+1,,αN)

  每次只关于一个参数 α i \alpha_i αi 优化目标函数。坐标梯度上升法:每一步沿着坐标轴方向移动。
在这里插入图片描述

3、SVM 坐标上升求解

  对偶问题:
max ⁡ ( ∑ i = 1 N α i − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j x i T x j ) s.t.  ∑ i = 1 N α i y i = 0 0 ≤ α i ≤ C , i = 1 , 2 , … , N \begin{align*} \max \left( \sum_{i=1}^{N} \alpha_i - \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_i \alpha_j y_i y_j x_i^T x_j \right) \\ \text{s.t. } \sum_{i=1}^{N} \alpha_i y_i = 0 \\ 0 \leq \alpha_i \leq C, \quad i = 1, 2, \ldots, N \end{align*} max(i=1Nαi21i=1Nj=1NαiαjyiyjxiTxj)s.t. i=1Nαiyi=00αiC,i=1,2,,N

  每次固定 N − 1 N-1 N1 个变量 α 2 , … , α N \alpha_2, \ldots, \alpha_N α2,,αN,关于变量 α 1 \alpha_1 α1 优化目标函数。

  每次更新两个变量:
∑ i = 1 N α i y i = 0 \sum_{i=1}^{N} \alpha_i y_i = 0 i=1Nαiyi=0

4、SMO:更新一对变量

  为了保证满足约束条件,每次更新两个变量。这就是SMO算法的核心思想。

  重复直到收敛:
Repeat until convergence : ( 1 ) 选择要更新的一对变量  α i  和  α j ( 启发式选择:选择使目标函数值改变最大的变量 ) ( 2 ) 关于变量  α i  和  α j  优化目标函数  W ( α ) \begin{align*} \text{Repeat until convergence :} \\ \quad (1) \text{选择要更新的一对变量 } \alpha_i \text{ 和 } \alpha_j \\ \quad \quad (\text{启发式选择:选择使目标函数值改变最大的变量}) \\ \quad (2) \text{关于变量 } \alpha_i \text{ 和 } \alpha_j \text{ 优化目标函数 } W(\alpha) \end{align*} Repeat until convergence :(1)选择要更新的一对变量 αi  αj(启发式选择:选择使目标函数值改变最大的变量)(2)关于变量 αi  αj 优化目标函数 W(α)

5、SMO: 关于两个变量的优化方法

  假设 α 1 \alpha_1 α1 α 2 \alpha_2 α2 满足约束条件,固定 α 3 , … , α N \alpha_3, \ldots, \alpha_N α3,,αN,关于变量 α 1 \alpha_1 α1 α 2 \alpha_2 α2 优化目标函数 W ( α 1 , α 2 ) W(\alpha_1, \alpha_2) W(α1,α2)

  目标函数 W ( α 1 , α 2 ) W(\alpha_1, \alpha_2) W(α1,α2) 可以表示为:
W ( α 1 , α 2 ) = 1 2 α 1 2 y 1 2 x 1 T x 1 + 1 2 α 2 2 y 2 2 x 2 T x 2 + α 1 α 2 y 1 y 2 x 1 T x 2 + α 1 y 1 ∑ i = 3 N α i y i x 1 T x i + α 2 y 2 ∑ i = 3 N α i y i x 2 T x i W(\alpha_1, \alpha_2) = \frac{1}{2} \alpha_1^2 y_1^2 x_1^T x_1 + \frac{1}{2} \alpha_2^2 y_2^2 x_2^T x_2 + \alpha_1 \alpha_2 y_1 y_2 x_1^T x_2 + \alpha_1 y_1 \sum_{i=3}^{N} \alpha_i y_i x_1^T x_i + \alpha_2 y_2 \sum_{i=3}^{N} \alpha_i y_i x_2^T x_i W(α1,α2)=21α12y12x1Tx1+21α22y22x2Tx2+α1α2y1y2x1Tx2+α1y1i=3Nαiyix1Txi+α2y2i=3Nαiyix2Txi

  令 K i j = K ( x i , x j ) = x i T x j K_{ij} = K(x_i, x_j) = x_i^T x_j Kij=K(xi,xj)=xiTxj,则有:
W ( α 1 ′ , α 2 ) = 1 2 α 1 2 y 1 2 K 11 + 1 2 α 2 2 y 2 2 K 22 + α 1 α 2 y 1 y 2 K 12 + α 1 y 1 v 1 + α 2 y 2 v 2 − α 1 − α 2 W(\alpha_1', \alpha_2) = \frac{1}{2} \alpha_1^2 y_1^2 K_{11} + \frac{1}{2} \alpha_2^2 y_2^2 K_{22} + \alpha_1 \alpha_2 y_1 y_2 K_{12} + \alpha_1 y_1 v_1 + \alpha_2 y_2 v_2 - \alpha_1 - \alpha_2 W(α1,α2)=21α12y12K11+21α22y22K22+α1α2y1y2K12+α1y1v1+α2y2v2α1α2

  假设 α 1 \alpha_1 α1 α 2 \alpha_2 α2 满足约束条件,固定 α 3 , … , α N \alpha_3, \ldots, \alpha_N α3,,αN,关于变量 α 1 \alpha_1 α1 α 2 \alpha_2 α2 优化目标函数 W ( α 1 , α 2 ) W(\alpha_1, \alpha_2) W(α1,α2)

  根据约束条件:
∑ i = 1 N α i y i = 0 \sum_{i=1}^{N} \alpha_i y_i = 0 i=1Nαiyi=0

  可以得到:
α 1 y 1 + α 2 y 2 = − ∑ i = 3 N α i y i = ζ (常数) \alpha_1 y_1 + \alpha_2 y_2 = - \sum_{i=3}^{N} \alpha_i y_i = \zeta \quad \text{(常数)} α1y1+α2y2=i=3Nαiyi=ζ(常数)

  因此:
α 1 = ζ y 1 − α 2 y 1 y 2 (两边同乘以  y 1 ,且  y 1 2 = 1 ) \alpha_1 = \zeta y_1 - \alpha_2 y_1 y_2 \quad \text{(两边同乘以 } y_1 \text{,且 } y_1^2 = 1\text{)} α1=ζy1α2y1y2(两边同乘以 y1,且 y12=1)

  有界条件:
L ≤ α 2 ≤ H L \leq \alpha_2 \leq H Lα2H
在这里插入图片描述

6、SMO: 关于一个变量优化

  将 α 1 \alpha_1 α1 写成关于 α 2 \alpha_2 α2 的等式:
α 1 = ζ y 1 − α 2 y 1 y 2 \alpha_1 = \zeta y_1 - \alpha_2 y_1 y_2 α1=ζy1α2y1y2

  目标函数 W ( α ) W(\alpha) W(α)
W ( α 1 , α 2 , … , α N ) = W ( ζ y 1 − α 2 y 1 y 2 , α 2 ) W(\alpha_1, \alpha_2, \ldots, \alpha_N) = W(\zeta y_1 - \alpha_2 y_1 y_2, \alpha_2) W(α1,α2,,αN)=W(ζy1α2y1y2,α2)

  关于变量 α 2 \alpha_2 α2 的二次函数:
W ( α 2 ) = 1 2 ( ζ − α 2 y 2 ) 2 K 11 + 1 2 α 2 2 K 22 + y 2 ( ζ − α 2 y 2 ) α 2 K 12 + ( ζ − α 2 y 2 ) v 1 + α 2 y 2 v 2 − ζ y 1 + α 2 y 1 y 2 − α 2 W(\alpha_2) = \frac{1}{2} (\zeta - \alpha_2 y_2)^2 K_{11} + \frac{1}{2} \alpha_2^2 K_{22} + y_2 (\zeta - \alpha_2 y_2) \alpha_2 K_{12} + (\zeta - \alpha_2 y_2) v_1 + \alpha_2 y_2 v_2 - \zeta y_1 + \alpha_2 y_1 y_2 - \alpha_2 W(α2)=21(ζα2y2)2K11+21α22K22+y2(ζα2y2)α2K12+(ζα2y2)v1+α2y2v2ζy1+α2y1y2α2

  不考虑 α 2 \alpha_2 α2 的取值范围,可求全局最优解:
α 2 new = α 2 old + y 2 ( E 1 − E 2 ) K 11 + K 22 − 2 K 12 \alpha_2^{\text{new}} = \alpha_2^{\text{old}} + \frac{y_2 (E_1 - E_2)}{K_{11} + K_{22} - 2 K_{12}} α2new=α2old+K11+K222K12y2(E1E2)

7、求解 α 2 \alpha_2 α2

  目标函数 W ( α 1 , α 2 ) W(\alpha_1, \alpha_2) W(α1,α2)
W ( α 1 , α 2 ) = 1 2 K 11 α 1 2 + 1 2 K 22 α 2 2 + α 1 α 2 y 1 y 2 K 12 + α 1 y 1 v 1 + α 2 y 2 v 2 − α 1 − α 2 + 常数 W(\alpha_1, \alpha_2) = \frac{1}{2} K_{11} \alpha_1^2 + \frac{1}{2} K_{22} \alpha_2^2 + \alpha_1 \alpha_2 y_1 y_2 K_{12} + \alpha_1 y_1 v_1 + \alpha_2 y_2 v_2 - \alpha_1 - \alpha_2 + \text{常数} W(α1,α2)=21K11α12+21K22α22+α1α2y1y2K12+α1y1v1+α2y2v2α1α2+常数

  约束条件:
α 1 y 1 + α 2 y 2 = − ∑ i = 3 N α i y i = ζ , 0 ≤ α i ≤ C , i = 1 , 2 \alpha_1 y_1 + \alpha_2 y_2 = - \sum_{i=3}^{N} \alpha_i y_i = \zeta, \quad 0 \leq \alpha_i \leq C, i = 1, 2 α1y1+α2y2=i=3Nαiyi=ζ,0αiC,i=1,2

  其中:
v 1 = ∑ i = 3 N α i y i K 1 i , v 2 = ∑ i = 3 N α i y i K 2 i , K i j = K ( x i , x j ) v_1 = \sum_{i=3}^{N} \alpha_i y_i K_{1i}, \quad v_2 = \sum_{i=3}^{N} \alpha_i y_i K_{2i}, \quad K_{ij} = K(x_i, x_j) v1=i=3NαiyiK1i,v2=i=3NαiyiK2i,Kij=K(xi,xj)

  由 α 1 y 1 + α 2 y 2 = − ∑ i = 3 N α i y i = ζ \alpha_1 y_1 + \alpha_2 y_2 = - \sum_{i=3}^{N} \alpha_i y_i = \zeta α1y1+α2y2=i=3Nαiyi=ζ 得, α 1 = ζ y 1 − α 2 y 1 y 2 \alpha_1 = \zeta y_1 - \alpha_2 y_1 y_2 α1=ζy1α2y1y2

  目标函数 W ( α 2 ) W(\alpha_2) W(α2)
W ( α 2 ) = 1 2 ( ζ − α 2 y 2 ) 2 K 11 + 1 2 α 2 2 K 22 + y 2 ( ζ − α 2 y 2 ) α 2 K 12 + ( ζ − α 2 y 2 ) v 1 + α 2 y 2 v 2 − ζ y 1 + α 2 y 1 y 2 − α 2 + 常数 W(\alpha_2) = \frac{1}{2} (\zeta - \alpha_2 y_2)^2 K_{11} + \frac{1}{2} \alpha_2^2 K_{22} + y_2 (\zeta - \alpha_2 y_2) \alpha_2 K_{12} + (\zeta - \alpha_2 y_2) v_1 + \alpha_2 y_2 v_2 - \zeta y_1 + \alpha_2 y_1 y_2 - \alpha_2 + \text{常数} W(α2)=21(ζα2y2)2K11+21α22K22+y2(ζα2y2)α2K12+(ζα2y2)v1+α2y2v2ζy1+α2y1y2α2+常数

  对 α 2 \alpha_2 α2 求导:
∂ W ( α 2 ) ∂ α 2 = ( K 11 + K 22 − 2 K 12 ) α 2 − y 2 ( ζ ( K 11 − K 12 ) + v 1 − v 2 − y 1 + y 2 ) = 0 \frac{\partial W(\alpha_2)}{\partial \alpha_2} = (K_{11} + K_{22} - 2 K_{12}) \alpha_2 - y_2 (\zeta (K_{11} - K_{12}) + v_1 - v_2 - y_1 + y_2) = 0 α2W(α2)=(K11+K222K12)α2y2(ζ(K11K12)+v1v2y1+y2)=0

  求解 α 2 \alpha_2 α2
α 2 new = α 2 old + y 2 ( E 1 − E 2 ) K 11 + K 22 − 2 K 12 \alpha_2^{\text{new}} = \alpha_2^{\text{old}} + \frac{y_2 (E_1 - E_2)}{K_{11} + K_{22} - 2 K_{12}} α2new=α2old+K11+K222K12y2(E1E2)
  SMO高效:更新 α i \alpha_i αi α j \alpha_j αj 的方法计算高效!

8、SMO: 关于一个变量优化

  考虑约束条件:

α 2 new = { H α 2 new, unclipped > H α 2 new, unclipped L ≤ α 2 new, unclipped ≤ H L α 2 new, unclipped < L \alpha_2^{\text{new}} = \begin{cases} H & \alpha_2^{\text{new, unclipped}} > H \\ \alpha_2^{\text{new, unclipped}} & L \leq \alpha_2^{\text{new, unclipped}} \leq H \\ L & \alpha_2^{\text{new, unclipped}} < L \end{cases} α2new= Hα2new, unclippedLα2new, unclipped>HLα2new, unclippedHα2new, unclipped<L

L = max ⁡ ( 0 , α 2 old − α 1 old ) L = \max(0, \alpha_2^{\text{old}} - \alpha_1^{\text{old}}) L=max(0,α2oldα1old)

H = min ⁡ ( C , C + α 2 old − α 1 old ) H = \min(C, C + \alpha_2^{\text{old}} - \alpha_1^{\text{old}}) H=min(C,C+α2oldα1old)
在这里插入图片描述

在这里插入图片描述

  图中展示了不同的 α 1 \alpha_1 α1 α 2 \alpha_2 α2的取值范围,以及对应的约束条件。 α 1 \alpha_1 α1 α 2 \alpha_2 α2的取值受到 C C C(惩罚参数)和 ζ \zeta ζ(阈值)的限制。


9、SMO: 两个变量的最优解

  得到 α 2 new \alpha_2^{\text{new}} α2new后,根据 α 1 = ζ y 1 − α 2 y 1 y 2 \alpha_1 = \zeta y_1 - \alpha_2 y_1 y_2 α1=ζy1α2y1y2可得:

α 1 old y 1 + α 2 old y 2 = α 1 new y 1 + α 2 new y 2 \alpha_1^{\text{old}} y_1 + \alpha_2^{\text{old}} y_2 = \alpha_1^{\text{new}} y_1 + \alpha_2^{\text{new}} y_2 α1oldy1+α2oldy2=α1newy1+α2newy2

α 1 new = α 1 old + y 1 y 2 ( α 2 old − α 2 new ) \alpha_1^{\text{new}} = \alpha_1^{\text{old}} + y_1 y_2 (\alpha_2^{\text{old}} - \alpha_2^{\text{new}}) α1new=α1old+y1y2(α2oldα2new)

  这里展示了如何通过已知的 α 2 new \alpha_2^{\text{new}} α2new来计算 α 1 new \alpha_1^{\text{new}} α1new


10、SMO: 第一个变量的选择

  主要思想:从训练样本中选择违背KKT条件的样本,进而确定 α i \alpha_i αi

  KKT条件:

{ α i = 0 ⇒ y i ( w T x i + b ) ≥ 1 0 < α i < C ⇒ y i ( w T x i + b ) = 1 α i = C ⇒ y i ( w T x i + b ) ≤ 1 \begin{cases} \alpha_i = 0 & \Rightarrow y_i(w^T x_i + b) \geq 1 \\ 0 < \alpha_i < C & \Rightarrow y_i(w^T x_i + b) = 1 \\ \alpha_i = C & \Rightarrow y_i(w^T x_i + b) \leq 1 \end{cases} αi=00<αi<Cαi=Cyi(wTxi+b)1yi(wTxi+b)=1yi(wTxi+b)1

  首先选择违反 0 < α i < C ⇒ y i ( w T x i + b ) = 1 0 < \alpha_i < C \Rightarrow y_i(w^T x_i + b) = 1 0<αi<Cyi(wTxi+b)=1的点(决策边界上的支持向量)。

  如果上述支持向量都满足KKT条件,检查其他所有训练样本。


11、SMO: 第二个变量的选择

  选 α 2 \alpha_2 α2的标准?

α 2 new, unclipped = α 2 old + y 2 ( E 1 − E 2 ) η \alpha_2^{\text{new, unclipped}} = \alpha_2^{\text{old}} + \frac{y_2 (E_1 - E_2)}{\eta} α2new, unclipped=α2old+ηy2(E1E2)

  其中 η = K 11 + K 22 − 2 K 12 \eta = K_{11} + K_{22} - 2K_{12} η=K11+K222K12

  选择使 ∣ E 1 − E 2 ∣ |E_1 - E_2| E1E2最大的 α 2 \alpha_2 α2

   α 1 \alpha_1 α1固定, E 1 E_1 E1固定。

  • E 1 > 0 ⇒ E_1 > 0 \Rightarrow E1>0 选最小的 E i E_i Ei作为 E 2 E_2 E2
  • E 1 < 0 ⇒ E_1 < 0 \Rightarrow E1<0 选最大的 E i E_i Ei作为 E 2 E_2 E2

   E i E_i Ei很关键,怎么样使得算法高效?保存所有的 E i E_i Ei

12、SMO: b b b及对偶值 E i E_i Ei

  更新完变量后,更新 b b b

  • 如果 α 1 new > 0 \alpha_1^{\text{new}} > 0 α1new>0,根据KKT条件: y 1 f ( x 1 ) = y 1 ( ∑ i = 1 N α i y i K ( x i , x 1 ) + b ) = 1 y_1 f(x_1) = y_1 \left( \sum_{i=1}^{N} \alpha_i y_i K(x_i, x_1) + b \right) = 1 y1f(x1)=y1(i=1NαiyiK(xi,x1)+b)=1

b 1 new = y 1 − ∑ i = 3 N α i y i K i 1 − α 1 new y 1 K 11 − α 2 new y 2 K 21 b_1^{\text{new}} = y_1 - \sum_{i=3}^{N} \alpha_i y_i K_{i1} - \alpha_1^{\text{new}} y_1 K_{11} - \alpha_2^{\text{new}} y_2 K_{21} b1new=y1i=3NαiyiKi1α1newy1K11α2newy2K21

  引入: E 1 = f ( x 1 ) − y 1 = ∑ i = 3 N α i y i K i 1 + α 1 old y 1 K 11 + α 2 old y 2 K 21 + b old E_1 = f(x_1) - y_1 = \sum_{i=3}^{N} \alpha_i y_i K_{i1} + \alpha_1^{\text{old}} y_1 K_{11} + \alpha_2^{\text{old}} y_2 K_{21} + b^{\text{old}} E1=f(x1)y1=i=3NαiyiKi1+α1oldy1K11+α2oldy2K21+bold

  得到:

{ b 1 new = − E 1 − y 1 K 11 ( α 1 new − α 1 old ) − y 2 K 21 ( α 2 new − α 2 old ) + b old b 2 new = − E 2 − y 1 K 12 ( α 1 new − α 1 old ) − y 2 K 22 ( α 2 new − α 2 old ) + b old \begin{cases} b_1^{\text{new}} = -E_1 - y_1 K_{11} (\alpha_1^{\text{new}} - \alpha_1^{\text{old}}) - y_2 K_{21} (\alpha_2^{\text{new}} - \alpha_2^{\text{old}}) + b^{\text{old}} \\ b_2^{\text{new}} = -E_2 - y_1 K_{12} (\alpha_1^{\text{new}} - \alpha_1^{\text{old}}) - y_2 K_{22} (\alpha_2^{\text{new}} - \alpha_2^{\text{old}}) + b^{\text{old}} \end{cases} {b1new=E1y1K11(α1newα1old)y2K21(α2newα2old)+boldb2new=E2y1K12(α1newα1old)y2K22(α2newα2old)+bold

  如果 0 < α 1 new < C 0 < \alpha_1^{\text{new}} < C 0<α1new<C 0 < α 2 new < C 0 < \alpha_2^{\text{new}} < C 0<α2new<C,则 b new = b 1 new = b 2 new b^{\text{new}} = b_1^{\text{new}} = b_2^{\text{new}} bnew=b1new=b2new

  如果 α 1 new \alpha_1^{\text{new}} α1new α 2 new \alpha_2^{\text{new}} α2new同时是0或 C C C ∀ b ∈ [ min ⁡ { b 1 new , b 2 new } , max ⁡ { b 1 new , b 2 new } ] \forall b \in [\min\{b_1^{\text{new}}, b_2^{\text{new}}\}, \max\{b_1^{\text{new}}, b_2^{\text{new}}\}] b[min{b1new,b2new},max{b1new,b2new}]都满足KKT条件,取

b new = b 1 new + b 2 new 2 b^{\text{new}} = \frac{b_1^{\text{new}} + b_2^{\text{new}}}{2} bnew=2b1new+b2new

  更新 E i = ∑ j y j α j K ( x i , x j ) + b new − y i E_i = \sum_{j} y_j \alpha_j K(x_i, x_j) + b^{\text{new}} - y_i Ei=jyjαjK(xi,xj)+bnewyi


13、SMO 算法

  1. 初始化: α ( 0 ) = 0 \alpha^{(0)} = 0 α(0)=0,并计算偏移量 b ( 0 ) b^{(0)} b(0)

  2. 初始化误差项 E i E_i Ei

  3. 选择待优化的变量: α 1 \alpha_1 α1 α 2 \alpha_2 α2求解优化问题的解

α 2 new, unclipped = α 2 old + y 2 ( E 1 − E 2 ) η \alpha_2^{\text{new, unclipped}} = \alpha_2^{\text{old}} + \frac{y_2 (E_1 - E_2)}{\eta} α2new, unclipped=α2old+ηy2(E1E2)

α 2 new = { H α 2 new, unclipped > H α 2 new, unclipped L ≤ α 2 new, unclipped ≤ H L α 2 new, unclipped < L \alpha_2^{\text{new}} = \begin{cases} H & \alpha_2^{\text{new, unclipped}} > H \\ \alpha_2^{\text{new, unclipped}} & L \leq \alpha_2^{\text{new, unclipped}} \leq H \\ L & \alpha_2^{\text{new, unclipped}} < L \end{cases} α2new= Hα2new, unclippedLα2new, unclipped>HLα2new, unclippedHα2new, unclipped<L

η = K 11 + K 22 − 2 K 12 \eta = K_{11} + K_{22} - 2K_{12} η=K11+K222K12

α 1 ( t + 1 ) = α 1 ( t ) + y 1 y 2 ( α 2 ( t ) − α 2 ( t + 1 ) ) \alpha_1^{(t+1)} = \alpha_1^{(t)} + y_1 y_2 (\alpha_2^{(t)} - \alpha_2^{(t+1)}) α1(t+1)=α1(t)+y1y2(α2(t)α2(t+1))

  4. 更新 α \alpha α α ( t + 1 ) \alpha^{(t+1)} α(t+1),更新 E i E_i Ei,计算 b ( t + 1 ) b^{(t+1)} b(t+1)

  5. 如果达到终止条件,则停止算法;否则 t = t + 1 t = t + 1 t=t+1, 转到第 ③ 步

  终止条件:满足KKT条件或误差项均小于 ε \varepsilon ε


14、SMO 小结

  - 启发式、迭代式算法。
  - 解满足KKT条件时,得到最优解;否则选择两个变量来优化。
  - 最优化问题转换为关于两个选定变量的QP问题,该问题通常有闭式解,计算高效,收敛快。
  - 变量的选择方法:

  • 第一个变量:违背KKT条件程度最大的变量
  • 第二个变量:使目标函数值减小最快的变量
      - 把一个最优化问题不换转化为若干个子问题,通过对子问题的求解得到原问题的解。

五、SVM回归(SVR)

1、ε不敏感损失函数

  在之前的线性回归模型中,只有当真实值 y y y与预测值 y ^ \hat{y} y^完全相等时,我们才认为损失为0(L2损失、L1损失、Huber损失)。

  在支持向量回归中,我们能容忍当真实值 y y y与预测值 y ^ \hat{y} y^ ϵ \epsilon ϵ的偏差,即当 y y y y ^ \hat{y} y^之间的差异大于 ϵ \epsilon ϵ时才计算损失,称为 ϵ \epsilon ϵ不敏感损失( ϵ \epsilon ϵ insensitive loss)。

L ϵ ( y , y ^ ) = { 0 if  ∣ y − y ^ ∣ ≤ ϵ ∣ y − y ^ ∣ − ϵ otherwise L_{\epsilon}(y, \hat{y}) = \begin{cases} 0 & \text{if } |y - \hat{y}| \leq \epsilon \\ |y - \hat{y}| - \epsilon & \text{otherwise} \end{cases} Lϵ(y,y^)={0yy^ϵif yy^ϵotherwise

  • 不惩罚小的损失
  • 误差大于 ϵ \epsilon ϵ时,对损失的影响是线性的,对噪声鲁棒
    在这里插入图片描述

2、支持向量回归(Support Vector Regression,SVR)

  假设回归函数为线性模型: f ( x ) = w T x + b f(x) = w^T x + b f(x)=wTx+b

  同SVM分类类似,SVR的目标函数为

min ⁡ w , b 1 2 ∥ w ∥ 2 2 \min_{w, b} \frac{1}{2} \|w\|_2^2 w,bmin21w22

s.t.  ∣ y i − ( w T x i + b ) ∣ ≤ ϵ , i = 1 , 2 , . . . , N \text{s.t. } |y_i - (w^T x_i + b)| \leq \epsilon, \quad i = 1, 2, ..., N s.t. yi(wTxi+b)ϵ,i=1,2,...,N
在这里插入图片描述

3、松弛变量

  类似SVM分类模型,加入松弛变量 ξ i ≥ 0 \xi_i \geq 0 ξi0,用于表示每个点在 ϵ \epsilon ϵ管道外的程度。

  由于用的是绝对值,实际上是两个不等式,也就是说两边都需要松弛变量: ξ i + , ξ i − \xi_i^+, \xi_i^- ξi+,ξi

  则SVR模型的目标函数变为

min ⁡ w , b 1 2 ∥ w ∥ 2 2 \min_{w, b} \frac{1}{2} \|w\|_2^2 w,bmin21w22

s.t.  − ϵ − ξ i − ≤ y i − ( w T x i + b ) ≤ ϵ + ξ i + , i = 1 , 2 , . . . , N \text{s.t. } -\epsilon - \xi_i^- \leq y_i - (w^T x_i + b) \leq \epsilon + \xi_i^+, \quad i = 1, 2, ..., N s.t. ϵξiyi(wTxi+b)ϵ+ξi+,i=1,2,...,N

ξ i + ≥ 0 , ξ i − ≥ 0 , i = 1 , 2 , . . . , N \xi_i^+ \geq 0, \quad \xi_i^- \geq 0, \quad i = 1, 2, ..., N ξi+0,ξi0,i=1,2,...,N
在这里插入图片描述

4、拉格朗日函数

与支持向量机(SVM)类似,支持向量回归(SVR)的拉格朗日函数定义如下:

   L ( w , b , α v , α c , ξ v , ξ c , μ v , μ c ) = 1 2 ∥ w ∥ 2 2 + C ∑ i = 1 N ( ξ i v + ξ i c ) L(w, b, \alpha^v, \alpha^c, \xi^v, \xi^c, \mu^v, \mu^c) = \frac{1}{2} \|w\|_2^2 + C \sum_{i=1}^{N} (\xi_i^v + \xi_i^c) L(w,b,αv,αc,ξv,ξc,μv,μc)=21w22+Ci=1N(ξiv+ξic)

  目标是最小化以下表达式:
min ⁡ w , b 1 2 ∥ w ∥ 2 2 \min_{w, b} \frac{1}{2} \|w\|_2^2 w,bmin21w22

  同时满足以下约束条件:
s . t .   − ϵ − ξ i v ≤ y i − ( w T x i + b ) ≤ ϵ + ξ i c ξ i c ≥ 0 , ξ i v ≥ 0 \begin{align*} s.t.\ -\epsilon - \xi_i^v &\leq y_i - (w^T x_i + b) \leq \epsilon + \xi_i^c \\ \xi_i^c &\geq 0, \quad \xi_i^v \geq 0 \end{align*} s.t. ϵξivξicyi(wTxi+b)ϵ+ξic0,ξiv0

  拉格朗日乘子 α i v \alpha_i^v αiv α i c \alpha_i^c αic以及 μ i v \mu_i^v μiv μ i c \mu_i^c μic的引入,使得问题可以转化为对偶问题求解。对偶问题的目标函数为:
+ ∑ i = 1 N α i v ( − ϵ − ξ i v − y i + w ⊤ x i + b ) + ∑ i = 1 N α i c ( y i − w ⊤ x i − b − ϵ − ξ i c ) − ∑ i = 1 N μ i v ξ i v − ∑ i = 1 m μ i c ξ i c \begin{align*} &+ \sum_{i=1}^{N} \alpha_i^v \left( -\epsilon - \xi_i^v - y_i + \mathbf{w}^\top \mathbf{x}_i + b \right) \\ &+ \sum_{i=1}^{N} \alpha_i^c \left( y_i - \mathbf{w}^\top \mathbf{x}_i - b - \epsilon - \xi_i^c \right) \\ &- \sum_{i=1}^{N} \mu_i^v \xi_i^v - \sum_{i=1}^{m} \mu_i^c \xi_i^c \end{align*} +i=1Nαiv(ϵξivyi+wxi+b)+i=1Nαic(yiwxibϵξic)i=1Nμivξivi=1mμicξic

5、SVR的对偶问题

  拉格朗日函数 L ( w , b , α v , α c , ξ v , ξ c , μ v , μ c ) L(w, b, \alpha^v, \alpha^c, \xi^v, \xi^c, \mu^v, \mu^c) L(w,b,αv,αc,ξv,ξc,μv,μc) w , b , ξ i ∧ , ξ i ∨ w, b, \xi_i^\wedge, \xi_i^\vee w,b,ξi,ξi的一阶导数如下:

   ∂ L ( w , b , α v , α c , ξ v , ξ c , μ v , μ c ) ∂ w = 0 ⇒ w = ∑ i = 1 N ( α i ∧ − α i ∨ ) x i \frac{\partial L(w, b, \alpha^v, \alpha^c, \xi^v, \xi^c, \mu^v, \mu^c)}{\partial \mathbf{w}} = 0 \Rightarrow \mathbf{w} = \sum_{i=1}^{N} (\alpha_i^\wedge - \alpha_i^\vee) \mathbf{x}_i wL(w,b,αv,αc,ξv,ξc,μv,μc)=0w=i=1N(αiαi)xi

   ∂ L ( w , b , α v , α c , ξ v , ξ c , μ v , μ c ) ∂ b = 0 ⇒ ∑ i = 1 N ( α i ∧ − α i ∨ ) = 0 \frac{\partial L(w, b, \alpha^v, \alpha^c, \xi^v, \xi^c, \mu^v, \mu^c)}{\partial b} = 0 \Rightarrow \sum_{i=1}^{N} (\alpha_i^\wedge - \alpha_i^\vee) = 0 bL(w,b,αv,αc,ξv,ξc,μv,μc)=0i=1N(αiαi)=0

   ∂ L ( w , b , α v , α c , ξ v , ξ c , μ v , μ c ) ∂ ξ i ∧ = 0 ⇒ C − α i ∧ + μ i ∧ \frac{\partial L(w, b, \alpha^v, \alpha^c, \xi^v, \xi^c, \mu^v, \mu^c)}{\partial \xi_i^\wedge} = 0 \Rightarrow C - \alpha_i^\wedge + \mu_i^\wedge ξiL(w,b,αv,αc,ξv,ξc,μv,μc)=0Cαi+μi

   ∂ L ( w , b , α v , α c , ξ v , ξ c , μ v , μ c ) ∂ ξ i ∨ = 0 ⇒ C − α i ∨ + μ i ∨ \frac{\partial L(w, b, \alpha^v, \alpha^c, \xi^v, \xi^c, \mu^v, \mu^c)}{\partial \xi_i^\vee} = 0 \Rightarrow C - \alpha_i^\vee + \mu_i^\vee ξiL(w,b,αv,αc,ξv,ξc,μv,μc)=0Cαi+μi

6、对偶问题的构建

  将上述结论代入拉格朗日函数 L ( w , b , α v , α c , ξ v , ξ c , μ v , μ c ) L(w, b, \alpha^v, \alpha^c, \xi^v, \xi^c, \mu^v, \mu^c) L(w,b,αv,αc,ξv,ξc,μv,μc),得到对偶问题:

   max ⁡ α v , α c ( − ∑ i = 1 N ( ( ϵ − y i ) α i ∧ + ( ϵ + y i ) α i ∨ ) − ∑ i = 1 N 1 2 ( α i ∧ − α i ∨ ) ( α j ∧ − α j ∨ ) x i ⊤ x j ) \max_{\alpha^v, \alpha^c} \left( -\sum_{i=1}^{N} ((\epsilon - y_i) \alpha_i^\wedge + (\epsilon + y_i) \alpha_i^\vee) - \sum_{i=1}^{N} \frac{1}{2} (\alpha_i^\wedge - \alpha_i^\vee)(\alpha_j^\wedge - \alpha_j^\vee) \mathbf{x}_i^\top \mathbf{x}_j \right) αv,αcmax(i=1N((ϵyi)αi+(ϵ+yi)αi)i=1N21(αiαi)(αjαj)xixj)

  约束条件为:
∑ i = 1 N ( α i ∧ − α i ∨ ) = 0 0 ≤ α i ∧ ≤ C , i = 1 , 2 , . . . , N 0 ≤ α i ∨ ≤ C , i = 1 , 2 , . . . , N \begin{align*} \sum_{i=1}^{N} (\alpha_i^\wedge - \alpha_i^\vee) &= 0 \\ 0 \leq \alpha_i^\wedge &\leq C, \quad i = 1, 2, ..., N \\ 0 \leq \alpha_i^\vee &\leq C, \quad i = 1, 2, ..., N \end{align*} i=1N(αiαi)0αi0αi=0C,i=1,2,...,NC,i=1,2,...,N

  去掉负号,将上述目标函数中的 max ⁡ \max max换成 min ⁡ \min min,得到等价问题:

   min ⁡ α v , α c ( ∑ i = 1 N ( ( ϵ − y i ) α i ∧ + ( ϵ + y i ) α i ∨ ) + ∑ i = 1 N 1 2 ( α i ∧ − α i ∨ ) ( α j ∧ − α j ∨ ) x i ⊤ x j ) \min_{\alpha^v, \alpha^c} \left( \sum_{i=1}^{N} ((\epsilon - y_i) \alpha_i^\wedge + (\epsilon + y_i) \alpha_i^\vee) + \sum_{i=1}^{N} \frac{1}{2} (\alpha_i^\wedge - \alpha_i^\vee)(\alpha_j^\wedge - \alpha_j^\vee) \mathbf{x}_i^\top \mathbf{x}_j \right) αv,αcmin(i=1N((ϵyi)αi+(ϵ+yi)αi)+i=1N21(αiαi)(αjαj)xixj)

7、SVR模型

  求得 α \alpha α的最优值后,可计算 w , b \mathbf{w}, b w,b,从而得到SVR模型:

   f ( x ) = w ⊤ x + b = ∑ i = 1 N ( α i ∧ − α i ∨ ) x i ⊤ x + b f(\mathbf{x}) = \mathbf{w}^\top \mathbf{x} + b = \sum_{i=1}^{N} (\alpha_i^\wedge - \alpha_i^\vee) \mathbf{x}_i^\top \mathbf{x} + b f(x)=wx+b=i=1N(αiαi)xix+b

   = ∑ i = 1 N ( α i ∧ − α i ∨ ) ⟨ x i , x ⟩ + b = \sum_{i=1}^{N} (\alpha_i^\wedge - \alpha_i^\vee) \langle \mathbf{x}_i, \mathbf{x} \rangle + b =i=1N(αiαi)xi,x+b

   x \mathbf{x} x与训练数据的点积 ⟨ x i , x ⟩ \langle \mathbf{x}_i, \mathbf{x} \rangle xi,x换成核函数 k ( x i , x ) k(\mathbf{x}_i, \mathbf{x}) k(xi,x),得到核化SVR模型:

   f ( x ) = ∑ i = 1 N ( α i ∧ − α i ∨ ) k ( x i , x ) + b f(\mathbf{x}) = \sum_{i=1}^{N} (\alpha_i^\wedge - \alpha_i^\vee) k(\mathbf{x}_i, \mathbf{x}) + b f(x)=i=1N(αiαi)k(xi,x)+b

8、SVR的支持向量

  KKT条件之二为:

   α i ∨ ( ϵ + ξ i ∨ + y i − ( w ⊤ x i + b ) ) = 0 \alpha_i^\vee \left( \epsilon + \xi_i^\vee + y_i - (\mathbf{w}^\top \mathbf{x}_i + b) \right) = 0 αi(ϵ+ξi+yi(wxi+b))=0

   α i ∧ ( ϵ + ξ i ∧ − y i + ( w ⊤ x i + b ) ) = 0 \alpha_i^\wedge \left( \epsilon + \xi_i^\wedge - y_i + (\mathbf{w}^\top \mathbf{x}_i + b) \right) = 0 αi(ϵ+ξiyi+(wxi+b))=0

  支持向量:仅当样本 ( x i , y i ) (\mathbf{x}_i, y_i) (xi,yi)落在 ϵ \epsilon ϵ间隔中, α i ∨ \alpha_i^\vee αi α i ∧ \alpha_i^\wedge αi才取非0值。
在这里插入图片描述

六、Sklearn中的SVM的API

1、Scikit-Learn中的SVM实现

  sklearn.svm模块提供支持向量机算法,可用于分类、回归和异常值检测。

  分类实现有三种方式:

  • LinearSVC:基于liblinear实现线性SVM,比基于libsvm实现的线性SVC / NuSVC更快,同时可采用更多正则选择(L1/L2)和损失函数选择。
    • L1正则可以得到特征系数稀疏的效果。
    • 适用于样本数更多的情况。
  • SVC和NuSVC:类似,都是基于libsvm实现的C-SVM,二者在参数方面有细微不同(NuSVC有参数 ν \nu ν控制训练误差的上限和支持向量的下限)。
  • SGDClassifier(不在sklearn.svm模块,在sklearn.linear_model)实现了基于随机梯度下的线性SVM分类。

  回归实现方式同分类类似。

  SVM还支持非监督的异常值检测:OneClassSVM


2、LinearSVC

class sklearn.svm.LinearSVC(penalty='l2', loss='squared_hinge', dual=True, tol=0.0001, C=1.0,
                          multi_class='ovr', fit_intercept=True, intercept_scaling=1, class_weight=None, verbose=0,
                          random_state=None, max_iter=1000)

  支持两种正则:L2正则和L1正则,正则参数为:penaltyC
  支持两种损失函数:标准的合页损失hinge和合页损失的平方squared_hinge
  支持不同类别的样本权重设置:class_weight


3、参数说明

参数说明备注
penalty惩罚函数 / 正则函数,支持L2正则和L1正则,默认:L2
loss损失函数,支持标准的合页损失hinge和合页损失的平方squared_hinge
dual原问题(primal)还是对偶问题求解。默认:True当样本数 n _ s a m p l e s > n\_samples > n_samples>特征数目 n _ f e a t u r e s n\_features n_features时,原问题求解更简单。
tol迭代终止判据的误差范围。默认:1e-4
C损失函数项的系数。默认:1
multi_class多类分类处理策略,可为ovrcrammer_singerovr为1对多,将多类分类转化为多个两类分类问题,crammer_singer是一起优化多个分类的目标函数。缺省:ovrcrammer_singer理论上看起来很好,实际上很少用,因为分类效果没有更好但计算量大。
fit_intercept是否在决策函数中加入截距项。缺省:True如果数据已经中心化,可以不用。
intercept_scaling截距缩放因子,当fit_intercept为True且时,输入为 [ x , s e l f . i n t e r c e p t s c a l i n g ] [x, self.intercept_scaling] [x,self.interceptscaling],即对输入特征加入1维常数项增加的常数项系数也受到L1/L2正则的惩罚,所以要适当增大常数项。
class_weight不同类别样本的权重,用户指定每类样本权重或balanced(每类样本权重与该类样本出现比例成反比)。缺省:None在损失计算中,对不同类别的样本施加相应的权重。
verbose是否详细输出
random_state随机种子。如果随机种子相同,每次洗牌得到的结果一样。可设置为某个整数
max_iter最大迭代次数。缺省:1000

4、LinearSVC的属性

属性说明备注
coef_回归系数/权重,与特征维数相同。
intercept_截距项。

5、LinearSVC的方法

方法说明
fit(X, y[, sample_weight])模型训练。参数 X , y X, y X,y为训练数据,也可以通过sample_weight设置每个样本的权重。
predict(X)返回 X X X对应的预测值(类别标签)。
decision_function(X)预测的置信度(样本到分类超平面的带符号距离)。
score(X, y[, sample_weight])评估模型预测性能,返回模型预测的正确率。
densify()如果之前将系数矩阵变成了稀疏模式,再将其变回稠密模式(fit函数的格式)。
sparsify()将系数矩阵变成了稀疏模式。

注意:LinearSVC不能像Logistic回归那样得到每个类别的概率。

6、SVC

class sklearn.svm.SVC(C=1.0, kernel='rbf', degree=3, gamma='auto', coef0=0.0,
                     shrinking=True, probability=False, tol=0.001, cache_size=200, 
                     class_weight=None, verbose=False, max_iter=-1, 
                     decision_function_shape='ovr', random_state=None)
  • 支持L2正则化。
  • 支持多种核函数:‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, 'precomputed’和自定义核函数。
  • 支持多类分类实现:一对一(‘ovo’)。
  • 支持不同类别的样本权重设置:class_weight。
参数说明备注
C损失函数项的系数。默认:1
kernel核函数。支持 ‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’ 或 a callable。默认:‘rbf’。
degree多项式核的多项式阶数
gamma核函数(‘poly’, ‘rbf’, ‘sigmoid’)系数。默认 ‘auto’ =1/D
coef0核函数(‘poly’, ‘sigmoid’)参数。
shrinking是否收缩
probability是否支持概率估计。支持概率估计会降低速度,需在模型训练(fit)之前设置。
tol迭代终止判据的误差范围。默认:1e-3
cache_size核的cache的大小(单位:MB)
class_weight不同类别样本的权重,用户指定每类样本权重或 ‘balanced’(每类样本权重与该类样本出现比例成反比)。缺省:None在损失计算中,对不同类别的样本施加相应的权重。
verbose是否详细输出
max_iter最大迭代次数。缺省:-1,没有限制
decision_function_shape决策函数的形式,可为 ‘ovo’,‘ovr’。‘ovr’ 为1对多,将多类分类转化为多个两类分类问题。‘ovo’ 为libsvm原始决策函数形式,1对1,每两个类之间有一个分类面。缺省:‘ovr’
random_state随机种子。如果随机种子相同,每次洗牌得到的结果一样。可设置为某个整数。用于概率估计的数据重排时的伪随机数生成器的种子。

7、SVC的属性

属性说明备注
coef_原问题的系数/权重(线性核有效),与特征维数相同。 f ( x ) = ∑ i = 1 N α i y i k ( x , x i ) + b f(x) = \sum_{i=1}^{N} \alpha_i y_i k(x, x_i) + b f(x)=i=1Nαiyik(x,xi)+b
intercept_截距项。
support_支持向量的索引
support_vectors_支持向量
n_support_每个类的支持向量的数目
dual_coef_对偶系数 α \alpha α

注意:LinearSVC没有支持向量等属性。

8、SVC的常用方法

方法说明
fit(X, y[, sample_weight])模型训练。参数X, y为训练数据,也可以通过sample_weight设置每个样本的权重。
predict(X)返回X对应的预测值(类别标签)
decision_function(X)预测的置信度(样本到分类超平面的带符号距离)
score(X, y[, sample_weight])评估模型预测性能,返回模型预测的正确率。
predict_log_proba(X)返回X对应的预测值(每个类别对应的概率的log值)
predict_proba(X)返回X对应的预测值(每个类别对应的概率)

注意:如果参数probability被设为True,则可以得到属于每个类别的概率估计(predict_proba和predict_log_proba方法可用)。

9、核函数参数

  核函数的参数有 d e g r e e ( M ) degree(M) degree(M) g a m m a ( γ ) gamma(\gamma) gamma(γ) c o e f 0 ( θ ) coef0(\theta) coef0(θ),核函数可以有以下几种选择:

  - 线性核: k ( x , x ′ ) = x T x ′ k(x, x') = x^T x' k(x,x)=xTx
  - 多项式核,缺省为3阶多项式: k ( x , x ′ ) = ( γ x T x ′ + r ) M k(x, x') = (\gamma x^T x' + r)^M k(x,x)=(γxTx+r)M
  - 径向基函数(RBF): k ( x , x ′ ) = exp ⁡ ( − γ ∥ x − x ′ ∥ 2 2 ) k(x, x') = \exp(-\gamma \|x - x'\|_2^2) k(x,x)=exp(γxx22)
  - sigmoid函数: k ( x , x ′ ) = tanh ⁡ ( − γ x T x ′ + θ ) k(x, x') = \tanh(-\gamma x^T x' + \theta) k(x,x)=tanh(γxTx+θ)

10、多类别分类

  - SVM最初是处理二分类问题的。多类别分类通过一对一(One vs. One,‘ovo’)方案实现(SVC、NuSVC)。
  - 一对一法:假设进行 C C C个类别的分类任务,一对一法在任意两类样本之间设计一个SVM,构造 C × ( C − 1 ) / 2 C \times (C - 1) / 2 C×(C1)/2个分类器。当对一个未知样本进行分类时,最后得票最多的类别即为该样本的类别。
  - 为了提供一个和其它分类器一致的接口,参数decision_function_shape允许调用者将所有“一对一”分类器的结果聚合进一个 ( n _ s a m p l e s , n _ c l a s s e s ) (n\_samples, n\_classes) (n_samples,n_classes)的决策函数。
  - LinearSVC实现“一对多”分类法(‘ovr’),训练 C C C个模型。

11、得分与概率

  - SVC中的decision_function方法对每个样本都会给出在各个类别上的分数(在两类分类问题中,对每个样本只给出一个分数)。
  - 如果构造函数的参数probability被设为True,则可以得到属于每个类别的概率估计(通过predict_proba和predict_log_proba方法)。概率使用Platt缩放进行调整,通过在训练集上做额外的交叉检验来拟合一个在SVM分数上的Logistic回归。

  • Platt缩放中的交叉检验在大数据集上是一个代价很高的操作
  • 概率估计与实际得分可能会不一致,即使得分取得了最大值,概率并不一定也能取到最大值
  • Platt的方法在理论上也有一些问题
      - 如果需要拿到置信分数,而这些分数又不一定非得是概率,则建议把probability置为False,并且使用decision_function,而不是predict_proba。

12、计算复杂度

  - 支持向量机很强大,一度是处理机器学习任务的首选算法。
  - 但随着训练样本数目的增加,它们对计算和存储资源的需求也快速增长。

  • SVM的核心是二次规划问题(QP)。令特征维数为 D D D,训练样本数目为 N N N,取决于libsvm缓存在实践中使用的效率(依赖于数据集),基于libsvm的实现所用的QP求解器时间复杂度在 D N 2 DN^2 DN2 D N 3 DN^3 DN3不等。如果数据非常稀疏, D D D为一个样本中的平均非零特征数目。因此通常在 N < 100000 N < 100000 N<100000时可用。
      - 对线性的情况,基于liblinear实现的LinearSVC的算法比基于libsvm实现的SVC效率要高很多,liblinear在处理以百万计的样本和/或特征时仅以线性增长。

http://www.kler.cn/a/591080.html

相关文章:

  • 深度揭秘:蓝耘 Maas 平台如何重塑深度学习格局
  • python二级每日十题(1)
  • SQLMesh 系列教程:Airbnb数据分析项目实战
  • ubuntu中的ens33网卡在ifconfig中被默认关闭了?
  • Netty基础—8.Netty实现私有协议栈一
  • 华为海思 CPU「麒麟 X90」曝光
  • 谱分析方法
  • CPP从入门到入土之类和对象Ⅰ
  • Leetcode 3483. Unique 3-Digit Even Numbers
  • MySQL 锁
  • 【GPT-SoVITS】GPT-SoVITSAPI调用:让二次元角色开口说话,打造专属语音合成系统
  • 反向波动策略思路
  • 默认参数 d = {} 的陷阱
  • springboot项目日志不打印
  • Using SAP S4hana An Introduction for Business Users
  • Linux上的`i2c-tools`工具集的详细介绍;并利用它操作IMX6ULL的I2C控制器进而控制芯片AP3216C读取光照值和距离值
  • 【算法题解答·七】哈希
  • VulnHub-Billu_b0x通关攻略
  • EditRocket for Mac v5.0.2 文本编辑器 支持M、Intel芯片
  • 基于多头注意机制的多尺度特征融合的GCN的序列数据(功率预测、故障诊断)模型及代码详解