通常的机器学习分类算法,咱们能够一般从三个步骤获得,以SVM算法为例,这里规定正例的y为1,负例的y为-1html
Step 1: Function Set(Model)算法
Step 2: Loss function机器学习
理想状况下的loss function(ideal loss)是当g(x)和y不相等的状况下的样本相加,可是这种状况下的损失函数是不可微分的,因此没法用梯度降低法训练。ide
Step 3:Gradient descent函数
第三步就是用梯度降低法训练模型了,咱们如今的目标是寻找一种适合SVM的loss function。学习
接下来咱们来分析SVM采用哪一种损失函数比较合适,此坐标系横坐标表示y*f(x),纵坐标表示loss。测试
首先分析Square loss的状况,从图像上能够看出y*f(x)的值越接近于1越好,但y*f(x)很大的时候,loss越大,显然不合理idea
sigmod+square loss的状况:函数曲线变化太平缓,梯度降低的performance比较差spa
Sigmod + cross entropy(逻辑回归采用的损失函数)rest
hinge loss(SVM采用的损失函数)
假设此时的样本是正例,即yn为1。其实f(x)大于0就已经能正确分类了,但hinge loss里仍是强调f(x)>1,图中penalty的部分就是margin,此时的margin为1,为何是1呢,由于此时的hinge loss与Ideal loss最接近,都通过(0,1)点。
按照咱们在一中的定义,咱们能够获得SVM的定义
因为hinge loss是凸函数,L2范数是凸函数,因此他俩之和仍然是凸函数,仍然能够用梯度降低法训练
从下面的公式推导能够看出,hinge loss从几何意义上看就是传统的SVM,保证yn,f(x)同号的同时,须要大于间隔减去松弛变量,此时的1是间隔(margin)。
支持向量机是一种二类分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器(有别于LR,只是寻找一个能将样本点分开的决策边界,SVM强调间隔最大化),因此它的基本学习策略就是间隔最大化。该问题可形式化求解一个凸二次规划问题,进一步利用拉格朗日对偶性,可将原始问题转换为对偶问题,经过求解对偶问题(dual problem)获得原始问题(primal problem)的最优解。引入对偶问题一是能使问题容易求解,二是天然引入核函数,进而推广到非线性分类问题。
支持向量机的基本想法就是求解可以正确划分训练数据集而且几何间隔最大的分离超平面。
接下来是线性可分支持向量机算法的详细推导过程:
对于线性不可分的分类问题,一个基本思路——向高维空间转化,使其变得线性可分。可使用一个变换,将元空间的数据映射到新空间;而后再新空间里用线性分类学习方法训练数据中学习分类模型,核技巧就是属于这样的方法。核技巧应用到SVM,其基本想法就是经过一个非线性变换将输入空间对应于一个特征空间,使得在输入空间中的超曲面模型对应于特征空间的超平面模型,这样,分类问题的学习任务经过在特种空间中求解线性支持向量机就能够完成。
咱们注意到线性支持向量机的对偶问题中,不管是目标函数仍是决策函数(分离超平面)都只涉及到输入实例与实例之间的内积。在对偶问题中的目标函数中的内积能够用核函数来代替,此时对偶问题的目标函数就变为:
SVM应用于多分类问题有常见的三种方法:一对一法、一对其他法、DAG法。
一类对余类法(One versusrest,OVR)是最先出现也是目前应用最为普遍的方法之一,其步骤是构造k个两类分类机(设共有志个类别),其中第i个分类机把第i类同余下的各种划分开,训练时第i个分类机取训练集中第i类为正类,其他类别点为负类进行训练。判别时,输入信号分别通过k个分类机共获得k个输出值fi(x)=sgn(gi(x)),若只有一个+1出现,则其对应类别为输入信号类别;实际状况下构造的决策函数老是有偏差的,若输出不仅一个+1(不仅一类声称它属于本身),或者没有一个输出为+1(即没有一个类声称它属于本身),则比较g(x)输出值,最大者对应类别为输入的类别。
这种方法的优势是,对k类问题,只须要训练k个两类分类支持向量机,故其所获得的分类函数的个数(k个)较少,其分类速度相对较快。
该方法在每两类问训练一个分类器,所以对于一个k类问题,将有k(k-1)/2个分类函数。当对一个未知样本进行分类时,每一个分类器都对其类别进行判断.并为相应的类别“投上一票”,最后得票最多的类别即做为该未知样本的类别。决策阶段采用投票法,可能存在多个类的票数相同的状况,从而使未知样本同时属于多个类别,影响分类精度。
DAG-SvMS是由PIatt提出的决策导向的循环图DAG导出的,是针对“一对一"SvMS存在误分,拒分现象提出的。这种方法的训练过程相似于“一对一”方法,k类别问题须要求解k(k-1)/2个支持向量机分类器,这些分类器构成一个有向无环图。该有向无环图中含有k(k-1)/2个内部节点和k个叶结点,每一个节点对应一个二类分类器。
DAG-SVMS简单易行,只须要使用k一1个决策函数便可得出结果,较“一对一"方法提升了测试速度,并且不存在误分、拒分区域;另外,因为其特殊的结构,故有必定的容错性,分类精度较通常的二叉树方法高。然而,因为存在自上而下的“偏差积累”现象是层次结构固有弊端,故DAG-SVMS也逃脱不掉。即若是在某个结点上发生了分类错误,则会把分类错误延续到该结点的后续结点上.
李宏毅机器学习
《统计学习方法》——李航
http://blog.sina.com.cn/s/blog_5eef0840010147pa.html