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的讲义,这份讲义是我刚进实验室时我们老师给我的第一个任务,要求我把讲义上的知识扩充出去,然后每周都 ...
随机推荐
- 可用于Hadoop下的ETL工具——Kettle
看大家分享了好多hadoop相关的一些内容,我为大家介绍一款ETL工具——Kettle. Kettle是pentaho公司开源的一款ETL工具,跟hadoop一样,也是java实现,其目的就是做 ...
- NGINX(四)配置解析
前言 nginx配置解析是在初始化ngx_cycle_t数据结构时,首先解析core模块,然后core模块依次解析自己的子模块. 配置解析过程 nginx调用ngx_conf_parse函数进行配置文 ...
- [OFBiz]简介 二
1. 执行ant run-install后,生成了55个ofbiz的jar.加上最初的E:\apache-ofbiz-10.04\framework\entity\lib\ofbiz-minerva. ...
- linu、C语言、计算机基础教程
Linux操作系统入门教程:http://see.xidian.edu.cn/cpp/linux/ 鸟哥的linux私房菜:http://vbird.dic.ksu.edu.tw/ 计算机操作系统教程 ...
- vs2015无法解析外部符号__imp__fprintf
使用vs2015编译ffmpeg的一个小项时,出现了__imp__fprintf和__imp____iob_func 的错误,google了一下,有的人 建议下载SDL源码重新编译一下,当然这个方案非 ...
- 在KVM虚拟机中使用spice系列之二(USB映射,SSL,密码,多客户端支持)
在KVM虚拟机中使用spice系列之二(USB映射,SSL,密码,多客户端支持) 发布时间: 2015-02-27 00:16 1.spice的USB重定向 1.1 介绍 使用usb重定向,在clie ...
- yum cdh4
cdh4 install for Centos6那个最美的年代,最好的时光,一路梦想,一路流泪,流的不会是懦弱的泪,而是对奋斗的寄于;1,repo配置>>>/etc/yum.repo ...
- keil中 code、data、idata的区别
存储器类型 本C51编译器支持8051及其派生类型的结构能够访问8051的所有存储器空间具有下表列出的存储器类型的变量都可以被分配到某个特定的存储器空间.存储器类型 描述code 程序空间64 Kby ...
- 把存储过程获取的数据输出到报表的html模板中
制作报表的html模板 <HTML><meta http-equiv="Content-Type" content="text/html; charse ...
- stm32 CAN引脚-笔记
默认: CANRX – > PA11 CANTX - >PA12 映射1: CANRX – > PB8 CANTX - >PB9 映射2: CANRX – > ...