关于SVM的一点笔记

关于SVM的一点笔记

一. 简单了解

1.感知机(perceptron)

感知机是一种类似于生物中神经细胞功能的人工神经元,它可以把一个或者多个输入(x1x_1, x2x_2, x3x_3, …)根据权重(w1w_1, w2w_2, w3w_3, …)与输入值乘积之和(即jwjxj\sum_{j}w_jx_j)转变为-1或+1输出,而判断的依据是jwjxj\sum_{j}w_jx_j是否大于或者小于某个阈值(threshold),这就是感知机的基本原理,同样可以表述为:
output={1if jwjxj<threshold+1if jwjxjthresholdoutput=\begin{cases} -1 &if \ \sum_{j}w_jx_j<threshold\\ +1 &if \ \sum_{j}w_jx_j≥threshold \end{cases}
如果我们令X={x1x_1, x2x_2, x3x_3, …},W={w1w_1, w2w_2, w3w_3, …},则对向量x\vec{x}∈X,向量w\vec{w}∈W,记
f(x)=sign(xw+b)f(x)=sign(\vec{x} \cdot \vec{w} + b)
式中x\vec{x}为空间的特征向量,w\vec{w}为权值向量(weight),b为阈值,又被称为偏置(bias),xw\vec{x} \cdot \vec{w}x\vec{x}w\vec{w}的点积。
那么有
f(x)={1if xw+b<0+1if xw+b0f(x)=\begin{cases} -1 &if \ \vec{x} \cdot \vec{w} + b<0\\ +1 &if \ \vec{x} \cdot \vec{w} + b≥0 \end{cases}

2. 线性回归

线性回归主要就是要根据已有的数据拟合出一条较为符合预期的直线,用这条直线对新的数据进行合理预测。例如,各类价格走势预测、商品销量预测等。
对于最基本的线性回归问题,我们令其公式为:
h(x)=hθ(x)=θ0+θ1x1+θ2x2+...+θixih(x)=h_θ(x)=θ_0+θ_1x_1+θ_2x_2+...+θ_ix_i
式中,θ0θ_0类似于感知机中的阈值b,θiθ_i则类似于感知机中的权重ww
然后我们需要引入损失函数(cost function):
J(θ)=12i=1m(hθ(x(i))2y(i))2J(θ)=\frac{1}{2}\sum_{i=1}^{m}(h_θ(x^{(i)})^2-y^{(i)})^2
它表示每一项预测值与实际值差平方之和的二分之一,若我们可以找到JJ(θ\theta)的最小值,那么我们就认为函数hθ(x)h_\theta(x)为我们找的线性回归函数。
下面我们讨论如何求得JJ(θ\theta)的最小值 minJJ(θ\theta):
JJ(θ\theta)对每一个θ\theta求偏导,则有:
J(θ)θj=θj12(hθ(x)y)2=212(hθ(x)y)θj(hθ(x)y)=(hθ(x)y)θj(i=0nθixiy)=(hθ(x)y)xj \begin{aligned} \frac{\partial J(\theta)}{\partial \theta_j} &=\frac{\partial }{\partial \theta_j} \frac{1}{2}(h_\theta(x)-y)^2\\ &= 2\cdot\frac{1}{2}(h_\theta(x)-y)\cdot\frac{\partial }{\partial \theta_j} (h_\theta(x)-y)\\ &= (h_\theta(x)-y) \cdot\frac{\partial }{\partial \theta _j}(\sum_{i=0}^n\theta_ix_i-y)\\ &= (h_\theta(x)-y)x_j \end{aligned}
那么我们可以得到:
θj:=θj+αi=1m(y(i)hθ(x(i)))xj(i)\theta_j:=\theta_j+\alpha\sum_{i=1}^m(y^{(i)}-h_\theta(x^{(i)}))x_j^{(i)}
上式即为θj\theta_j梯度下降的数学表达形式,即可得到参数θj\theta_j,从而我们就得到了h(x)h(x)的确切表达式。
但是,我们在拟合时会出现过度拟合的情况,从而我们需要引入另外一项——惩罚项。惩罚项在一定程度上可以防止出现过度拟合的情况。
那么,加入惩罚项后的JJ(θ\theta)方程为:
J(θ)=12i=1m(hθ(x(i))2y(i))2+λj=1nθj2J(θ)=\frac{1}{2}\sum_{i=1}^{m}(h_θ(x^{(i)})^2-y^{(i)})^2+\lambda\sum_{j=1}^n\theta_j^2

3. logistic回归

logistic函数的值域介于0到1之间,其函数表达式为:
logistic=g(z)=11+ezlogistic=g(z)=\frac{1}{1+e^{-z}}
承接线性回归部分,将函数h(x)=hθ(x)=θ0+θ1x1+θ2x2+...+θixih(x)=h_θ(x)=θ_0+θ_1x_1+θ_2x_2+...+θ_ix_i转变为hθ(x)=g(θTx)h_\theta(x)=g(\theta^T\cdot x),那么,hθ(x)h_\theta(x)的函数值将介于0与1之间,使其结果概率化。与此同时,当当概率大于等于0.5,就判断为1,否则,判断为0。
从而,我们得到0与1两类数据。

二、SVM的实现

1.数学建模

SVM算法实际上就是一个数学优化问题,我们需要在一个多维空间上找到一个超平面(如果是二维平面,那么这个超平面就是一条直线),使到此超平面的距离最小的点的距离最大(这个距离我们称之为Margin)。鉴于表述与理解的方便,我们就以二维平面为例进行引入。关于SVM的一点笔记
我们首先设上图中黄色直线的方程为Axx+Byy+C=0,然后把xx换为x1x_1yy换为x2x_2,那么原直线方程就变为了Ax1x_1+Bx2x_2+C=0,同时,我们还可以将此方程写为[AB][x1x2]+C=0 \left[ \begin{matrix} A&B\\ \end{matrix} \right] \left[ \begin{matrix} x_1\\ x_2 \end{matrix} \right]+C=0
若我们令
[AB]=ωT[x1x2]=xC=γ \left[ \begin{matrix} A&B\\ \end{matrix} \right]=\omega^T, \left[ \begin{matrix} x_1\\ x_2 \end{matrix} \right]=x, C=\gamma
那么上述方程还可写为ωTx+γ=0\omega^T\cdot x+\gamma=0,实际上,对于多维空间而言,其超平面上式也是适用的。
由高中数学知识我们就可以得到,空间内一点到该超平面的距离d满足:
d=ωTx+γω d=\frac{|\omega^T\cdot x+\gamma|}{||\omega||}
式中,ω||\omega||为向量ω的模,xx为样本点的坐标,ωγ即为要求超平面的参数。
如上图所示,我们假设已经找到了一个超平面ωTx+γ=0\omega^T\cdot x+\gamma=0且距离超平面最近的点到此超平面的距离为d(即黄色线与粉红线之间的距离为d),那么则对此空间内任意一点都有
ωTx+γωd\frac{|\omega^T\cdot x+\gamma|}{||\omega||}≥d
如果我们把在超平面以上的判定为+1类,把在超平面以下的判定为-1类,那么有
y(i)={1if ωTx+γωd+1if ωTx+γωdy^{(i)}=\begin{cases} -1 &if \ \frac{\omega^T\cdot x+\gamma}{||\omega||}≤-d\\ +1 &if \ \frac{\omega^T\cdot x+\gamma}{||\omega||}≥d \end{cases}
整理可得
y(i)={1if ωTx+γωd1+1if ωTx+γωd1y^{(i)}=\begin{cases} -1 &if \ \frac{\omega^T\cdot x+\gamma}{||\omega||\cdot d}≤-1\\ +1 &if \ \frac{\omega^T\cdot x+\gamma}{||\omega||\cdot d}≥1 \end{cases}
若此时,我们令ωTωd=ωbT\frac{\omega^T}{||\omega||\cdot d}=\omega^T_bγωd=γb\frac{\gamma}{||\omega||\cdot d}=\gamma_b
那么有
y(i)={1if ωbTx+γb1+1if ωbTx+γb1y^{(i)}=\begin{cases} -1 &if \ \omega^T_b\cdot x+\gamma_b≤-1\\ +1 &if \ \omega^T_b\cdot x+\gamma_b≥1 \end{cases}
此时,若我们就把ωbT,γb\omega^T_b,\gamma_b叫做ωT,γ\omega^T,\gamma,那么我们可以得到y(i)={1if ωTx+γ1+1if ωTx+γ1y^{(i)}=\begin{cases} -1 &if \ \omega^T\cdot x+\gamma≤-1\\ +1 &if \ \omega^T\cdot x+\gamma≥1 \end{cases}
利用一些数学技巧,我们可以了解到上式等价于
y(i)(ωTx(i)+γ)1 y^{(i)}\cdot (\omega^T\cdot x^{(i)}+\gamma)≥1
通过上述推导我们可以知道,只有存在一个x(i)x^{(i)}使得上式中的等号成立时,我们才能找到那个支持向量,从而可以求得最大的Margin,得到超平面方程。
当上式中的等号成立时,我们有
d=ωTx+γω=1ωd=\frac{|\omega^T\cdot x+\gamma|}{||\omega||}=\frac{1}{||\omega||}
则,我们需要求min1ω\frac{1}{||\omega||},等价于求min1ω2\frac{1}{||\omega||^2}(鉴于以后求导的方便)
我们便可以针对SVM给出其数学描述:
minω,γ12ω2s.t.  y(i)(ωTx(i)+γ)1,i=1,2,3,...,mmin_{\omega,\gamma}\frac{1}{2}||\omega||^2\\ s.t. \ \ y^{(i)}\cdot (\omega^T\cdot x^{(i)}+\gamma)≥1,i=1,2,3,...,m