
支持向量机(SVM)
假设
假设给定一个特征空间上的训练数据集:
T=\left { \left ( x_{1},y_{1} \right ),\left ( x_{2},y_{2} \right )… \left (x_{N},y_{N} \right) \right }, x_{i}\in R^{n}
其中xi∈Rn,yi∈+1,−1,i=1,2,…N
xi为第i个实例,N>1, xi为向量
yi为xi的类标记,即:当yi=+1时, 称为xi正例;当yi=−1时, 称为xi负例。
(xi,yi) 称为样本点
线性可分支持向量机
给定线性可分训练数据集,通过间隔最大化得到的分离超平面为
ωT⋅Φ(x)+b=0
相应的分类决策函数f(x)=sign(ωT⋅Φ(x)+b), 称为线性可分支持向量机。Φ(x)是某个确定的特征空间转换函数,将x映射到更高维度。
推导目标函数
设y(x)=ωT⋅Φ(x)+b, 有:yi⋅y(x)>0,对参数进行等比例缩放,从而:
yi⋅y(x)|ω|=yi⋅(ωT⋅Φ(xi)+b)|ω|
目标函数:
max\left { \frac{1}{\left | \omega \right |} min\left [ y_{i}\cdot\left ( \omega^{T}\cdot\Phi \left ( x_{i} \right )+b \right ) \right ]\right }
约束条件:
yi⋅(ωT⋅Φ(xi)+b)⩾1
通过等比例缩放的方法,将两类函数值的绝对值满足大于等于1,则新目标函数:
max1|ω|
为计算需要,转换得:
min12|ω|2
拉格朗日乘子法求解
$$L\left ( \omega ,b,\alpha \right ) = \frac{1}{2}\left | \omega \right |^{2}-\sum_{i=1}^{n} \alpha {i}\left ( y{i}\cdot\left ( \omega^{T}\cdot\Phi \left ( x_{i} \right )+b \right)-1 \right )$$
原问题的极小极大问题,其对偶问题是极大极小问题:
minmaxL(ω,b,α)⇒maxminL(ω,b,α)
将拉格朗日函数L分别对w,b求偏导:
$$\frac{\partial L}{\partial \omega }=0 \Rightarrow \omega =\sum_{i=1}^{n}\alpha {i}y{i}\Phi \left ( x_{i} \right )$$
$$\frac{\partial L}{\partial b}=0 \Rightarrow 0 =\sum_{i=1}^{n}\alpha {i}y{i}$$
代入拉格朗日函数,推导得:
\alpha ^{*} = max\left { \sum_{i=1}^{n}\alpha_{i} - \frac{1}{2}\sum_{i,j=1}^{n}\alpha_{i}\alpha_{j}y_{i}y_{j}\Phi^{T}\left ( x_{i} \right ) \Phi \left ( x_{j} \right ) \right }
即:
min\left { \frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_{i}\alpha_{j}y_{i}y_{j}\left(\Phi\left ( x_{i} \right ) \Phi \left ( x_{j} \right )\right) -\sum_{i=1}^{n}\alpha_{i} \right }
n∑i=1αiyi=0,αi⩾1,i=1,2,…,n
线性可分支持向量机学习算法
- 计算:
$$\omega^{}=\sum_{i=1}^{n}\alpha_{i}^{}y_{i}\Phi\left( x_{i} \right)$$
$$b^{}=y_{i} - \sum_{i=1}^{n}\alpha_{i}^{}y_{i}\left(\Phi\left ( x_{i} \right ) \cdot \Phi \left ( x_{j} \right )\right) $$
- 求的超平面
$$\omega^{}\cdot\Phi \left ( x \right )+b^{}=0$$
- 分类决策函数
$$f\left ( x \right ) = sign\left ( \omega^{}\cdot\Phi \left ( x \right )+b^{} \right )$$
线性支持向量机
若数据线性不可分,则增加松弛因子ξi⩾0,使函数间隔加上松弛度量大于等于1,即约束条件变为:
yi(ω⋅xi+b)⩾1−ξi
线性svm的目标函数:
min12|ω|2+CN∑i=1ξi,ξi⩾0,i=1,2,…,n
带松弛因子的SVM拉格朗日函数:
$$L\left(\omega,b,\xi,\alpha,\mu\right)\equiv \frac{1}{2}|\omega|^2 + C\sum_{i=1}^{n}\xi_{i} - \sum_{i=1}^{n} \alpha {i}\left ( y{i}\left ( \omega\cdot\Phi \left ( x_{i} \right )+b \right)-1 +\xi_{i}\right ) - \sum_{i=1}^{n}\mu_{i}\xi_{i}$$
对ω,b,ξ求偏导:
$$\frac{\partial L}{\partial \omega }=0 \Rightarrow \omega =\sum_{i=1}^{n}\alpha {i}y{i}\Phi \left ( x_{i} \right )$$
$$\frac{\partial L}{\partial b}=0 \Rightarrow 0 =\sum_{i=1}^{n}\alpha {i}y{i}$$
∂L∂ξi=0⇒C−αi−μi=0
代入目标函数,得:
minL(ω,b,ξ,α,μ)=−12n∑i=1n∑j=1αiαjyiyjΦT(xi)Φ(xj)+n∑i=1αi
对上式求关于α得极大,得到:
max−12n∑i=1n∑j=1αiαjyiyjΦT(xi)Φ(xj)+n∑i=1αi
n∑i=1αiyi=0
C−αi−μi=0
0⩽αi⩽C
μi⩾0,i=1,2,…,n
对偶问题:
min12n∑i=1n∑j=1αiαjyiyjΦT(xi)Φ(xj)−n∑i=1αi
线性支持向量机学习算法
- 计算:
$$\omega^{}=\sum_{i=1}^{n}\alpha_{i}^{}y_{i}\Phi\left( x_{i} \right)$$
$$b^{}=y_{i} - \sum_{i=1}^{n}\alpha_{i}^{}y_{i}\left(\Phi\left ( x_{i} \right ) \cdot \Phi \left ( x_{j} \right )\right) $$
计算时,需要满足条件0<αj<C的向量,实践中往往取支持向量的所有值取平均,作为b∗
- 求的超平面
$$\omega^{}\cdot\Phi \left ( x \right )+b^{}=0$$
- 分类决策函数
$$f\left ( x \right ) = sign\left ( \omega^{}\cdot\Phi \left ( x \right )+b^{} \right )$$
非线性支持向量机
核函数
可以使用和函数,将原始输入空间映射到新的特征空间,从而使得原本线性不可分的样本可能在核空间可分。
多项式和函数: κ(x1,x2)=(x1⋅x2+c)d
高斯核RBF函数:κ(x1,x2)=exp(−γ⋅|x1−x2|2)
Sigmoid核函数:κ(x1,x2)=tanh(x1⋅x2+c)
在实际应用中,往往依赖先验领域知识或交叉验证等方案才能选择有效的核函数,如果没有更多先验信息,则使用高斯核函数。
实践1-鸢尾花分类
1.python实现鸢尾花分类代码
1 | # -*- coding: utf-8 -* |
2.鸢尾花分类结果
1 | 训练集准确率: 0.966666666667 |
实践2-手写体
1.python实现手写体代码
1 | # -*- coding:utf-8 -*- |
2.实验结果
1 | Load Training File Start... |
Be the first person to leave a comment!