支持向量机(理解、推导、matlab例子)

概念

  • 支持向量机是数据挖掘中的一项新技术,是借助最优化方法来解决机器学习的新工具,成为克服“维数灾难”和“过学习”等困难的强有力手段。其主要思想是找到一个超平面,使得它能够尽可能多地将两类数据点正确分开,同时使分开地两类数据点距离分类面最远。

image.png

基本原理和推导(硬间隔)

  • 设数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } ∈ ( Ω × Y ) T=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\}\in(\Omega\times Y) T={(x1,y1),(x2,y2),...,(xn,yn)}(Ω×Y) x i x_i xi为样本,有很多特征(是一个向量), y i y_i yi为分类结果, y i ∈ Y = { − 1 , 1 } y_i\in Y=\{-1,1\} yiY={1,1}
  • 现在我们需要得到一个决策函数 g ( x ) g(x) g(x),从而得到分类函数 f ( x ) = s g n ( g ( x ) ) f(x)=sgn(g(x)) f(x)=sgn(g(x))对未知样本进行分类。
  1. 决策方程为 y ( x ) = ω T x + b y(x)=\omega^Tx+b y(x)=ωTx+b

{ y ( x i ) > 0 y i = 1 y ( x i ) < 0 y i = − 1 ⇒ y i y ( x i ) > 0 \begin{cases} y(x_i)>0&y_i=1\\ y(x_i)<0&y_i=-1 \end{cases}\Rightarrow y_iy(x_i)>0 {y(xi)>0y(xi)<0yi=1yi=1yiy(xi)>0

  1. 该模型地目标是要找到一个超平面 ω T x + b = 0 \omega^Tx+b=0 ωTx+b=0,使得一群数据点中距离该平面最近的点到该平面的距离最大,即

arg ⁡ ω , x max ⁡ { 1 ∣ ∣ ω ∣ ∣ min ⁡ i [ y i ( ω T x i + b ) ] } \begin{equation} \arg_{\omega,x}\max\{\frac{1}{||\omega||}\min_i[y_i(\omega^Tx_i+b)]\} \end{equation} argω,xmax{∣∣ω∣∣1imin[yi(ωTxi+b)]}
注:点到平面的距离: ∣ ω T x i + b ∣ ∣ ∣ ω ∣ ∣ \frac{|\omega^Tx_i+b|}{||\omega||} ∣∣ω∣∣ωTxi+b

  1. 对于决策方程,可以通过放缩 ω , b \omega,b ωb使得其结果 ∣ y ∣ ≥ 1 |y|\ge1 y1,所以 y i ( ω T x i + b ) ≥ 1 y_i(\omega^Tx_i+b)\ge1 yi(ωTxi+b)1,(1)式转化为 arg ⁡ ω , x max ⁡ 1 ∣ ∣ ω ∣ ∣ \arg_{\omega,x}\max\frac{1}{||\omega||} argω,xmax∣∣ω∣∣1

目标: max ⁡ ω , b 1 ∣ ∣ ω ∣ ∣ 约束条件: y i ( ω T x i + b ) ≥ 1 ⇒ 目标: min ⁡ ω , b 1 2 ∣ ∣ ω ∣ ∣ 2 约束条件: y i ( ω T x i + b ) ≥ 1 \begin{align*} 目标:&\max_{\omega,b}\frac{1}{||\omega||}\\ 约束条件:&y_i(\omega^Tx_i+b)\ge1 \end{align*} \Rightarrow \begin{align*} 目标:&\min_{\omega,b}\frac{1}{2}||\omega||^2\\ 约束条件:&y_i(\omega^Tx_i+b)\ge1 \end{align*} 目标:约束条件:ω,bmax∣∣ω∣∣1yi(ωTxi+b)1目标:约束条件:ω,bmin21∣∣ω2yi(ωTxi+b)1
注:此时的超平面称为规范超平面
此目标规划是凸优化(二次规划),数据量和维数较少时,可以用matlab中的quadprog函数求解

  1. 引入拉格朗日函数,把带约束问题转化为无约束问题:

min ⁡ ω , b max ⁡ α L ( ω , b , α ) α i ≥ 1 , i = 1 , . . . , n \begin{aligned} \min_{\omega,b}\max_{\alpha}L(\omega,b,\alpha)\\ \alpha_i\ge1,i=1,...,n \end{aligned} ω,bminαmaxL(ω,b,α)αi1,i=1,...,n
其中, L ( ω , b , α ) = 1 2 ∣ ∣ ω ∣ ∣ 2 + ∑ i = 1 n α i ( 1 − y i ( ω T x i + b ) ) L(\omega,b,\alpha)=\frac{1}{2}||\omega||^2+\sum_{i=1}^n\alpha_i(1-y_i(\omega^Tx_i+b)) L(ω,b,α)=21∣∣ω2+i=1nαi(1yi(ωTxi+b)) α i \alpha_i αi是拉格朗日乘子
注:可以这样理解两个问题是等价的:
1 − y i ( ω T x i + b ) > 0 , max ⁡ L = 1 2 ∣ ∣ ω ∣ ∣ 2 + ∞ = ∞ 1-y_i(\omega^Tx_i+b)>0,\max L=\frac{1}{2}||\omega||^2+\infty=\infty 1yi(ωTxi+b)>0,maxL=21∣∣ω2+=
1 − y i ( ω T x i + b ) ≤ 0 , max ⁡ L = 1 2 ∣ ∣ ω ∣ ∣ 2 + 0 = 1 2 ∣ ∣ ω ∣ ∣ 2 1-y_i(\omega^Tx_i+b)\le0,\max L=\frac{1}{2}||\omega||^2+0=\frac{1}{2}||\omega||^2 1yi(ωTxi+b)0,maxL=21∣∣ω2+0=21∣∣ω2
所以 min ⁡ ω , b max ⁡ α L ( ω , b , α ) = min ⁡ ω , b { ∞ , 1 2 ∣ ∣ ω ∣ ∣ 2 } = min ⁡ ω , b 1 2 ∣ ∣ ω ∣ ∣ 2 \min_{\omega,b}\max_{\alpha}L(\omega,b,\alpha)=\min_{\omega,b}\{\infty,\frac{1}{2}||\omega||^2\}=\min_{\omega,b}\frac{1}{2}||\omega||^2 minω,bmaxαL(ω,b,α)=minω,b{,21∣∣ω2}=minω,b21∣∣ω2,而且无约束问题的解 ( ω , b ) (\omega,b) (ω,b)满足 1 − y i ( ω T x i + b ) ≤ 0 1-y_i(\omega^Tx_i+b)\le0 1yi(ωTxi+b)0

  1. 上面的无约束问题的强对偶问题为:

max ⁡ α min ⁡ ω , b L ( ω , b , α ) α i ≥ 1 , i = 1 , . . . , n \begin{aligned} \max_{\alpha}\min_{\omega,b}L(\omega,b,\alpha)\\ \alpha_i\ge1,i=1,...,n \end{aligned} αmaxω,bminL(ω,b,α)αi1,i=1,...,n
{ ∂ L ∂ b = 0 ∂ L ∂ ω = 0 \begin{cases} \frac{\partial L}{\partial b}=0\\ \frac{\partial L}{\partial \omega}=0 \end{cases} {bL=0ωL=0得到 ∑ i = 1 n α i y i = 0 , ω = ∑ i = 1 n α i x i y i \sum_{i=1}^n\alpha_iy_i=0,\omega=\sum_{i=1}^n\alpha_ix_iy_i i=1nαiyi=0,ω=i=1nαixiyi,代入优化问题,得
min ⁡ α 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 n α i { ∑ i = 1 n α i y i = 0 α i ≥ 0 \min_{\alpha}\frac{1}{2}\sum_{i=1}^n\sum_{j=1}^n\alpha_i\alpha_j y_i y_j(x_i\cdot x_j)-\sum_{i=1}^n\alpha_i \\ \begin{cases} \sum_{i=1}^n\alpha_iy_i=0\\ \alpha_i\ge0 \end{cases} αmin21i=1nj=1nαiαjyiyj(xixj)i=1nαi{i=1nαiyi=0αi0

  1. 求解上述最优化问题得 α ∗ = [ α 1 ∗ , α 2 ∗ , . . . , α n ∗ ] T \alpha^*=[\alpha_1^*,\alpha_2^*,...,\alpha_n^*]^T α=[α1,α2,...,αn]T,计算

ω ∗ = ∑ i = 1 n α i ∗ x i y i \omega^*=\sum_{i=1}^n\alpha_i^*x_iy_i ω=i=1nαixiyi

  1. 由KKT互补条件知

α i ∗ ( 1 − y i ( ω ∗ ⋅ x i + b ∗ ) ) = 0 \alpha_i^*(1-y_i(\omega^*\cdot x_i+b^*))=0 αi(1yi(ωxi+b))=0
由此推断可知,当 x i x_i xi为支持向量时( 1 − y i ( ω ∗ ⋅ x i + b ∗ ) = 0 1-y_i(\omega^*\cdot x_i+b^*)=0 1yi(ωxi+b)=0),对应得 α i \alpha_i αi为正;当 x i x_i xi不为支持向量时( 1 − y i ( ω ∗ ⋅ x i + b ∗ ) < 0 1-y_i(\omega^*\cdot x_i+b^*)<0 1yi(ωxi+b)<0),对应得 α i \alpha_i αi为0;
并可以计算得
b ∗ = y j − ∑ i = 1 n α i ∗ y i ( x i ⋅ x j ) b^*=y_j-\sum_{i=1}^n\alpha_i^*y_i(x_i\cdot x_j) b=yji=1nαiyi(xixj)
注:支持向量可以理解为支撑起超平面的点,如果再增加一些边界之外的点,是不影响超平面的,即超平面由支持向量决定。如下图:
image.png

  1. 构造分类超平面 w ∗ ⋅ x + b ∗ = 0 w^*\cdot x+b^*=0 wx+b=0,并由此可以得到

决策方程
g ( x ) = ω ∗ ⋅ x + b ∗ = ∑ i = 1 n α i ∗ y i ( x i ⋅ x ) + b ∗ g(x)=\omega^*\cdot x+b^*=\sum_{i=1}^n\alpha_i^*y_i(x_i\cdot x)+b^* g(x)=ωx+b=i=1nαiyi(xix)+b
分类函数
f ( x ) = s g n ( g ( x ) ) = s g n ( ∑ i = 1 n α i ∗ y i ( x i ⋅ x ) + b ∗ ) f(x)=sgn(g(x))=sgn(\sum_{i=1}^n\alpha_i^*y_i(x_i\cdot x)+b^*) f(x)=sgn(g(x))=sgn(i=1nαiyi(xix)+b)

软间隔

  • 当训练集的两类样本近似可分时,即允许存在不满足约束条件 y i ( ω ⋅ x + b ) ≥ 1 y_i(\omega\cdot x+b)\ge1 yi(ωx+b)1的样本点,但仍然能使用超平面进行划分。即在两个分类边界 ω ⋅ x + b = ± 1 \omega\cdot x+b=±1 ωx+b=±1之间允许出现样本点。
  1. 为了解决这种情况,引入松弛变量 ξ i ≥ 0 , i = 1 , . . . , n \xi_i\ge0,i=1,...,n ξi0,i=1,...,n,得到“软化”的约束条件

y i ( ω ⋅ x + b ) ≥ 1 − ξ i , i = 1 , . . . , n y_i(\omega\cdot x+b)\ge1-\xi_i,i=1,...,n yi(ωx+b)1ξi,i=1,...,n
避免 ξ i \xi_i ξi取太大的值,为此要在目标函数中对它进行惩罚,得到如下的二次规划问题:
min ⁡ 1 2 ∣ ∣ ω ∣ ∣ 2 + C ∑ i = 1 n ξ i s . t . { y i ( ω ⋅ x + b ) ≥ 1 − ξ i ξ i ≥ 0 , i = 1 , . . . , n \begin{align*} &\min\quad\frac{1}{2}||\omega||^2+C\sum_{i=1}^n\xi_i\\ &s.t.\quad \begin{cases} y_i(\omega\cdot x+b)\ge1-\xi_i\\ \xi_i\ge0,i=1,...,n \end{cases} \end{align*} min21∣∣ω2+Ci=1nξis.t.{yi(ωx+b)1ξiξi0,i=1,...,n
注: C C C越大, ξ i \xi_i ξi越小,说明要求分类得更准确, C → ∞ C\to\infty C时, ξ i = 0 \xi_i=0 ξi=0,就是绝对准确,即硬间隔; C C C越小,说明有更大的错误容忍。
C C C是一个常数,可以用K折交叉验证来选择合适的 C C C

  1. 和硬间隔的步骤一样,最终得优化问题:

min ⁡ α 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 n α i { ∑ i = 1 n α i y i = 0 0 ≤ α i ≤ C , i = 1 , . . . , n \begin{align*} &\min_{\alpha}\frac{1}{2}\sum_{i=1}^n\sum_{j=1}^n\alpha_i\alpha_j y_i y_j(x_i\cdot x_j)-\sum_{i=1}^n\alpha_i \\ &\begin{cases} \sum_{i=1}^n\alpha_iy_i=0\\ 0\le\alpha_i\le C,i=1,...,n \end{cases} \end{align*} αmin21i=1nj=1nαiαjyiyj(xixj)i=1nαi{i=1nαiyi=00αiC,i=1,...,n

  1. 求解上述最优化问题得 α ∗ = [ α 1 ∗ , α 2 ∗ , . . . , α n ∗ ] T \alpha^*=[\alpha_1^*,\alpha_2^*,...,\alpha_n^*]^T α=[α1,α2,...,αn]T,计算

ω ∗ = ∑ i = 1 n α i ∗ x i y i \omega^*=\sum_{i=1}^n\alpha_i^*x_iy_i ω=i=1nαixiyi
b ∗ = y j − ∑ i = 1 n α i ∗ y i ( x i ⋅ x j ) b^*=y_j-\sum_{i=1}^n\alpha_i^*y_i (x_i\cdot x_j) b=yji=1nαiyi(xixj)
f ( x ) = s g n ( g ( x ) ) = s g n ( ∑ i = 1 n α i ∗ y i ( x i ⋅ x ) + b ∗ ) f(x)=sgn(g(x))=sgn(\sum_{i=1}^n\alpha_i^*y_i(x_i\cdot x)+b^*) f(x)=sgn(g(x))=sgn(i=1nαiyi(xix)+b)

核函数

  • 当两类样本点得重合区域很大时,无法使用线性划分。但我们可以将样本点映射到更高维得空间,以使得两类样本点可分。如下:

image.png

  • 此时得目标就是找到一种变换的方法 ϕ ( x ) \phi(x) ϕ(x)

image.png

  1. 此时得二次规划问题:

min ⁡ 1 2 ∣ ∣ ω ∣ ∣ 2 y i ( ω T ϕ ( x i ) + b ) ≥ 1 , i = 1 , . . . , n \begin{align*} &\min\quad\frac{1}{2}||\omega||^2\\ &y_i(\omega^T\phi(x_i)+b)\ge1,i=1,...,n \end{align*} min21∣∣ω2yi(ωTϕ(xi)+b)1,i=1,...,n
核函数 K ( x i , x j ) = ϕ ( x i ) ⋅ ϕ ( x j ) K(x_i,x_j)=\phi(x_i)\cdot\phi(x_j) K(xi,xj)=ϕ(xi)ϕ(xj),可以避免在高维特征空间进行复杂得运算,不同得核函数形成不同得算法。
主要的核函数:

  1. 线性内核函数 K ( x i , x j ) = x i ⋅ x j K(x_i,x_j)=x_i\cdot x_j K(xi,xj)=xixj
  2. 多项式核函数 K ( x i , x j ) = ( x i ⋅ x j + 1 ) q K(x_i,x_j)=(x_i\cdot x_j+1)^q K(xi,xj)=(xixj+1)q
  3. 径向基核函数(高斯核函数,RBF) K ( x i , x j ) = exp ⁡ { − ∣ ∣ x i − x j ∣ ∣ 2 2 σ 2 } K(x_i,x_j)=\exp \{-\frac{||x_i-x_j||^2}{2\sigma^2}\} K(xi,xj)=exp{2σ2∣∣xixj2}
  4. 和硬间隔的步骤一样,最终得优化问题:

min ⁡ α 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j K ( x i ⋅ x j ) − ∑ i = 1 n α i { ∑ i = 1 n α i y i = 0 α i ≥ 0 , i = 1 , . . . , n \begin{align*} &\min_{\alpha}\frac{1}{2}\sum_{i=1}^n\sum_{j=1}^n\alpha_i\alpha_j y_i y_jK(x_i\cdot x_j)-\sum_{i=1}^n\alpha_i \\ &\begin{cases} \sum_{i=1}^n\alpha_iy_i=0\\ \alpha_i\ge0,i=1,...,n \end{cases} \end{align*} αmin21i=1nj=1nαiαjyiyjK(xixj)i=1nαi{i=1nαiyi=0αi0,i=1,...,n

  1. 求解上述最优化问题得 α ∗ = [ α 1 ∗ , α 2 ∗ , . . . , α n ∗ ] T \alpha^*=[\alpha_1^*,\alpha_2^*,...,\alpha_n^*]^T α=[α1,α2,...,αn]T,计算

b ∗ = y j − ∑ i = 1 n α i ∗ y i K ( x i ⋅ x j ) b^*=y_j-\sum_{i=1}^n\alpha_i^*y_iK(x_i\cdot x_j) b=yji=1nαiyiK(xixj)
f ( x ) = s g n ( g ( x ) ) = s g n ( ∑ i = 1 n α i ∗ y i K ( x i ⋅ x ) + b ∗ ) f(x)=sgn(g(x))=sgn(\sum_{i=1}^n\alpha_i^*y_iK(x_i\cdot x)+b^*) f(x)=sgn(g(x))=sgn(i=1nαiyiK(xix)+b)
image.png

核函数和软间隔结合

  • 当映射到高维空间也不能硬性划分时,也需要对约束条件进行软化。
  • 同理得到优化问题

min ⁡ α 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j K ( x i ⋅ x j ) − ∑ i = 1 n α i { ∑ i = 1 n α i y i = 0 0 ≤ α i ≤ C , i = 1 , . . . , n \begin{align*} &\min_{\alpha}\frac{1}{2}\sum_{i=1}^n\sum_{j=1}^n\alpha_i\alpha_j y_i y_jK(x_i\cdot x_j)-\sum_{i=1}^n\alpha_i \\ &\begin{cases} \sum_{i=1}^n\alpha_iy_i=0\\ 0\le\alpha_i\le C,i=1,...,n \end{cases} \end{align*} αmin21i=1nj=1nαiαjyiyjK(xixj)i=1nαi{i=1nαiyi=00αiC,i=1,...,n
b ∗ = y j − ∑ i = 1 n α i ∗ y i K ( x i ⋅ x j ) b^*=y_j-\sum_{i=1}^n\alpha_i^*y_iK(x_i\cdot x_j) b=yji=1nαiyiK(xixj)
f ( x ) = s g n ( g ( x ) ) = s g n ( ∑ i = 1 n α i ∗ y i K ( x i ⋅ x ) + b ∗ ) f(x)=sgn(g(x))=sgn(\sum_{i=1}^n\alpha_i^*y_iK(x_i\cdot x)+b^*) f(x)=sgn(g(x))=sgn(i=1nαiyiK(xix)+b)

一个matlab例子

a0=load('fenlei.txt');
a=a0';
b0=a(:,1:27);%已分类的数据,一列就是一个样本点
dd0=a(:,28:end);%未分类的数据
[b,ps]=mapstd(b0);%b是已分类数据标准化处理后的矩阵,sp是标准化处理的设置
dd=mapstd('apply',dd0,ps);%未分类的数据按照上述标准化处理
group=[ones(20,1);2*ones(7,1)];%已知样本点的类别标号
s=fitcsvm(b',group);%训练向量机
sv_index=s.SupportVectorLabels%返回支持向量的标号
beta=s.Alpha%权系数
bb=s.Bias%常数项
check=predict(s,b')%验证已知样本点
err_rate=1-sum(group==check)/length(group)%计算已知样本点的错判率
solution=predict(s,dd')%对待判样本点进行分类
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_961876584

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值