支持向量机(SVM)算法原理
文章目录
- 支持向量机(SVM)算法介绍
- 线性可分支持向量机
- 线性可分支持向量机定义
- 函数间隔、几何间隔与硬间隔最大化
- 函数间隔
- 几何间隔
- 硬间隔最大化
- 线性可分支持向量机的原始问题转化为对偶问题
- 原始问题
- 对偶问题及求解过程
- 线性支持向量机
- 软间隔最大化
- 线性支持向量机的原始问题转化为对偶问题
- 原始问题
- 对偶问题及解题过程
- 非线性支持向量机、核函数与核技巧
- 核函数
- 核技巧
支持向量机(SVM)算法介绍
支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器。它与感知机的最大区别是学习策略为间隔最大化。
SVM可分类为三类:线性可分支持向量机(数据线性可分)、线性支持向量机(数据近似线性可分)及非线性支持向量机(数据线性不可分)。
线性可分支持向量机
线性可分支持向量机定义
给定一个线性可分的训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习得到的分离超平面为
w x + b = 0 wx+b=0 wx+b=0
以及相应的分类决策函数
f ( x ) = s i g n ( w x + b ) f(x)=sign(wx+b) f(x)=sign(wx+b)
就称为线性可分支持向量机。距离超平面最近的样本点就称为支持向量,显然正类和负类各有一个支持向量。
如何求解得到间隔最大化的超平面呢?
函数间隔、几何间隔与硬间隔最大化
函数间隔
超平面关于样本点(xi,yi)的函数间隔为:
γ ^ i = y i ( w x i + b ) \hat\gamma_{i}=y_{i}(wx_{i}+b) γ^i=yi(wxi+b)
通过观察wx+b的符号与类标记y的符号是否一致可判断分类是否正确,为了统一,我们把y乘以wx+b,这样无论是正样本点还是负样本点结果都是正的。
对于数据集T,定义超平面对T的函数间隔为超平面关于数据集T中所有样本点的函数间隔值之中的最小值:
γ ^ = min i = 1 , ⋯   , N γ ^ i \hat\gamma=\min_{i=1, \cdots, N} \hat\gamma_{i} γ^=i=1,⋯,Nminγ^i
当我们选择超平面时,只有函数间隔还不够,因为只要成比例地改变w和b, 例如将它们改为2w和2b, 超平面并没有改变, 但函数间隔却成为原来的2倍。
我们可以对分离超平面的法向量w加某些约束, 比如对函数间隔除以W的L2范数,此时函数间隔就变为几何间隔。几何间隔才是点到超平面的距离。
几何间隔
定义超平面关于样本点(xi,yi)的几何间隔为:
γ i = y i ( w ∥ w ∥ ⋅ x i + b ∥ w ∥ ) \gamma_{i}=y_{i}\left(\frac{w}{\|w\|} \cdot x_{i}+\frac{b}{\|w\|}\right) γi=yi(∥w∥w⋅xi+∥w∥b)
超平面对数据集T的几何间隔为超平面关于数据集T中所有样本点的几何间隔值之中的最小值:
γ = min i = 1 , ⋯   , N γ i \gamma=\min_{i=1, \cdots, N} \gamma_{i} γ=i=1,⋯,Nminγi
我们可以发现函数间隔和几何间隔有如下关系:
γ = γ ^ ∣ ∣ w ∣ ∣ \gamma=\frac{\hat\gamma}{||w||} γ=∣∣w∣∣γ^
当我们取分母即W的L2范数为1时,函数间隔和几何间隔相等。
如果超平面参数w和b成比例地改变(超平面没有改变),函数间隔也按此比例改变,而几何间隔不变。
硬间隔最大化
我们寻找的超平面应当满足:这个超平面不仅可以将数据集中的所有正负实例点分开,而且对最难区分的实例点(离超平面最近的点,也就是支持向量)也有足够大的间隔将它们分开。
寻找几何间隔最大的分离超平面问题可表示为下面的约束最优化问题:
max w , b γ \max_{w, b} \gamma w,bmaxγ
s . t . y i ( w ∣ ∣ w ∣ ∣ x i + b ∣ ∣ w ∣ ∣ ) ⩾ γ , i = 1 , 2 , ⋯   , N s.t. \quad y_{i}(\frac{w}{||w||} x_{i}+\frac{b}{||w||}) \geqslant \gamma, \quad i=1,2, \cdots, N s.t.yi(∣∣w∣∣wxi+∣∣w∣∣b)⩾γ,i=1,2,⋯,N
即我们要最大化超平面关于数据集T的几何间隔γ,约束条件则表示训练集中每个点与超平面的几何间隔都大于等于γ。
事实上我们就是要找到一对支持向量(一正例一负例两个样本点,超平面在这两个点的正中间,使得超平面对两个点的距离最远),同时这个超平面对于更远处的其他所有正负实例点都能正确区分。
我们可将上式的几何间隔用函数间隔表示,这个问题可改写为:
max w , b γ ^ ∣ ∣ w ∣ ∣ \max_{w, b} \frac{\hat\gamma}{||w||} w,bmax∣∣w∣∣γ^
s . t . y i ( w x i + b ) ⩾ γ ^ , i = 1 , 2 , ⋯   , N s.t. \quad y_{i}(wx_{i}+b) \geqslant \hat\gamma, \quad i=1,2, \cdots, N s.t.yi(wxi+b)⩾γ^,i=1,2,⋯,N
此时如果我们将w和b放大λ倍,那么右边的函数间隔也会放大λ倍。也就是说约束条件左右两边都整体放大了λ倍,对不等式约束没有影响。因此,我们不妨取:
γ ^ = 1 \hat\gamma=1 γ^=1
取1是为了方便推导和优化,且这样做对目标函数的优化没有影响。
那么上面的最优化问题变为:
max w , b 1 ∣ ∣ w ∣ ∣ \max_{w, b} \frac{1}{||w||} w,bmax∣∣w∣∣1
s . t . y i ( w x i + b ) ⩾ 1 , i = 1 , 2 , ⋯   , N s.t. \quad y_{i}(wx_{i}+b) \geqslant 1, \quad i=1,2, \cdots, N s.t.yi(wxi+b)⩾1,i=1,2,⋯,N
最大化1/||w||与最小化(1/2)||w||2是等价的,乘以1/2是为了后面求导时计算方便。
则我们可以得到下面的线性可分支持向量机学习的最优化问题:
min w , b 1 2 ∣ ∣ w ∣ ∣ 2 \min_{w, b} \frac{1}{2}||w||^{2} w,bmin21∣∣w∣∣2
s . t . y i ( w x i + b ) − 1 ⩾ 0 , i = 1 , 2 , ⋯   , N s.t. \quad y_{i}(wx_{i}+b)-1 \geqslant 0, \quad i=1,2, \cdots, N s.t.yi(wxi+b)−1⩾0,i=1,2,⋯,N
线性可分支持向量机的原始问题转化为对偶问题
原始问题
上面的最优化问题我们称之为原始问题。
我们可以列出一个拉格朗日函数来求解原始问题。我们定义拉格朗日函数为:
L ( w , b , α ) = 1 2 ∥ w ∥ 2 − ∑ i = 1 N α i y i ( w x i + b ) + ∑ i = 1 N α i L(w, b, \alpha)=\frac{1}{2}\|w\|^{2}-\sum_{i=1}^{N} \alpha_{i} y_{i}(w x_{i}+b)+\sum_{i=1}^{N} \alpha_{i} L(w,b,α)=21∥w∥2−i=1∑Nαiyi(wxi+b)+i=1∑Nαi
α i ⩾ 0 , i = 1 , 2 , ⋯   , N \alpha_{i} \geqslant 0, i=1,2, \cdots, N αi⩾0,i=1,2,⋯,N
原始问题是一个极小极大问题。
min w , b max α i ≥ 0 L ( w , b , α ) \min_{w, b} \max_{\alpha_{i} \geq 0} L(w, b, \alpha) w,bminαi≥0maxL(w,b,α)
直接求原始问题并不好解,我们可以应用拉格朗日对偶性,通过求解对偶问题来得到原始问题的最优解。
对偶问题及求解过程
根据拉格朗日对偶性,对偶问题是极大极小问题,即求:
max α i ≥ 0 min w , b L ( w , b , α ) \max_{\alpha_{i} \geq 0} \min_{w, b} L(w, b, \alpha) αi≥0maxw,bminL(w,b,α)
对偶问题的求解过程:
先对L(w,b,α)求对w、b的极小。我们需要求L对w、b的偏导数并令其为0。
∇ w L ( w , b , α ) = w − ∑ i = 1 N α i y i x i = 0 \nabla_{w} L(w, b, \alpha)=w-\sum_{i=1}^{N} \alpha_{i} y_{i} x_{i}=0 ∇wL(w,b,α)=w−i=1∑Nαiyixi=0
∇ b L ( w , b , α ) = ∑ i = 1 N α i y i = 0 \nabla_{b} L(w, b, \alpha)=\sum_{i=1}^{N} \alpha_{i} y_{i}=0 ∇bL(w,b,α)=i=1∑Nαiyi=0
得到两个等式:
w = ∑ i = 1 N α i y i x i w=\sum_{i=1}^{N} \alpha_{i} y_{i} x_{i} w=i=1∑Nαiyixi
∑ i = 1 N α i y i = 0 \sum_{i=1}^{N} \alpha_{i} y_{i}=0 i=1∑Nαiyi=0
将上面两式代入拉格朗日函数,得:
min w , b L ( w , b , α ) = 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i y i ( ( ∑ j = 1 N α j y j x j ) ⋅ x i + b ) + ∑ i = 1 N α i \min_{w, b}L(w, b, \alpha)=\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum_{i=1}^{N} \alpha_{i} y_{i}\left(\left(\sum_{j=1}^{N} \alpha_{j} y_{j} x_{j}\right) \cdot x_{i}+b\right)+\sum_{i=1}^{N} \alpha_{i} w,bminL(w,b,α)=21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαiyi((j=1∑Nαjyjxj)⋅xi+b)+i=1∑Nαi
= − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i =-\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{N} \alpha_{i} =−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi
再求min L(w,b,α)对α的极大,即:
max α − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i \max_{\alpha}-\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{N} \alpha_{i} αmax−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi
∑ i = 1 N α i y i = 0 \quad \sum_{i=1}^{N} \alpha_{i} y_{i}=0 i=1∑Nαiyi=0
α i ⩾ 0 , i = 1 , 2 , ⋯   , N \alpha_{i} \geqslant 0, \quad i=1,2, \cdots, N αi⩾0,i=1,2,⋯,N
我们将上面第一个式子乘以-1,即可得到等价的对偶最优化问题:
min α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i \min_{\alpha} \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum_{i=1}^{N} \alpha_{i} αmin21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαi
∑ i = 1 N α i y i = 0 \quad \sum_{i=1}^{N} \alpha_{i} y_{i}=0 i=1∑Nαiyi=0
α i ⩾ 0 , i = 1 , 2 , ⋯   , N \alpha_{i} \geqslant 0, \quad i=1,2, \cdots, N αi⩾0,i=1,2,⋯,N
我们可以求出上面问题对α的解向量(α即为所有拉格朗日乘子)为:
( α 1 , α 2 , ⋯   , α N ) T (\alpha_{1},\alpha_{2}, \cdots,\alpha_{N})^{T} (α1,α2,⋯,αN)T
则按上面求L对w、b的偏导数并令其为0得到的等式,我们可得:
w = ∑ i = 1 N α i y i x i w=\sum_{i=1}^{N} \alpha_{i}y_{i}x_{i} w=i=1∑Nαiyixi
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=yj−i=1∑Nαiyi(xi⋅xj)
那么超平面就为
∑ i = 1 N α i y i ( x ⋅ x i ) + b = 0 \sum_{i=1}^{N} \alpha_{i}y_{i}(x \cdot x_{i})+b=0 i=1∑Nαiyi(x⋅xi)+b=0
决策函数为
f ( x ) = s i g n ( ∑ i = 1 N α i y i x ⋅ x i + b ) f(x)=sign(\sum_{i=1}^{N} \alpha_{i}y_{i}x \cdot x_{i}+b) f(x)=sign(i=1∑Nαiyix⋅xi+b)
我们注意到对原始的最优化问题:
min w , b 1 2 ∣ ∣ w ∣ ∣ 2 \min_{w, b} \frac{1}{2}||w||^{2} w,bmin21∣∣w∣∣2
s . t . y i ( w x i + b ) − 1 ⩾ 0 , i = 1 , 2 , ⋯   , N s.t. \quad y_{i}(wx_{i}+b)-1 \geqslant 0, \quad i=1,2, \cdots, N s.t.yi(wxi+b)−1⩾0,i=1,2,⋯,N
有不等式约束,因此上述过程必须满足KKT条件:
α i ⩾ 0 \alpha_{i} \geqslant 0 αi⩾0
y i f ( x i ) − 1 ⩾ 0 y_{i} f\left(x_{i}\right)-1 \geqslant 0 yif(xi)−1⩾0
α i ( y i f ( x i ) − 1 ) = 0 \alpha_{i}\left(y_{i} f\left(x_{i}\right)-1\right)=0 αi(yif(xi)−1)=0
计算实例在《统计学习方法》P107-P108。
线性支持向量机
我们经常遇到这样的情况:数据集T中大部分数据线性可分,但有少部分数据线性不可分,这时使用上面的线性可分支持向量机并不可行。这时我们就要使用学习策略为软间隔最大化的线性支持向量机。
软间隔最大化
所谓软间隔最大化,就是在硬间隔最大化的基础上,对每个样本点(xi,yi)引进一个松弛变量ξi,于是我们的约束不等式变为:
y i ( w x i + b ) ⩾ 1 − ξ i y_{i}(wx_{i}+b) \geqslant 1-\xi_{i} yi(wxi+b)⩾1−ξi
同时,我们的目标函数中对每个松弛变量ξi需要支付一个代价ξi。
即目标函数变为:
1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ j = 1 N ξ i \frac{1}{2}||w||^{2}+C \sum_{j=1}^{N} \xi_{i} 21∣∣w∣∣2+Cj=1∑Nξi
这里C>0称为惩罚参数。C较大时对误分类的惩罚增大,C较小时对误分类的惩罚减小。
上面的目标函数包含两层含义:一是使间隔尽量大,二是使误分类点的个数尽量小。
松弛变量ξi表示xi在超平面下不符合真实分类,但是与超平面距离<ξi,因此我们将其归到另一类(也就是真实分类)。松弛变量用来解决异常点,它可以"容忍"异常点在错误的区域,使得支持向量机计算出的超平面不至于产生过拟合的问题,但同时,我们又不希望松弛变量太大导致超平面分类性能太差。
线性支持向量机的原始问题转化为对偶问题
原始问题
min w , b , ξ 1 2 ∥ w ∥ 2 + C ∑ i = 1 N ξ i \min_{w, b, \xi} \frac{1}{2}\|w\|^{2}+C \sum_{i=1}^{N} \xi_{i} w,b,ξmin21∥w∥2+Ci=1∑Nξi
y i ( w ⋅ x i + b ) ⩾ 1 − ξ i , i = 1 , 2 , ⋯   , N \quad y_{i}\left(w \cdot x_{i}+b\right) \geqslant 1-\xi_{i}, \quad i=1,2, \cdots, N yi(w⋅xi+b)⩾1−ξi,i=1,2,⋯,N
ξ i ⩾ 0 , i = 1 , 2 , ⋯   , N \xi_{i} \geqslant 0, \quad i=1,2, \cdots, N ξi⩾0,i=1,2,⋯,N
对偶问题及解题过程
原始问题的对偶问题为:
min α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i \min_{\alpha} \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum_{i=1}^{N} \alpha_{i} αmin21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαi
∑ i = 1 N α i y i = 0 \quad \sum_{i=1}^{N} \alpha_{i} y_{i}=0 i=1∑Nαiyi=0
0 ⩽ α i ⩽ C , i = 1 , 2 , ⋯   , N 0 \leqslant \alpha_{i} \leqslant C, \quad i=1,2, \cdots, N 0⩽αi⩽C,i=1,2,⋯,N
拉格朗日函数为:
L ( w , b , ξ , α , μ ) ≡ 1 2 ∥ w ∥ 2 + C ∑ i = 1 N ξ i − ∑ i = 1 N α i ( y i ( w ⋅ x i + b ) − 1 + ξ i ) − ∑ i = 1 N μ i ξ i L(w, b, \xi, \alpha, \mu) \equiv \frac{1}{2}\|w\|^{2}+C \sum_{i=1}^{N} \xi_{i}-\sum_{i=1}^{N} \alpha_{i}\left(y_{i}\left(w \cdot x_{i}+b\right)-1+\xi_{i}\right)-\sum_{i=1}^{N} \mu_{i} \xi_{i} L(w,b,ξ,α,μ)≡21∥w∥2+Ci=1∑Nξi−i=1∑Nαi(yi(w⋅xi+b)−1+ξi)−i=1∑Nμiξi
α i ⩾ 0 , μ i ⩾ 0 \alpha_{i} \geqslant 0, \mu_{i} \geqslant 0 αi⩾0,μi⩾0
类似的,先求L对w、b、ξ的极小,求L对w、b、ξ的偏导数并令偏导数为0,最后得:
w = ∑ i = 1 N α i y i x i w=\sum_{i=1}^{N} \alpha_{i} y_{i} x_{i} w=i=1∑Nαiyixi
∑ i = 1 N α i y i = 0 \sum_{i=1}^{N} \alpha_{i} y_{i}=0 i=1∑Nαiyi=0
C − α i − μ i = 0 C-\alpha_{i}-\mu_{i}=0 C−αi−μi=0
上面三式代回L,得:
min w , b , ξ L ( w , b , ξ , α , μ ) = − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i \min_{w, b, \xi} L(w, b, \xi, \alpha, \mu)=-\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{N} \alpha_{i} w,b,ξminL(w,b,ξ,α,μ)=−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi
再对上式求α的极大,得到对偶问题:
max α − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i \max_{\alpha}-\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{N} \alpha_{i} αmax−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi
∑ i = 1 N α i y i = 0 \quad \sum_{i=1}^{N} \alpha_{i} y_{i}=0 i=1∑Nαiyi=0
C − α i − μ i = 0 C-\alpha_{i}-\mu_{i}=0 C−αi−μi=0
α i ⩾ 0 μ i ⩾ 0 , i = 1 , 2 , ⋯   , N \begin{array}{l}{\alpha_{i} \geqslant 0} \\ {\mu_{i} \geqslant 0, \quad i=1,2, \cdots, N}\end{array} αi⩾0μi⩾0,i=1,2,⋯,N
设
α = ( α 1 , α 2 , ⋯   , α N ) T \alpha=(\alpha_{1}, \alpha_{2}, \cdots, \alpha_{N})^{T} α=(α1,α2,⋯,αN)T
是上面对偶问题的拉格朗日乘子的解,那么有:
w = ∑ i = 1 N α i y i x i w=\sum_{i=1}^{N} \alpha_{i} y_{i} x_{i} w=i=1∑Nαiyixi
b = y j − ∑ i = 1 N y i α i ( x i ⋅ x j ) b=y_{j}-\sum_{i=1}^{N} y_{i} \alpha_{i}(x_{i} \cdot x_{j}) b=yj−i=1∑Nyiαi(xi⋅xj)
那么超平面为:
∑ i = 1 N α i y i ( x ⋅ x i ) + b = 0 \sum_{i=1}^{N} \alpha_{i} y_{i}(x \cdot x_{i})+b=0 i=1∑Nαiyi(x⋅xi)+b=0
决策函数为:
f ( x ) = s i g n ( ∑ i = 1 N α i y i ( x ⋅ x i ) + b ) f(x)=sign(\sum_{i=1}^{N} \alpha_{i} y_{i}(x \cdot x_{i})+b) f(x)=sign(i=1∑Nαiyi(x⋅xi)+b)
非线性支持向量机、核函数与核技巧
如果我们的数据集样本是非线性可分的,我们可以使用一个映射将样本从原始空间映射到一个合适的高维空间,在这个高维空间中数据集线性可分。
核函数
设X是输入空间,H是特征空间(即高维空间),如果存在一个映射:
ϕ ( x ) : X → H \phi(x) : X \rightarrow H ϕ(x):X→H
使得
K ( x , z ) = ϕ ( x ) ⋅ ϕ ( z ) K(x, z)=\phi(x) \cdot \phi(z) K(x,z)=ϕ(x)⋅ϕ(z)
x , z ∈ X x, z \in \mathcal{X} x,z∈X
那么称K(x,z)为核函数。Φ(x)为映射函数,等式右边是内积。
核技巧
现在假设我们用映射:
x → ϕ ( x ) x \rightarrow \phi(x) x→ϕ(x)
将超平面从原本低维空间的形式变成高维空间的形式:
f ( x ) = ω T x + b f(x)=\omega^{T} x+b f(x)=ωTx+b
f ( x ) = ω T ϕ ( x ) + b f(x)=\omega^{T} \phi(x)+b f(x)=ωTϕ(x)+b
这时我们原本在低维的非线性边界在高维就变成了一个超平面,在高维中数据集变得线性可分了。
但是如果我们先将数据集从低维映射到高维,再去求超平面,由于高维空间中维数要多的多,计算量会变得很大。
核技巧是一种方法,我们用它可以简化计算。它就是用低维空间的内积来求高维空间的内积,省去了先做映射变换再在高维空间中求内积的麻烦。
举例:
以多项式核为例,若样本x有d个分量:
x = ( x 1 , x 2 , … . . x d ) x=\left(x_{1}, x_{2}, \ldots . . x_{d}\right) x=(x1,x2,…..xd)
我们做一个二维的多项式变换,将d维扩展:
ϕ ( x ) = ( 1 ; x 1 , x 2 , … x d ; x 1 2 , x 1 x 2 … x 1 x d ; … ; x d x 1 , x d x 2 … x d 2 ) \phi(x)=(1 ; x_{1}, x_{2}, \ldots x_{d} ; x_{1}^{2}, x_{1} x_{2} \ldots x_{1} x_{d} ; \ldots ; x_{d} x_{1},x_{d} x_{2} \ldots x_{d}^{2}) ϕ(x)=(1;x1,x2,…xd;x12,x1x2…x1xd;…;xdx1,xdx2…xd2)
注意上面的式子中有很多重复项可以合并。
我们对变换后的样本作内积:
ϕ ( x ) T ϕ ( y ) = 1 + ∑ i = 1 d x i y i + ∑ i = 1 d ∑ j = 1 d x i x j y i y j \phi(x)^{T} \phi(y)=1+\sum_{i=1}^{d} x_{i} y_{i}+\sum_{i=1}^{d} \sum_{j=1}^{d} x_{i} x_{j} y_{i} y_{j} ϕ(x)Tϕ(y)=1+i=1∑dxiyi+i=1∑dj=1∑dxixjyiyj
其中,最后一项可以拆成:
∑ i = 1 d ∑ j = 1 d x i x j y i y j = ∑ i = 1 d x i y i ∑ j = 1 d x j y j \sum_{i=1}^{d} \sum_{j=1}^{d} x_{i} x_{j} y_{i} y_{j}=\sum_{i=1}^{d} x_{i} y_{i} \sum_{j=1}^{d} x_{j} y_{j} i=1∑dj=1∑dxixjyiyj=i=1∑dxiyij=1∑dxjyj
又低维空间的内积可表示为:
x T y = ∑ i = 1 d x i y i x^{T} y=\sum_{i=1}^{d} x_{i} y_{i} xTy=i=1∑dxiyi
所以上面变换后的多项式内积可以写成:
ϕ ( x ) T ϕ ( y ) = 1 + x T y + ( x T y ) 2 \phi(x)^{T} \phi(y)=1+x^{T} y+\left(x^{T} y\right)^{2} ϕ(x)Tϕ(y)=1+xTy+(xTy)2
我们就可以不先进行高维变换,再在高维空间做内积,而是直接利用低维空间的内积计算即可。
SVM中的核技巧:
不使用核函数时支持向量机的最优化问题为:
max 2 ∣ ∣ ω ∣ ∣ \max \frac{2}{|| \omega||} max∣∣ω∣∣2
y i ( ω T x i + b ) ≥ 1 y_{i}(\omega^{T} x_{i}+b) \geq 1 yi(ωTxi+b)≥1
使用核函数将数据集样本从低维映射到高维空间后最优化问题变为:
max 2 ∣ ∣ ω ∣ ∣ \max \frac{2}{||\omega||} max∣∣ω∣∣2
y i ( ω T ϕ ( x i ) + b ) ≥ 1 y_{i}\left(\omega^{T} \phi\left(x_{i}\right)+b\right) \geq 1 yi(ωTϕ(xi)+b)≥1
于是我们可以得到类似的对偶问题:
max α ∑ i = 1 α i − ∑ i ∑ j α i α j y i y j ϕ ( x i ) T ϕ ( x j ) \max_{\alpha} \sum_{i=1} \alpha_{i}-\sum_{i} \sum_{j} \alpha_{i} \alpha_{j} y_{i} y_{j} \phi\left(x_{i}\right)^{T} \phi\left(x_{j}\right) αmaxi=1∑αi−i∑j∑αiαjyiyjϕ(xi)Tϕ(xj)
∑ i α i y i = 0 , α i ≥ 0 \sum_{i} \alpha_{i} y_{i}=0, \alpha_{i} \geq 0 i∑αiyi=0,αi≥0
我们在计算其中的
ϕ ( x i ) ϕ ( x j ) \phi\left(x_{i}\right) \phi\left(x_{j}\right) ϕ(xi)ϕ(xj)
内积时就可以使用核技巧。使用核函数表示对偶问题为:
W ( α ) = 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) − ∑ i = 1 N α i W(\alpha)=\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j} K\left(x_{i}, x_{j}\right)-\sum_{i=1}^{N} \alpha_{i} W(α)=21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)−i=1∑Nαi
分类决策函数表示为:
f ( x ) = s i g n ( ∑ i = 1 N s a i y i ϕ ( x i ) ⋅ ϕ ( x ) + b ) = s i g n ( ∑ i = 1 N s a i y i K ( x i , x ) + b ) f(x)=sign(\sum_{i=1}^{N_{s}} a_{i}y_{i} \phi(x_{i}) \cdot \phi(x)+b)=sign(\sum_{i=1}^{N_{s}} a_{i}y_{i}K(x_{i}, x)+b) f(x)=sign(i=1∑Nsaiyiϕ(xi)⋅ϕ(x)+b)=sign(i=1∑NsaiyiK(xi,x)+b)
支持向量机(SVM)算法原理相关推荐
- 支持向量机SVM算法原理及应用(R)
支持向量机SVM算法原理及应用(R) 2016年08月17日 16:37:25 阅读数:22292更多 个人分类: 数据挖掘实战应用 版权声明:本文为博主原创文章,转载请注明来源. https://b ...
- 支持向量机SVM算法原理笔记2
上篇博客介绍了当样本集是线性可分情况下的SVM算法原理.接下来介绍不存在一个划分超平面可以正确分类的问题,比如说"异或问题". 对于此类问题,可以将样本空间映射到更高维度空间,这样 ...
- 支持向量机SVM算法原理
SVM 的英文叫 Support Vector Machine,中文名为支持向量机.它是常见的一种分类方法,在机器学习中,SVM 是有监督的学习模型. 什么是有监督的学习模型呢?它指的是我们需要事先对 ...
- 支持向量机SVM算法原理笔记1
最近在学习李航编写的<统计学习方法>一书,看到SVM这一章时遇到了一些困难,在翻阅很多资料之后对其有了一定的理解,所以打算写篇博客来记录一下,后面如果有时间也会把前面几章中的算法加以整理. ...
- 【算法原理】支持向量机SVM算法原理
- 机器学习算法 08 —— 支持向量机SVM算法(核函数、手写数字识别案例)
文章目录 系列文章 支持向量机SVM算法 1 SVM算法简介 1.1 引入 1.2 算法定义 2 SVM算法原理 2.1 线性可分支持向量机 2.2 SVM计算过程与算法步骤(有点难,我也没理解透,建 ...
- 【收藏】SVM算法原理(适合有一定基础的人观看)
SVM的英文全称是Support Vector Machines,我们叫它支持向量机.支持向量机是我们用于分类的一种算法.让我们以一个小故事的形式,开启我们的SVM之旅吧. 在很久以前的情人节,一位大 ...
- 支持向量机 (SVM)分类器原理分析与基本应用
转自:穆晨 阅读目录 前言 预备术语 算法原理 如何计算最优超平面 使用SMO - 高效优化算法求解 α 值 非线性可分情况的大致解决思路 小结 回到顶部 前言 支持向量机,也即SVM,号称分类算法, ...
- 小白学习机器学习---第六章:SVM算法原理(1)
SVM的英文全称是Support Vector Machines,我们叫它支持向量机.支持向量机是我们用于分类的一种算法.让我们以一个小故事的形式,开启我们的SVM之旅吧. 在很久以前的情人节,一位大 ...
- svm算法原理_机器学习——分类算法(1)
一. K近邻 KNN算法的基本思想就是在训练集中数据和标签已知的情况下,输入测试数据,将测试数据的特征与训练集中对应的特征进行相互比较,找到训练集中与之最为相似的前K个数据,则该测试数据对应的类别就是 ...
最新文章
- SAP零售行业解决方案初阶 4 – 维护品类
- 2021牛客暑期多校训练营8 OR 相加和与和或-dfs判断假设情况是否有矛盾
- Configuring Locales
- 同一个ip能否两次加入组播_组播IGMPv1/v2/v3精华知识汇总
- bupt summer training for 16 #5 ——数据结构
- 敏捷开发一千零一问系列之十六:如何让开发人员学习产品?
- 初识Visual Studio 2010(四)—— 创建ASP.NET网站
- mac os x 10.11 php7,mac osx 10.11.2安装PHP7提示“configure: error: libcrypto not found!”
- python3 os模块_Python3 os.path() 模块
- Keep in mind用法
- 平面的几种的方程表示
- 金蝶实现EXCEL复制粘贴功能
- 启用邪恶-使用XmlSerializer和一些魔术在Xml中隧道化Xml
- 勒索病毒爆发波及中石油:2万座加油站断网
- GKCTF2020 逆向部分题的复现
- ios APP加密探究几维安全iOS 代码混淆效果参考
- python如何返回一个列表_python如何返回元组,列表或字典的?
- Numpy的tile函数
- 证券从业考试科目如何备考?出题方式是什么?
- 盘点国产青春电影十宗罪
热门文章
- COCO数据集格式解析
- 艰酸的试用期转正申请报告
- centos命令(centos命令行复制粘贴)
- Required field ‘serverProtocolVersion‘ is unset! User: root is not allowed to impersonate root
- 简单模拟Lur 算法
- 【正则表达式】从字符串中提取数字
- 用JS改变html样式
- Java --- 线程同步和异步的区别
- 计算机电池电源转换,图吧小白教程 篇七十七:只需一步,延长MACBOOK电池寿命(硬改电源)...
- 记录一次清理挖矿程序