博客园相关内容值得一看。SVMSVMSVM模型想要找到一个最鲁棒(即某些点更难划分之后结果仍然不变)的超平面来划分两类样本,当训练样本线性可分时,通过硬间隔最大化找到线性可分支持向量机;当训练样本近似线性可分时,通过软间隔最大化可以找到线性支持向量机;当训练样本线性不可分时,通过引入核技巧及软间隔最大化可以找到非线性支持向量机,即在高维空间中找线性支持向量机。假设标签是+1/−1+1/-1+1/−1,超平面是wTx+b=0w^Tx+b=0wTx+b=0,给定数据xxx,决策函数是sign(wTx+b)sign(w^Tx+b)sign(wTx+b),那么yi(wTxi+b)>0y_i(w^Tx_i+b)>0yi(wTxi+b)>0表示分类正确,xix_ixi到平面的距离是∣wTx+b∣∣∣w∣∣\frac{|w^Tx+b|}{||w||}∣∣w∣∣∣wTx+b∣,当∣∣w∣∣||w||∣∣w∣∣确定时,yi(wTxi+b)y_i(w^Tx_i+b)yi(wTxi+b)还表示了xix_ixi到超平面的相对距离,这个值越大表示xix_ixi距离最优超平面wTx+b=0w^Tx+b=0wTx+b=0的距离越远,分类更确信,定义样本xix_ixi的函数间隔是γi^=yi(wTxi+b)\hat{\gamma_i}=y_i(w^Tx_i+b)γi^=yi(wTxi+b),数据集的函数间隔是γ^=miniγi^\hat{\gamma}=min_i\hat{\gamma_i}γ^=miniγi^,样本xix_ixi的几何间隔是γi=yi(wTxi+b)∣∣w∣∣\gamma_i=\frac{y_i(w^Tx_i+b)}{||w||}γi=∣∣w∣∣yi(wTxi+b),数据集的几何间隔是γ=miniγi{\gamma}=min_i{\gamma_i}γ=miniγi,它们的关系是γ=γ^∣∣w∣∣\gamma=\frac{\hat{\gamma}}{||w||}γ=∣∣w∣∣γ^,当∣∣w∣∣=1||w||=1∣∣w∣∣=1时两者相等。
点(x,y)(x,y)(x,y)到线ax+by+c=0ax+by+c=0ax+by+c=0的距离是∣ax+by+c∣a2+b2\frac{|ax+by+c|}{\sqrt{a^2+b^2}}a2+b2∣ax+by+c∣,即xxx到wTx+b=0w^Tx+b=0wTx+b=0的距离是∣wTx+b∣∣∣w∣∣\frac{|w^Tx+b|}{||w||}∣∣w∣∣∣wTx+b∣,推导过程:
- 直线上的向量以及与之共线的向量叫做直线的方向向量,任取直线上两点,求它们两点组成的向量就是方向向量。这里取(0,−cb)(0,-\frac{c}{b})(0,−bc)和(−ca,0)(-\frac{c}{a},0)(−ac,0),它们相减就是方向向量(−ca,cb)(-\frac{c}{a},\frac{c}{b})(−ac,bc),同乘abc\frac{ab}{c}cab不改变向量的方向,得到(−b,a)(-b,a)(−b,a)
- 直线的法向量是与直线方向向量正交的向量,容易得到是(a,b)(a,b)(a,b),单位法向量即1a2+b2(a,b)\frac{1}{\sqrt{a^2+b^2}}(a,b)a2+b21(a,b)
- 向量aaa在向量bbb上的投影是∣∣a∣∣cosθ||a||cos\theta∣∣a∣∣cosθ,即aTb∣∣b∣∣\frac{a^Tb}{||b||}∣∣b∣∣aTb
- 在直线上任取一点,求点(x,y)(x,y)(x,y)与其组成的向量在单位法向量上的投影即是点到直线的距离。这里取(0,−cb)(0,-\frac{c}{b})(0,−bc),(x,y+cb)(x,y+\frac{c}{b})(x,y+bc)在单位法向量1a2+b2(a,b)\frac{1}{\sqrt{a^2+b^2}}(a,b)a2+b21(a,b)上的投影是aTb∣∣b∣∣=1a2+b2(ax+by+c)1=∣ax+by+c∣a2+b2\frac{a^Tb}{||b||}=\frac{1}{\sqrt{a^2+b^2}}\frac{(ax+by+c)}{1}=\frac{|ax+by+c|}{\sqrt{a^2+b^2}}∣∣b∣∣aTb=a2+b211(ax+by+c)=a2+b2∣ax+by+c∣
- 上面的推导过程可以推广到nnn维空间中,即xxx到wTx+b=0w^Tx+b=0wTx+b=0的距离是∣wTx+b∣∣∣w∣∣\frac{|w^Tx+b|}{||w||}∣∣w∣∣∣wTx+b∣
硬间隔最大化想要找到几何间隔最大化的超平面:
maxw,bγs.t.yi(wTxi+b)∣∣w∣∣≥γ,i=1,2,…,Nmax_{w,b}\ \gamma\\ s.t.\ \frac{y_i(w^Tx_i+b)}{||w||}\ge\gamma,i=1,2,\dots,N maxw,b γs.t. ∣∣w∣∣yi(wTxi+b)≥γ,i=1,2,…,N
考虑几何间隔和函数间隔之间的关系,这个问题可以转化为:
maxw,bγ^∣∣w∣∣s.t.yi(wTxi+b)≥γ^,i=1,2,…,Nmax_{w,b}\ \frac{\hat{\gamma}}{||w||}\\s.t.\ y_i(w^Tx_i+b)\ge\hat{\gamma},i=1,2,\dots,N maxw,b ∣∣w∣∣γ^s.t. yi(wTxi+b)≥γ^,i=1,2,…,N
函数间隔γ^\hat{\gamma}γ^的取值不影响最优化问题的解,这里固定为111,最优化1∣∣w∣∣\frac{1}{||w||}∣∣w∣∣1和最优化12∣∣w∣∣2\frac{1}{2}||w||^221∣∣w∣∣2等价,于是得到线性可分支持向量机基本型,这是一个凸二次规划问题:
maxw,b12∣∣w∣∣2s.t.yi(wTxi+b)≥1,i=1,2,…,Nmax_{w,b}\ \frac{1}{2}||w||^2\\s.t.\ y_i(w^Tx_i+b)\ge1,i=1,2,\dots,N maxw,b 21∣∣w∣∣2s.t. yi(wTxi+b)≥1,i=1,2,…,N
《统计学习方法》中提到函数间隔γ^\hat{\gamma}γ^的取值不影响最优化问题的解,这里有点模糊
支持向量是训练集中与超平面最近的样本点,它使得约束条件的等号成立。正例支持向量使得wTxi+b=+1w^Tx_i+b=+1wTxi+b=+1,反例支持向量使得wTxi+b=−1w^Tx_i+b=-1wTxi+b=−1,这两个点之间的距离2∣∣w∣∣\frac{2}{||w||}∣∣w∣∣2称为间隔,最优超平面的解只与这些支持向量相关,去掉其他点解不会发生变化,这也可以从西瓜书124页KKTKKTKKT条件的解释中得到(αi>0\alpha_i>0αi>0的那些样本是支持向量),引入拉格朗日乘子之后,原问题转化对偶问题:
maxα∑i=1Nαi−12∑i=1N∑j=1NαiαjyiyjxiTxjs.t.∑i=1Nαiyi=0αi≥0,i=1,2,…,Nmax_\alpha\ \sum_{i=1}^N\alpha_i-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jx^T_ix_j\\ s.t.\ \sum_{i=1}^N\alpha_iy_i=0\\ \alpha_i\ge0,i=1,2,\dots,N maxα i=1∑Nαi−21i=1∑Nj=1∑NαiαjyiyjxiTxjs.t. i=1∑Nαiyi=0αi≥0,i=1,2,…,N
通用的二次规划算法求解这个最优化问题时,开销与训练样本数成正比,为了避开这个问题,提出使用SMOSMOSMO算法求解最优alphaalphaalpha,再用w=∑αiyixiw=\sum \alpha_iy_ix_iw=∑αiyixi和b=1∣S∣∑s∈S(ys−∑i∈SαiyixiTxs)b=\frac{1}{|S|}\sum_{s\in S}(y_s-\sum_{i\in S}\alpha_iy_ix^T_ix_s)b=∣S∣1∑s∈S(ys−∑i∈SαiyixiTxs)(S={i∣αi>0,i=1,2,…,N}S=\{i|\alpha_i>0,i=1,2,\dots,N\}S={i∣αi>0,i=1,2,…,N},即支持向量的下标集合)得到分类模型sign(wTx+b)sign(w^Tx+b)sign(wTx+b)
当样本中存在一些特异点,去掉这些特异点后剩下的样本大部分是线性可分的,这样的问题是近似可分的问题,为了解决这些问题对每个样本点(xi,yi)(x_i,y_i)(xi,yi)引入松弛变量ξi\xi_iξi,允许样本点满足更松弛的条件yi(wTxi+b)≥1−ξiy_i(w^Tx_i+b)\ge1-\xi_iyi(wTxi+b)≥1−ξi,但同时在优化目标上增加惩罚ξi\xi_iξi,并有参数CCC调节,线性不可分的线性支持向量机学习问题就转化成了下面的原始问题:
maxw,b12∣∣w∣∣2+C∑i=1Nξis.t.yi(wTxi+b)≥1−ξi,i=1,2,…,Nξi≥0,i=1,2,…,Nmax_{w,b}\ \frac{1}{2}||w||^2+C\sum_{i=1}^{N}\xi_i \\s.t.\ y_i(w^Tx_i+b)\ge1-\xi_i,i=1,2,\dots,N\\ \xi_i\ge0,i=1,2,\dots,N maxw,b 21∣∣w∣∣2+Ci=1∑Nξis.t. yi(wTxi+b)≥1−ξi,i=1,2,…,Nξi≥0,i=1,2,…,N
同样引入拉格朗日乘子后转化为对偶问题:
maxα∑i=1Nαi−12∑i=1N∑j=1NαiαjyiyjxiTxjs.t.∑i=1Nαiyi=00≤αi≤C,i=1,2,…,Nmax_\alpha\ \sum_{i=1}^N\alpha_i-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jx^T_ix_j\\ s.t.\ \sum_{i=1}^N\alpha_iy_i=0\\ 0\le\alpha_i\le C,i=1,2,\dots,N maxα i=1∑Nαi−21i=1∑Nj=1∑NαiαjyiyjxiTxjs.t. i=1∑Nαiyi=00≤αi≤C,i=1,2,…,N
支持向量的分析也可以看这里,线性支持向量机的问题还有另一种解释是最小化目标函数:
∑i=1N[1−yi(wTxi+b)]++λ∣∣w∣∣2[z]+=max(z,0)\sum_{i=1}^N[1-y_i(w^Tx_i+b)]_++\lambda ||w||^2\\ [z]_+=max(z,0) i=1∑N[1−yi(wTxi+b)]++λ∣∣w∣∣2[z]+=max(z,0)
第一项是合页损失函数,是经验损失,第二项是正则化项。合页损失要求函数间隔大于111时损失才为000,否则损失是1−yi(wTxi+b)1-y_i(w^Tx_i+b)1−yi(wTxi+b),要求更高。
SMOSMOSMO算法每次选择两个αi,αj\alpha_i,\alpha_jαi,αj来做优化,其他N−2N-2N−2个α\alphaα固定(只选择一个αi\alpha_iαi,固定其他N−1N-1N−1个不可以,因为存在约束条件∑i=1Nαiyi=0\sum_{i=1}^N\alpha_iy_i=0∑i=1Nαiyi=0,其他N−1N-1N−1个α\alphaα可以导出剩下的一个),整体算法包括选择一个自由变量,再通过约束条件确定另一个,然后通过解析方法求解两个变量的二次规划问题,具体过程可以看这里,《机器学习实战》中简化版没有选择《统计机器学习》中提到的使∣E1−E2∣|E_1-E_2|∣E1−E2∣最大的α2\alpha_2α2,在完整版中实现了《统计机器学习》提到的第二个变量的选择,以 optStruct 缓存了所有的EiE_iEi值
当样本在某个空间中可用超曲面正确区分时,可以通过核技巧将原问题中的输入空间上的超曲面转换成特征空间中的超平面问题,使得分类器是的模型变为f(x)=sign(wTϕ(x)+b)f(x)=sign(w^T\phi(x)+b)f(x)=sign(wTϕ(x)+b),由于在求解对偶问题时需要计算ϕT(x)ϕ(z)\phi^T(x)\phi(z)ϕT(x)ϕ(z),通常很困难,因此为了避开这个障碍,使用核技巧,定义核函数K(x,z)=ϕT(x)ϕ(z)K(x,z)=\phi^T(x)\phi(z)K(x,z)=ϕT(x)ϕ(z),其中ϕ(x)\phi(x)ϕ(x)就是映射函数,将输入空间映射到特征空间。引入适当核函数就可以学习非线性支持向量机,核函数的选择需要慎重考虑:
maxα∑i=1Nαi−12∑i=1N∑j=1NαiαjyiyjK(xi,xj)s.t.∑i=1Nαiyi=00≤αi≤C,i=1,2,…,Nf(x)=sign(∑i=1NαiyiK(x,xi)+b)max_\alpha\ \sum_{i=1}^N\alpha_i-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jK(x_i,x_j)\\s.t.\ \sum_{i=1}^N\alpha_iy_i=0\\0\le\alpha_i\le C,i=1,2,\dots,N\\ f(x)=sign(\sum_{i=1}^N\alpha_iy_iK(x,x_i)+b) maxα i=1∑Nαi−21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)s.t. i=1∑Nαiyi=00≤αi≤C,i=1,2,…,Nf(x)=sign(i=1∑NαiyiK(x,xi)+b)
输入空间是实际的输入张成的空间,特征空间是模型实际学习所用的数据张成的空间
西瓜书中提到"有了K(x,z)K(x,z)K(x,z)这样的函数,就不必直接取计算高维甚至无穷维特征空间的内积"不太理解,核函数本身的定义不是也是内积吗
支持向量回归可以看这