The Sequential Minimal Optimization Algorithm (SMO) 本文主要介绍用于解决SVM对偶模型的算法,它于1998年由John Platt在论文“Sequential Minimal Optimization:A Fast Algorithm for Training Support Vector Machines”中提出的.这篇笔记还参考了某篇博客,但由于是一年前的事了,暂时没找到这篇博客,所以没有引用出来,希望该篇博客的主人见谅. (1)解决的问题…
什么是SVM SVM是Support Vector Machine(支持向量机)的英文缩写,是上世纪九十年代兴起的一种机器学习算法,在目前神经网络大行其道的情况下依然保持着生命力.有人说现在是神经网络深度学习的时代了,AI从业者可以不用了解像SVM这样的古董了.姑且不说SVM是否真的已经没有前途了,仅仅是SVM在数学上优美的推导就值得后来者好好欣赏一番,这也是笔者迄今为止见过机器学习领域最优美的数学推导. 和大多数二分类算法一样,SVM算法也是致力于在正例和反例之间找出一个超平面来将它们区分开来…
目录 Support Vector Machine (1) : 简单SVM原理 Support Vector Machine (2) : Sequential Minimal Optimization Support Vector Machine (3) : 再谈泛化误差(Generalization Error) Support Vector Machine Python 代码实现 Support Vector Machine(2) : Sequential Minimal Optimizat…
function model = SMOforSVM(X, y, C ) %sequential minimal optimization,SMO tol = 0.001; maxIters = 3000; global i1 i2 K Alpha M1 m1 w b [m, n] = size(X); K = (X*X'); Alpha = zeros(m,1); w = 0; b = 0; flag =1;iters = 1; while flag >0 & iters < max…
原文:http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html SMO算法由Microsoft Research的John C. Platt在1998年提出,并成为最快的二次规划优化算法,特别针对线性SVM和数据稀疏时性能更优.关于SMO最好的资料就是他本人写的<Sequential Minimal Optimization A Fast Algorithm for Training Support Vector Machi…
摘要 本文提出了一种用于训练支持向量机的新算法:序列最小优化算法(SMO).训练支持向量机需要解决非常大的二 次规划(QP)优化问题.SMO 将这个大的 QP 问题分解为一系列最小的 QP 问题.这些小的 QP 问题可以通过解析来解决, 从而避免了将耗时的数值 QP 优化用作内部循环.SMO 所需的内存量与训练集大小成线性关系,这使 SMO 可以处理非常大 的训练集.由于避免了矩阵计算,因此对于各种测试问题,SMO 随训练集大小在线性和二次方之间缩放,而标准分块 SVM 算法随训练集大小在线性和…
Algorithm: Simplified SMO 这个版本是简化版的,并没有采用启发式选择,但是比较容易理解. 输入: C: 调和系数 tol: 容差 (tolerance) max passes: $\alpha$ 不改变时的最大迭代次数 $(x^{(1)}, y^{(1)}), . . . , (x^{(m)}, y^{(m)})$: 训练样本 输出: $\alpha\in\mathbf{R}^m$: 所要求解的 Lagrange 乘子, $\alpha=(\alpha_1,\alpha_…
SVM 最终关于 $a$ 目标函数为凸优化问题,该问题具有全局最优解,许多最优化算法都可以解决该问题,但当样本容量相对很大时,通常采用 SMO 算法(比如 LIBSVM),该算法为启发式算法,考虑在约束优化问题中,目标函数的最优解 $a^*$ 是需要满足 KKT 条件的,因为对偶问题有解的充要条件就是 $a^*$ 的所有分量都满足 KKT 条件,若满足那么这时 $a^*$ 便是最优解了,否则应该找到两个分量,固定其余分量,针对这两个分量构建一个二次规划问题,目标函数关于这两个变量的解更接近原始的…
http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html 另外一篇:http://www.cnblogs.com/vivounicorn/archive/2011/06/01/2067496.html 11 SMO优化算法(Sequential minimal optimization) SMO算法由Microsoft Research的John C. Platt在1998年提出,并成为最快的二次规划优化算法,特别针对线性S…
Jordan Lecture Note-1: Introduction 第一部分要整理的是Jordan的讲义,这份讲义是我刚进实验室时我们老师给我的第一个任务,要求我把讲义上的知识扩充出去,然后每周都要讲给他听.如果有需要这份讲义的话,请留言,我会用邮件发给你. 首先,我来说说机器学习这个东西.刚进实验室,我根本连什么是机器学习都不知道,听到这个名词后的第一反应是机器人,心想估计是搞硬件的.后来才发现其实机器学习更偏向于后面两个字,也就是“学习”.打个不恰当的比方吧,人类在婴儿时期,还无法对世上…
Jordan Lecture Note-3:梯度投影法 在这一节,我们介绍如何用梯度投影法来解如下的优化问题: \begin{align} \mathop{\min}&\quad f(x)\nonumber\\\mathop{s.t.}&\quad \mathbf{A}_1 x\leq b_1\nonumber\\&\quad \mathbf{A}_2x= b_2\label{equ:originalModel}\end{align} 其中$x\in\mathbb{R}^n,\ma…
题目1 : Colorful Lecture Note 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi is writing an algorithm lecture note for Little Ho. To make the note more comprehensible, Little Hi tries to color some of the text. Unfortunately Little Hi is using a plain…
Little Hi is writing an algorithm lecture note for Little Ho. To make the note more comprehensible, Little Hi tries to color some of the text. Unfortunately Little Hi is using a plain(black and white) text editor. So he decides to tag the text which…
Colorful Lecture Note 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi is writing an algorithm lecture note for Little Ho. To make the note more comprehensible, Little Hi tries to color some of the text. Unfortunately Little Hi is using a plain(black…
#1103 : Colorful Lecture Note 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi is writing an algorithm lecture note for Little Ho. To make the note more comprehensible, Little Hi tries to color some of the text. Unfortunately Little Hi is using a pla…
1. 从细菌的趋化性谈起 0x1:物质化学浓度梯度 类似于概率分布中概率密度的概念.在溶液中存在不同的浓度区域. 如放一颗糖在水盆里,糖慢慢溶于水,糖附近的水含糖量比远离糖的水含糖量要高,也就是糖附近的水糖的浓度高,离糖越远的水糖的浓度越低. 这种浓度的渐减(反方向就是渐增)叫做浓度梯度.可以用单位距离内浓度的变化值来表示.同样,温度.电场强度.磁场强度.重力场.都有梯度的. 化学溶液的浓度梯度的概念和概率分布的梯度类似,都代表了值下降的方向. 0x2:趋化性细菌的运动方式 细菌趋化性是指有运动…
Maximal Margin Classifier Logistic Regression 与 SVM 思路的不同点:logistic regression强调所有点尽可能远离中间的那条分割线,而SVM则强调最靠近分割线的点于分割线的距离仅可能的远. 定义间隔函数:$\hat{r}^{(i)}=y^{(i)}(w^\prime x^{(i)}+b)$.当$y^{(i)}=1$时,$w^\prime x^{(i)}+b>0$:当$y^{(i)}=-1$时,$w^\prime x^{(i)}+b<…
Kernel典型相关分析 (一)KCCA 同样,我们可以引入Kernel函数,通过非线性的坐标变换达到之前CCA所寻求的目标.首先,假设映射$\Phi_X: x\rightarrow \Phi_X(x), \Phi_Y: y\rightarrow \Phi_Y(y)$,记$\mathbf{\Phi_X}=(\Phi_X(x_1),\Phi_X(x_2),\cdots,\Phi_X(x_p))^\prime, \mathbf{\Phi_Y}=(\Phi_Y(y_1),\Phi_Y(y_2),\cd…
典型相关分析 (一)引入 典型相关分析(Canonical Correlation Analysis)是研究两组变量之间相关关系的一种多元统计方法.他能够揭示出两组变量之间的内在联系. 我们知道,在一元统计分析中,用相关系数来衡量两个随机变量的线性相关关系,用复相关系数研究一个随机变量与多个随机变量的线性相关关系.然而,这些方法均无法用于研究两组变量之间的相关关系,于是提出了CCA.其基本思想和主成分分析非常相似.首先,在每组变量中寻找出变量的线性组合,使得两组的线性组合之间具有最大的相关系数:…
Kernel Principal Components Analysis PCA实际上就是对原坐标进行正交变换,使得变换后的坐标之间相互无关,并且尽可能保留多的信息.但PCA所做的是线性变换,对于某些数据可能需要通过非线性变换,比如在二维空间下对如下数据进行处理.如果还是采用最初的PCA,则得到的主成分是$z_1,z_2$,而这里的$z_1,z_2$都包含了大量的信息,故无法去掉任何一个坐标,也就达不到降维的目的.而此时如果采用极坐标变换(属于非线性变换),我们就可以尽用一条坐标包含大量的信息(…
Principal Components Analysis (一)引入PCA    当我们对某个系统或指标进行研究时往往会发现,影响这些系统和指标的因素或变量的数量非常的多.多变量无疑会为科学研究带来丰富的信息,但也会在一定程度上增加工作的难度,而通常变量之间又具有一定的相关性,这又增加了问题分析的复杂度.如果分别分析每个变量,那么分析又不够综合,而盲目的减少变量又会损失很多有用的信息.因而我们自然而然想到能否用较少的新变量去代替原来较多的旧变量(即降维),同时使这些新变量又能够尽可能保留原来旧…
Soft Margin SVM  (1)Recall 之前分析到SVM的模型为: \begin{align}\mathop{\min}&\quad \frac{1}{2}w^\prime w\nonumber\\\mathop{s.t}&\quad y_i(x_i^\prime w+b)\geq 1, i=1,2,\cdots,m\label{model:SVM}\end{align} 利用Lagrange乘子法转化为对偶问题: \begin{align}\mathop{\max}&…
The Solutions of Nonlinear Equation 本文主要介绍几种用于解非线性方程$f(x)=0$的一些方法. (1) Bisection Method. 算法: step 1: 初始化$a,b(b>a)$,使$f(a),f(b)$异号. step 2: while (停止条件不满足) $p=a+\frac{b-a}{2}$: 若 $f(p)f(a)<0$,$b=p$:否则$a=p$. end while step 3: 返回的$p$为方程$f(x)=0$的解. 停止条件…
Kernels 我们首先来回顾kernel函数的定义:一个函数$K(x,y)$为kernel函数当且仅当对$\forall g, \int K(x,y)g(x)g(y)dxdy\geq 0$成立.另外,根据Mercer's theorem,存在一个映射$\Phi$使$K(x,y)=\langle \Phi(x),\Phi(y)\rangle$,并且对任意有限的点,kernel矩阵是半正定的. 一.核函数的封闭性 Hadamard product: $$\mathbf{A}\circ\mathbf…
Linear & Ridge Regression 对于$n$个数据$\{(x_1,y_1),(x_2,y_2),\cdots,(x_n,y_n)\},x_i\in\mathbb{R}^d,y_i\in\mathbb{R}$.我们采用以下矩阵来记上述数据: \begin{equation}\mathbf{X}=\left[\begin{array}& x_1^\prime\\ x_2^\prime\\\vdots\\ x_n^\prime\end{array}\right]\quad y=…
曾经多次看到别人说起,在选择Optimizer的时候默认就选Adam.这样的建议其实比较尴尬,如果有一点科学精神的人,其实就会想问为什么,并搞懂这一切,这也是我开这个Optimizer系列的原因之一.前面介绍了Momentum,也介绍了RMSProp,其实Adam就是二者的结合,再加上偏差修正(Bias Correction). 首先,在Adam算法迭代过程中,需要计算各个时刻梯度的Exponential Moving Average,这一步骤来源于Momentum算法: 第二,计算各个时刻梯度…
题目:一种新的离散粒子群优化算法 中文摘要 粒子群优化算法在许多优化问题上表现得非常好.粒子群优化算法的缺点之一是假设算法中的变量为连续变量.本文提出一个新的粒子群优化算法,能够优化离散变量.这个新算法被称为整数和分类粒子群优化算法,该算法融合了分布估计算法的思想,即粒子代表概率分布而不是解的值,并且PSO更新修改了概率分布.本文描述了该算法,并将其性能与其他离散PSO算法进行了比较.实验表明,该算法比其他离散PSO算法要好 . 中文引言 离散优化问题,如贝叶斯网络中的特征选择或推理,是一组重要…
Support Vector Machines for classification To whet your appetite for support vector machines, here’s a quote from machine learning researcher Andrew Ng: “SVMs are among the best (and many believe are indeed the best) ‘off-the-shelf’ supervised learni…
SVM有很多实现,现在只关注其中最流行的一种实现,即序列最小优化(Sequential Minimal Optimization,SMO)算法,然后介绍如何使用一种核函数(kernel)的方式将SVM扩展到更多的数据集上. 1.基于最大间隔分隔数据 几个概念: 1.线性可分(linearly separable):对于图6-1中的圆形点和方形点,如果很容易就可以在图中画出一条直线将两组数据点分开,就称这组数据为线性可分数据 2.分隔超平面(separating hyperplane):将数据集分…
转载自:JerryLead http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html 11 SMO优化算法(Sequential minimal optimization) SMO算法由Microsoft Research的John C. Platt在1998年提出,并成为最快的二次规划优化算法,特别针对线性SVM和数据稀疏时性能更优.关于SMO最好的资料就是他本人写的<Sequential Minimal Optimiza…