Jordan Lecture Note-8: The Sequential Minimal Optimization Algorithm (SMO).
本文主要介绍用于解决SVM对偶模型的算法,它于1998年由John Platt在论文“Sequential Minimal Optimization:A Fast Algorithm for Training Support Vector Machines”中提出的。这篇笔记还参考了某篇博客,但由于是一年前的事了,暂时没找到这篇博客,所以没有引用出来,希望该篇博客的主人见谅。
(1)解决的问题。
SMO 算法解决的是 soft SVM 对偶问题。其模型为:
\begin{align}\mathop{\max}_{\alpha}&\quad W(\alpha)=\sum_{i=1}^n\alpha_i-\frac{1}{2}\sum_{i,j=1}^ny_iy_j\alpha_i\alpha_j\langle x_i,x_j\rangle\nonumber\\\mathop{s.t.}&\quad 0\leq\alpha_i\leq C\nonumber\\&\quad\sum_{i=1}^n\alpha_iy_i=0\label{model:SoftSVMDual}\end{align}
不失一般性,可以将$\langle x_i,y_j\rangle$替换为核函数,记为$K_{ij}$。对应的KKT条件为:
- $\alpha_i=0\Longrightarrow y_i[x_i^\prime w+b]\geq 1$.
- $\alpha_i=C\Longrightarrow y_i[x_i^\prime w+b]\leq 1$.
- $0<\alpha_i<C\Longrightarrow y_i[x_i^\prime w+b]=1$.
(2)思路。
对模型\ref{model:SoftSVMDual}(二次规划问题,QP),如果采用 interior point methods (比如 the projected conjugate gradient algorithm)的话,当训练集的数据量很大时,将产生一个非常大的矩阵,这对内存的要求以及效率影响非常大。SMO的思路就是把大的QP问题分解成一系列小的QP问题。具体点就是将向量$\alpha=(\alpha_1,\alpha_2,\cdots,\alpha_n)$中的大部分均固定住,只取其中的两个分量为变量,然后求解模型\ref{model:SoftSVMDual}。 其主要步骤如下:
repeat till convergence{
- 采用启发式的方法选取一对$\alpha_i,\alpha_j$,然后固定其他分量;
- 在$\alpha_i,\alpha_j$为变量的情况下求解模型\ref{model:SoftSVMDual},更新$\alpha_i,\alpha_j$。
}
(3)SMO分析。
不失一般性,我们假设选取的点为$\alpha_1,\alpha_2$,由限制条件$\sum_{i=1}^n\alpha_iy_i=0$可知$y_1\alpha_1+y_2\alpha_2=-\sum_{i=3}^n\alpha_iy_i\triangleq k$,其中$k$为常数。又由限制条件$0\leq\alpha_i\leq C$可知,可行解被限制在如下的两个盒子里。
对第二个限制条件$y_1\alpha_1+y_2\alpha_2=k$进行讨论。
1)当$y_1\neq y_2$时,$\alpha_1-\alpha_2=k$。设$\alpha_2$的上下界为$L,H$。
若$k\geq 0$,则$\alpha_1,\alpha_2$只能在图1中直线一的实线部分,则此时$L=0,H=C-k$;
若$k< 0$,则$\alpha_1,\alpha_2$只能在图1中直线二的实线部分,则此时$L=-k,H=C$;
2) 当$y_1=y_2$时,$\alpha_1+\alpha_2=k$。
若$0\leq k\leq C$,则$\alpha_1,\alpha_2$只能在图2中直线一的实线部分,则此时$L=0,H=k$;
若$k>C$,则$\alpha_1,\alpha_2$只能在图2中直线二的实线部分,则此时$L=k-C,H=C$。
综上,$\alpha_2$的取值范围为: $L\leq\alpha_2\leq H$。
对目标函数进行转化:
\begin{align*}W(\alpha_2)&=\sum_{i=1}^n\alpha_i-\frac{1}{2}\sum_{i=1}^n\sum_{j=1}^ny_iy_jK_{ij}\alpha_i\alpha_j\\&=\alpha_1+\alpha_2+\sum_{i=3}^n\alpha_i-\frac{1}{2}\sum_{i=1}^n(\sum_{j=1}^2y_iy_jK_{ij}\alpha_i\alpha_j+\sum_{j=3}^ny_iy_jK_{ij}\alpha_i\alpha_j)\\&=\alpha_1+\alpha_2+\sum_{i=3}^n\alpha_i-\frac{1}{2}\sum_{i=1}^2(\sum_{j=1}^2y_iy_jK_{ij}\alpha_i\alpha_j+\sum_{j=3}^ny_iy_jK_{ij}\alpha_i\alpha_j)\\&\quad-\frac{1}{2}\sum_{i=3}^n(\sum_{j=1}^2y_iy_jK_{ij}\alpha_i\alpha_j+\sum_{j=3}^ny_iy_jK_{ij}\alpha_i\alpha_j)\\&=\alpha_1+\alpha_2+\sum_{i=3}^n\alpha_i-\frac{1}{2}\sum_{i=1}^2\sum_{j=1}^2y_iy_j\alpha_i\alpha_jK_{ij}-\sum_{i=1}^2\sum_{j=3}^ny_iy_j\alpha_i\alpha_jK_{ij}-\frac{1}{2}\sum_{i=3}^n\sum_{j=3}^ny_iy_j\alpha_i\alpha_jK_{ij}\\&=\alpha_1+\alpha_2-\frac{1}{2}\alpha_1^2K_{11}-\frac{1}{2}\alpha_2^2K_{22}-y_1y_2\alpha_1\alpha_2K_{12}-y_1\alpha_1\sum_{j=3}^ny_j\alpha_jK_{1j}-y_2\alpha_2\sum_{j=3}^ny_j\alpha_jK_{2j}\\&\quad +\sum_{i=3}^n\alpha_i-\frac{1}{2}\sum_{i=3}^n\sum_{j=3}^ny_iy_j\alpha_i\alpha_jK_{ij}\\&=\alpha_1+\alpha_2-\frac{1}{2}K_{11}\alpha_1^2-\frac{1}{2}K_{22}\alpha_2-y_1y_2K_{12}\alpha_1\alpha_2-y_1\alpha_1v_1-y_2\alpha_2v_2+\text{Constant}\end{align*}
其中$v_1=\sum_{j=3}^ny_j\alpha_jK_{1j},v_2=\sum_{j=3}^ny_j\alpha_jK_{2j}$。
由$\sum_{i=1}^ny_i\alpha_i=0\Longrightarrow \alpha_1y_1+\alpha_2y_2=k\Longrightarrow \alpha_1=r-s\alpha_2$,其中$r=ky_1$为常数,$s=y_1y_2$。 将$\alpha_1=r-s\alpha_2$代入上式得到:
\begin{align*}W(\alpha_2)=&r-s\alpha_2+\alpha_2-\frac{1}{2}K_{11}(r-s\alpha_2)^2-\frac{1}{2}K_{22}\alpha_2^2-sK_{12}\alpha_2(r-s\alpha_2)\\&\quad-y_1(r-s\alpha_2)v_1-y_2\alpha_2v_2+\text{Constant}\end{align*}
对$W(\alpha)$求导并令导数为0得:
\begin{align*}\frac{dW(\alpha_2)}{d\alpha_2}=-s+1+sK_{11}(r-s\alpha_2)-K_{22}\alpha_2-srK_{12}+2K_{12}\alpha_2+y_1v_1s-y_2v_2=0\end{align*}
$$\Longrightarrow(K_{11}+K_{22}-2K_{12})\alpha_2=1-y_1y_2+y_1y_2r(K_{11}-K_{12})+y_2(v_1-v_2)$$
\begin{equation}\Longrightarrow\alpha_2=\frac{y_2[y_2-y_1+y_1r(K_{11}-K_{12})+v_1-v_2]}{K_{11}+K_{22}-2K_{12}}\label{equ:solutionOfAlpha2}\end{equation}
将$v_1=\sum_{j=3}^ny_j\alpha_jK_{1j}, v_2=\sum_{j=3}^ny_j\alpha_jK_{2j}, r=\alpha_1+s\alpha_2=\alpha_1^{old}+s\alpha_2^{old}$ 代入式子\ref{equ:solutionOfAlpha2}得:
\begin{equation}\alpha_2^{new}=\frac{y_2[y_2-y_1+y_1(\alpha_1^{old}+s\alpha_2^{old})(K_{11}-K_{12})+\sum_{j=3}^ny_j\alpha_jK_{1j}-\sum_{i=3}^ny_i\alpha_iK_{2i}]}{K_{11}+K_{22}-2K_{12}}\label{equ:updateAlpha2}\end{equation}
记$f(x_i)=\sum_{j=1}^ny_j\alpha_jK_{ij}+b$,即$f(x_i)=w^\prime x_i+b$,故可得$v_1,v_2$:
\begin{equation}v_1=\sum_{j=3}^ny_j\alpha_jK_{1j}=f(x_1)-b-y_1\alpha_1K_{11}-y_2\alpha_2K_{12}=f(x_1)-b-y_1\alpha_1^{old}K_{11}-y_2\alpha_2^{old}K_{12}\label{equ:v1}\end{equation}
\begin{equation}v_2=\sum_{j=3}^ny_j\alpha_jK_{2j}=f(x_2)-b-y_1\alpha_1K_{21}-y_2\alpha_2K_{22}=f(x_2)-b-y_1\alpha_1^{old}K_{21}-y_2\alpha_2^{old}K_{22}\label{equ:v2}\end{equation}
将式子\ref{equ:v1}和\ref{equ:v2}代入式子\ref{equ:updateAlpha2}得:
\begin{align}\alpha_2^{new}&=\frac{y_2[y_2-y_1+y_1(\alpha_1^{old}+s\alpha_2^{old})(K_{11}-K_{12})+f(x_1)-f(x_2)\\-y_1\alpha_1^{old}K_{11}-y_2\alpha_2^{old}K_{12}+y_1\alpha_1^{old}+y_2\alpha_2^{old}K_{22}]}{K_{11}+K_{22}-2K_{12}}\nonumber\\&=\frac{y_2[y_2-y_1+y_1\alpha_1^{old}(K_{11}-K_{12})+y_2\alpha_2^{old}(K_{11}-K_{12})\\+y_1\alpha_1^{old}(K_{21}-K_{11})+y_2\alpha_2^{old}(K_{22}-K_{21})+f(x_1)-f(x_2)]}{K_{11}+K_{22}-2K_{12}}\nonumber\\&=\frac{y_2[y_2-y_1+y_2\alpha_2^{old}(K_{11}-K_{12}+K_{22}-K_{21})+f(x_1)-f(x_2)]}{K_{11}+K_{22}-K_{12}}\nonumber\\&=\alpha_2^{old}+\frac{y_2[(f(x_1)-y_1)-(f(x_2)-y_2)]}{K_{11}+K_{22}-2K_{12}}\nonumber\\&\triangleq\alpha_2^{old}+\frac{y_2(E_1-E_2)}{\eta}\label{equ:newUpdateAlpha2}\end{align}
其中$E_i=f(x_i)-y_i$表示误差项,$\eta=K_{11}+K_{22}-2K_{12}=\|\Phi(x_1)-\Phi(x_2)\|^2$.($\Phi$是原始空间向特征空间的映射,其中$\sqrt{\eta}$可以看成是一个度量两个样本的相似性距离)
得到$\alpha_2^{old}$的更新式子后,由于$\alpha_2^{old}$也必须落入限制盒子里,故必须对$\alpha_2^{new}$进行限制,即:
\begin{equation}\alpha_2^{new.clipped}=\left\{\begin{array}&L\quad\quad\quad\alpha_2^{new}\leq L\\\alpha_2^{new}\quad\quad\quad L<\alpha_2^{new}<H\\H\quad\quad\quad\alpha_2^{new}\geq H\end{array}\right.\label{equ:clippedAlpha2}\end{equation}
又因为$\alpha_1^{old}=r-s\alpha_2^{old},\alpha_1^{new}=r-s\alpha_2^{new.clipped}$,消去$r$得到:
\begin{equation}\alpha_1^{new}=\alpha_1^{old}+s\alpha_2^{old}-s\alpha_2^{new.clipped}=\alpha_1^{old}+y_1y_2(\alpha_2^{old}-\alpha_2^{new.clipped})\label{equ:updateAlpha1}\end{equation}
得到更新$\alpha_1$与$\alpha_2$的两个迭代式:
$\alpha_2^{new}=\alpha_2^{old}+\frac{y_2(E_1-E_2)}{\eta}$,进一步求得$\alpha_2^{new.clipped}$
$\alpha_1^{new}=\alpha_1^{old}+y_1y_2(\alpha_2^{old}-\alpha_2^{new.clipped})$.
(4)停止条件。
一般对于凸优化问题,有如下三种停止条件:
- 监视目标函数的增长率,即$W(\alpha)$的增长低于某一tolerance时停止,这种效果一般都不好。
- 监视原问题的KKT条件,由于最优解必定满足KKT条件,但KKT条件本身较为苛刻,故只需在一定的tolerance范围内所有样本满足KKT条件即可停止。
- 监视可行间隙,即原问题与对偶问题的目标函数值之差,对于凸优化来说这个间隙为0.
设原问题的目标函数值为$O(w,b)$,对偶问题的目标函数为$W(\alpha)$,则Gap为:
\begin{align}\text{Gap}&=\frac{1}{2}w^\prime w+C\sum_{i=1}^n\xi_i-(\sum_{i=1}^n\alpha_i-\frac{1}{2}\sum_{i,j=1}^ny_iy_j\alpha_i\alpha_jK_{ij})\nonumber\\&\frac{1}{2}\sum_{i,j=1}^ny_iy_j\alpha_i\alpha_jK_{ij}+C\sum_{i=1}^n\xi_i-(\sum_{i=1}^n\alpha_i-\frac{1}{2}\sum_{i,j=1}^ny_iy_j\alpha_i\alpha_jK_{ij})\nonumber\\&=\sum_{i,j=1}^ny_iy_j\alpha_i\alpha_jK_{ij}+C\sum_{i=1}^n\xi_i-\sum_{i=1}^n\alpha_i\nonumber\\&=2\sum_{i=1}^n\alpha_i-2W(\alpha)+C\sum_{i=1}^n\xi_i-\sum_{i=1}^n\alpha_i\nonumber\\&=\sum_{i=1}^n\alpha_i-2W(\alpha)+C\sum_{i=1}^n\xi_i\label{equ:Gap}\end{align}
所以当上诉的Gap达到某一tolerance时即可停止。
(5)启发式(Heuristics)的方法选择$\alpha_i,\alpha_j$。
从上述停止条件可知,最优点满足KKT条件,因此我们可以选择“最违反KKT条件”的点进行优化。违反KKT条件的点指的是:
\begin{equation}\alpha_i=0 \&\& y_i(x_i^\prime w+b) < 1\label{equ:violateKKT1}\end{equation}
\begin{equation}0<\alpha_i<C \&\& y_i(x_i^\prime w+b) \neq 1\label{equ:violateKKT2}\end{equation}
\begin{equation}\alpha_i=C\&\& y_i(x_i^\prime w+b)>1\label{equ:violateKKT3}\end{equation}
从式子\ref{equ:Gap}可知,第$i$个点对Gap的贡献为:
\begin{align*}\text{Gap}_i&=\alpha_i[y_i(\sum_{j=1}^n\alpha_jy_jK_{ij})-1]+C\xi_i\\&=\alpha_i(y_iu_i-1y_ib)+C\xi_i\end{align*}
其中$u_i=w^\prime x_i+b=\sum_{j=1}^n\alpha_jy_jK_{ij}+b$。
1)若满足第一个KKT条件,即$\alpha_i=0\&\& y_iu_i\geq 1\Longrightarrow \xi_i=0$(参考Soft Margin SVM笔记),则
\begin{equation*}\text{Gap}_i=\alpha_i(y_iu_i-1-y_ib)+C\xi_i=0\end{equation*}
若违反第一个KKT条件,即$\alpha_i=0\&\&y_iu_i<1\Longrightarrow \xi_i>0$,于是$\text{Gap}_i=C\xi_i>0$,故违反第一个KKT条件使可行间隙变大。
2)若满足第二个KKT条件,即$0<\alpha_i<C \&\& y_i(x_i^\prime w+b) = 1\Longrightarrow \xi_i=0$,则
\begin{equation*}\text{Gap}_i=-\alpha_iy_ib+C\xi_i=-\alpha_iy_ib\end{equation*}
若违反,即$0<\alpha_i<C \&\& y_i(x_i^\prime w+b) \neq 1$。当$y_iu_i>1\Longrightarrow\xi_i=0$时,$\text{Gap}_i=\alpha_i(y_iu_i-1)-\alpha_iy_ib>-\alpha_iy_ib$;当$y_iu_i<1\Longrightarrow\xi_1-y_iu_i$时,故$\text{Gap}_i=\alpha_i(y_iu_i-1-y_ib)+C(1-y_iu_i)=(C-\alpha_i)(1-y_iu_i)-\alpha_iy_ib>-\alpha_iy_ib$。故违反第二个KKT条件使可行间隙变大。
3)若满足第三个KKT条件,即$\alpha_i=C\&\&y_iu_i\leq 1\Longrightarrow \xi_i=1-y_iu_i$,则
\begin{equation*}\text{Gap}_i=\alpha_i(y_iu_i-1-y_ib)+C\xi_i=Cy_ib\end{equation*}
若违反第三个KKT条件,即$\alpha_i=C\&\&y_iu_i>1$时,$\xi_i=0$:
\begin{equation*}\text{Gap}_i=\alpha_i(y_iu_i-1-y_ib)+C\xi_i=C(y_iu_i-1)-Cy_ib>-Cy_ib\end{equation*}
故违反第三个KKT条件使可行间隙变大。
从上述分析可知,采用该策略是可行的,严格的收敛证明可以根据Osuna E Personal Communication 中提到的Osuna's theorem。
该启发式选择分为两个部分,第一部分用于选择第一个乘子$\alpha_i$,第二部分用于选择第二个乘子$\alpha_j$,其第一部分过程可描述如下:
while(存在违反KKT条件的样本点)
for(i :遍历所有违反KKT条件的样本点)
j = 采用第二个启发式方法选择乘子;
以$\alpha_i,\alpha_j$为变量进行优化;
end for
while(存在违反KKT条件的边界点,其中边界点指的是$\alpha$等于$0$或者$C$)
for(i:遍历所有违反KKT条件的边界点)
j = 采用第二个启发式方法选择乘子;
以$\alpha_i,\alpha_j$为变量进行优化;
end for
end while
end while
第二部分过程描述如下:
由于$\alpha_2^{new}=\alpha_2^{old}+\frac{y_2(E_1-E_2)}{\eta}$,故为了加快收敛速度,可选择$|E_1-E_2|$的最大值为优化的另一个乘子。
- 在非边界样本点中找值$|E_1-E_2|$最大的点,若不存在或则该最大值点不会是目标函数增加的话,则转2;
- 在非边界样本点中随机选一个样本点,从该样本点开始遍历所有非边界点,直到找到可行的点,否则转3;
- 在所有边界样本点中随机选一个样本点,从该样本点开始遍历所有边界点,直到找到可行的点,否则返回0,表示没找到可行点。
整个SMO的伪代码可在原论文中找到。
(6)关于两个乘子优化的说明。
对目标函数求一阶和二阶导数如下:
\begin{equation}\frac{\partial W(\alpha_2)}{\partial\alpha_2}=-s+1sK_{11}r-K_{11}\alpha_2-K_{22}\alpha_2-srK_{12}+2K_{12}\alpha_2+y_1v_1-y_2v_2\end{equation}
\begin{equation}\frac{\partial^2W(\alpha_2)}{\partial\alpha_2^2}=-K_{11}-K_{22}+2K_{12}=-\eta\end{equation}
由于之前的更新是由导数等于0而得到的,而当二阶导数大于零的时候,这种更新不会使目标函数值保持增长,现在我们对更新方法进行改进,使其对所有的情况都可使目标函数保持增长。
1)当$-\eta<0$时,目标函数(关于$\alpha_2$的二次函数)开口向下,则有如下三种情况:
- 令$\frac{\partial W}{\partial\alpha_2}=0\Longrightarrow \alpha_2=\alpha_2^\prime\in[L,H]$,目标函数取得最大值;
- 令$\frac{\partial W}{\partial\alpha_2}=0\Longrightarrow \alpha_2=\alpha_2^\prime>H$,$\alpha_2$经过clipped,$\alpha_2^{new.clipped}=H$,目标函数取得最大值;
- 令$\frac{\partial W}{\partial\alpha_2}=0\Longrightarrow \alpha_2=\alpha_2^\prime<L$,$\alpha_2$经过clipped,$\alpha_2^{new.clipped}=L$,目标函数取得最大值。
2)当$-\eta>0$时,目标函数开口向上,此时目标函数的最大值必定在边界处取得,因此只要验证边界值的大小即可。将a) $\left\{\begin{array}&\alpha_2^{new.clipped}=L\\\alpha_1^{new}=\alpha_1^{old}+s(\alpha_1^{old}-L)\end{array}\right.$ 和 b) $\left\{\begin{array}&\alpha_2^{new.clipped}=H\\\alpha_1^{new}=\alpha_1^{old}+s(\alpha_1^{old}-H)\end{array}\right.$ 分别代入目标函数中,若a)使目标函数值更大则采用更新a);若b)使目标函数值更大则采用更新b)。
(7)更新阈值(Threshold)。
为了使每一次更新后的$\alpha_1,\alpha_2$都满足KKT条件,我们还必须更新阈值$b$。
1)设$\alpha_1^{new}$在界内,即$0<\alpha_1^{new}<C$,由KKT条件可知:
\begin{equation}y_1u_1^{new}=1\Longrightarrow y_1(\alpha_1^{new}y_1K_{11}+\alpha_2^{new.clipped}y_2K_{21}+\sum_{i=3}^n(\alpha_iy_iK_{i1})+b^{new})=1\label{equ:updateThre1}\end{equation}
又因:
\begin{align}E_1&=f(x_1)-y_1\nonumber\\&=\sum_{j=1}^ny_j\alpha_j^{old}K_{1j}+b^{old}-y_1\nonumber\\&=y_1\alpha_1^{old}K_{11}+y_2\alpha_2^{old}K_{12}+\sum_{j=3}^n\alpha_jy_jK_{1j}+b^{old}-y_1\nonumber\\\Longrightarrow&\nonumber\\\sum_{i=3}^n\alpha_iy_iK_{1i}&=E_1-\alpha_1^{old}y_1K_{11}-\alpha_2^{old}y_2K_{12}-b^{old}+y_1\label{equ:updateThre2}\end{align}
将式子\ref{equ:updateThre2}代入式子\ref{equ:updateThre1}得:
$$y_1(\alpha_1^{new}y_1K_{11}+\alpha_2^{new.clipped}y_2K_{21}+E_1-\alpha_1^{old}y_1K_{11}-\alpha_2^{old}y_2K_{12}-b^{old}+y_1+b^{new})=1$$
即:
\begin{align*}b^{new}&=-\alpha_1^{new}y_1K_{11}-\alpha_2^{new.clipped}y_2K_{21}-E_1+\alpha_1^{old}y_1K_{11}+\alpha_2^{old}y_2K_{12}+b^{old}\\&=(\alpha_1^{old}-\alpha_1^{new})y_1K_{11}+(\alpha_2^{old}-\alpha_2^{new.clipped})y_2K_{21}-E_1+b^{old}\end{align*}
2)设$\alpha_2^{new.clipped}$在界内,即$0<\alpha_2^{new.clipped}<C$,由KKT条件知:
\begin{equation}y_2u_2^{new}=1\Longrightarrow y_2(w^\prime x_2+b^{new})=y_2(\alpha_1^{new}y_1K_{21}+\alpha_2^{new}y_2K_{22}+\sum_{i=3}^n\alpha_iy_iK_{2j}+b^{new})=1\label{equ:updateThre3}\end{equation}
又因:
\begin{align}E_2&=f(x_2)-y_2\nonumber\\&=\sum_{j=1}^ny_j\alpha_j^{old}K_{2j}+b^{old}-y_2\nonumber\\&=y_1\alpha_1^{old}K_{21}+y_2\alpha_2^{old}K_{22}+\sum_{j=3}^n\alpha_jy_jK_{2j}+b^{old}-y_2\nonumber\\\Longrightarrow&\nonumber\\\sum_{i=3}^n\alpha_iy_iK_{2i}&=E_2-\alpha_1^{old}y_1K_{21}-\alpha_2^{old}y_2K_{22}-b^{old}+y_2\label{equ:updateThre4}\end{align}
将式子\ref{equ:updateThre4}代入式子\ref{equ:updateThre3}得:
$$y_2(\alpha_1^{new}y_1K_{21}+\alpha_2^{new}y_2K_{22}+E_2-\alpha_1^{old}y_1K_{21}-\alpha_2^{old}y_2K_{22}-b^{old}+y_2+b^{new})=1$$
即:
\begin{align*}b^{new}&=-\alpha_1^{new}y_1K_{21}-\alpha_2^{new}y_2K_{22}-E_2+\alpha_1^{old}y_1K_{21}+\alpha_2^{old}y_2K_{22}+b^{old}\\&=(\alpha_1^{old}-\alpha_1^{new})y_1K_{21}+(\alpha_2^{old}-\alpha_2^{new})y_2K_{22}-E_2+b^{old}\end{align*}
3)若$\alpha_1^{new},\alpha_2^{new.clipped}$都在界内,则情况1)和情况2)的$b$值相等,任取一个即可。
4)若$\alpha_1^{new},\alpha_2^{new.clipped}$都不再界内,则$b^{new}$取情况1)和情况2)之间的任一值即可。在SMO里,我们去二者的平均值。
(8)提高SMO速度。
有两种技巧可用于提高SMO算法的速度。
1)将核矩阵放在缓存中,减少重复计算。
2)若核函数为线性时,可直接更新$w$,即:
\begin{align*}w^{new}&=y_1\alpha_1^{new}x_1+y_2\alpha_2^{new}x_2+\sum_{i=1}^ny_i\alpha_ix_i\\&=y_1\alpha_1^{old}x_1+y_1\alpha_1^{new}x_1-y_1\alpha_1^{old}x_1+y_2\alpha_2^{old}x_2+y_2\alpha_2^{new}x_2-y_2\alpha_2^{old}x_2+\sum_{i=3}^ny_i\alpha_ix_i\\&=\sum_{i=1}^ny_i\alpha_i^{old}x_i+(\alpha_1^{new}-\alpha_1^{old})y_1x_1+(\alpha_2^{new}-\alpha_2^{old})y_2\alpha_2\\&=w^{old}+(\alpha_1^{new}-\alpha_1^{old})y_1x_1+(\alpha_2^{new}-\alpha_2^{old})y_2\alpha_2\end{align*}
Jordan Lecture Note-8: The Sequential Minimal Optimization Algorithm (SMO).的更多相关文章
- Sequential Minimal Optimization(SMO,序列最小优化算法)初探
什么是SVM SVM是Support Vector Machine(支持向量机)的英文缩写,是上世纪九十年代兴起的一种机器学习算法,在目前神经网络大行其道的情况下依然保持着生命力.有人说现在是神经网络 ...
- Support Vector Machine (2) : Sequential Minimal Optimization
目录 Support Vector Machine (1) : 简单SVM原理 Support Vector Machine (2) : Sequential Minimal Optimization ...
- sequential minimal optimization,SMO for SVM, (MATLAB code)
function model = SMOforSVM(X, y, C ) %sequential minimal optimization,SMO tol = 0.001; maxIters = 30 ...
- SMO优化算法(Sequential minimal optimization)
原文:http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html SMO算法由Microsoft Research的John C. ...
- Sequential Minimal Optimization: A Fast Algorithm for Training Support Vector Machines 论文研读
摘要 本文提出了一种用于训练支持向量机的新算法:序列最小优化算法(SMO).训练支持向量机需要解决非常大的二 次规划(QP)优化问题.SMO 将这个大的 QP 问题分解为一系列最小的 QP 问题.这些 ...
- SMO(Sequential Minimal Optimization) 伪代码(注释)
Algorithm: Simplified SMO 这个版本是简化版的,并没有采用启发式选择,但是比较容易理解. 输入: C: 调和系数 tol: 容差 (tolerance) max passes: ...
- Sequential Minimal Optimization (SMO) 算法
SVM 最终关于 $a$ 目标函数为凸优化问题,该问题具有全局最优解,许多最优化算法都可以解决该问题,但当样本容量相对很大时,通常采用 SMO 算法(比如 LIBSVM),该算法为启发式算法,考虑在约 ...
- 支持向量机:Numerical Optimization,SMO算法
http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html 另外一篇:http://www.cnblogs.com/vivouni ...
- Jordan Lecture Note-1: Introduction
Jordan Lecture Note-1: Introduction 第一部分要整理的是Jordan的讲义,这份讲义是我刚进实验室时我们老师给我的第一个任务,要求我把讲义上的知识扩充出去,然后每周都 ...
随机推荐
- SoapUI入门
注:需要使用发布的webService接口 我们一般用的是impl接口调用,不大用得上soapUI.看到一份简历上写了使用soapUI做webService测试,想了解一下什么是soapUI soap ...
- POJ 1655-Balancing Act(树形dp)
题意: 求n个节点的树中哪个节点删除以后得到的最大连通分量最小. 分析:同上题 #include <map> #include <set> #include <list& ...
- bzoj 3529 [Sdoi2014]数表(莫比乌斯反演+BIT)
Description 有一张N×m的数表,其第i行第j列(1 < =i < =礼,1 < =j < =m)的数值为能同时整除i和j的所有自然数之和.给定a,计算数表中不大于a ...
- NOIP2014 无线网络发射器选址
1.无线网络发射器选址 (wireless.cpp/c/pas) [问题描述] 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平 ...
- uvalive 3890 Most Distant Point from the Sea
题意:求一个凸多边形中一点到边的最大距离. 思路:转换成在多边形内部,到每边距离为d的直线所围成的内多边形是否存在.也就是,二分距离+半平面交. #include<cstdio> #inc ...
- sql-表值函数tvf
带有参数的视图 create function fn_fenye (@count as int,@page as int) returns table as return select * from ...
- leetcode@ [279]Perfect Squares
https://leetcode.com/problems/perfect-squares/ Given a positive integer n, find the least number of ...
- [.NET]c#.net程序中使用ffmpeg.exe来处理视频并生成上传视频的截图
添加如下前台代码: <asp:FileUpload ID="FileUpload1" runat="server" /> <asp:Butto ...
- Eclipse安装ADT插件
安卓开发环境搭建,如果选择的是ADT Bundle,则包含了eclipse和adt tools.但是有些时候是在已经独立安装了Eclipse的基础上,在线安装ADT插件,就稍微麻烦了. 一.在线安装A ...
- Java异常的面试问题及答案-Part 1
本文由 ImportNew - 韩远青 翻译自 Journaldev. Java提供了一个健壮的.面向对象的方法来处理出现异常,称为Java异常处理.我以前写过一篇长文章来介绍Java异常处理,今天我 ...