【机器学习具体解释】SVM解二分类,多分类,及后验概率输出
转载请注明出处:http://blog.csdn.net/luoshixian099/article/details/51073885
支持向量机(Support Vector Machine)以前在分类、回归问题中非常流行。支持向量机也称为最大间隔分类器,通过分离超平面把原始样本集划分成两部分。
首先考虑最简单的情况:线性可分支持向量机。即存在一个超平面能够把训练样本分开。
1.线性可分支持向量机
1.考虑一个线性二分类的问题;例如以下左图,在二维平面上有两种样本点x,目标值分别标记为{-1,1}。能够作出无数条直线wTx+b=0,直线上方的点标记为{+1}的带入直线公式会得到wTx+b>0,下方的点。标记为{-1}带入直线公式会得到wTx+b<0,因此能够用wTx+b的符号决定点的分类,写成决策函数为f(x,w,b)=sign(wTx+b)把两类点分开。可是个採用哪个直线最好呢?
2.一般来说,当样本点离直线越远。则分类正确的确信度越大;例如以下右图所看到的,A,B,C三个样本点都被预測分类到‘×’类中。可是对于A的分类正确的确信度比C大。因为点C里分类直线wTx+b=0非常近,当直线的斜率稍一点变化,即会导致C被分到还有一类中。
综上。我们想要得到的直线是离样本点最远。同时又能保证正确划分的直线。
1.1函数间隔与几何间隔
由二维直线wTx+b=0扩展到高维被称为超平面(w,b)。
一个点距离超平面的远近能够表示分类预測的确信程度。在超平面wTx+b=0确定的情况下,|wTx+b|能够相对地表示点x距离超平面的远近。并且假设分类正确。则y(i)与wTx(i)+b的符号一致,即y(i)(wTx(i)+b)>0,同一时候表示分类的正确性以及确信度。
函数间隔:超平面(w,b)关于样本点(x(i),y(i))的函数间隔为
定义超平面关于样本集S的函数间隔为超平面(w,b)与S中全部样本点的函数间隔的最小值
定义γ^是为了最大化间隔,γ^表示关于超平面与训练集中样本的函数间隔最小值,以下仅仅要最大化γ^就可以。
注意到函数间隔实际上并不能表示点到超平面的距离,因为当超平面(w,b)參数扩大同样的倍数后,如(2w,2b),超平面的位置并没有改变,可是函数间隔也变大了同样的倍数2γ^(i).
几何间隔:
如上图所看到的:设样本点A坐标为x(i),点A到超平面的垂直距离记为γ(i),分离超平面wTx(i)+b=0的单位法向量为w||w||,因此点B的坐标为x(i)−γ(i)w||w||,且点B在直线上,带入直线公式有:
假设点被正确分类。y(i)与(wTx(i)+b)||w||的符号一致,由此
几何间隔不随着超平面參数的变化而变化,比如超平面參数(w,b)变为(2w,2b)。函数间隔γ^(i)变为2γ^(i),而几何间隔γ(i)保持不变。
函数间隔与几何间隔的关系:γ(i)=γ^(i)||w||;γ=γ^||w||,若||w||=1,函数间隔与几何间隔同样。
1.2间隔最大化
如上所述。支持向量机的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。γ表示分离超平面与训练集中样本的几何间隔的最小值。为了间隔最大化。仅仅须要最大化γ,同一时候全部样本的几何间隔必须满足γ(i)≥γ,i=1,2,...,m;
上述问题,能够转变为一个凸二次规划问题。这是支持向量机的一个重要属性,局部极值即为全局最值。
考虑函数间隔与几何间隔的关系:
上述优化问题中,当超平面參数(w,b)同一时候变为(2w,2b),函数间隔也会变为2γ^,目标函数的解并不会变化。即γ^的取值不影响优化问题的解。因此令γ^=1。目标函数变为最大化1||w||,即最小化||w||2。为了后面的求解方便,加入因子12也不影响目标函数的解;
上述问题为一个凸优化问题,通过某些优化算法能够求解。
以下继续介绍拉格朗日对偶算法,能够更进一步优化上述问题,同一时候自然引入核函数,推广到高维数据。
1.3拉格朗日对偶性
有时考虑解决原始问题的对偶问题会更高效。
原始问题
f(w),gi(w),hi(w)均为连续可微:
写出拉格朗日函数。当中αi≥0,β≥0称为拉格朗日乘子:
定义关于w的函数θP(w)=maxα,βL(w,α,β);能够证明假设w满足上述约束条件gi(w)≤0,hi(w)=0,则有θP(w)=f(w)
由此原始问题的约束最优化问题变为极小极大问题:
设原始问题的最优解记为p∗=minwf(w)=minwθp(w).
对偶问题
把上述极小极大问题minw maxα,βL(w,α,β),改为极大极小变为对偶问题,即:
定义:
设此极大极小问题的最优解记为d∗,能够证明
为了使得对偶问题与原始问题的最优解相等d∗=p∗,必须满足下述几个条件。称为KKT条件
1.4最优间隔分类器
回想原始问题:
写成拉格朗日函数。因为仅仅有不等式约束所以仅仅包括拉格朗日乘子αi:
原始问题最优解p∗=minw,b maxαL(w,b,α);对偶问题的最优解d∗=maxα minw,bL(w,b,α)
对偶问题先求关于參数w,b的最小值,再求关于參数α的最大值。
首先,分别对w,b求偏导数并令为0。得:
把上述结果带入拉格朗日函数L(w,b,α)
注意到上述是仅仅关于參数α的函数,记为W(α),由对偶函数。下一步即最大化W(α)
以下的目的是解决上述优化问题。通常採用SMO算法,本篇文章暂不做介绍。假如已经得到最优解α=(α1,α2,...,αm),带回到上面对w求偏导得到的公式,能够得到w的值。以下要求得b得值,考虑KKT条件有:αi[y(i)(wTx(i)+b)−1]=0。i=1,2..m,当中必定存在一个αj≠0,(否则w=0,不是原始解)。
当αj≠0时y(i)(wTx(i)+b)=1,能够解出b的代数式。b=y(j)−∑mi=1αiy(i)(x(i),x(j)),也能够对全部採用满足条件的b加和求平均;然后就可以得到最佳分类超平面:
依据KKT条件有αi[y(i)(wTx(i)+b)−1]=0,i=1,2..m,当αi>0时,必定有y(i)(wTx(i)+b)=1,即该样本点的函数间隔为1。例如以下图所看到的,落在直线wTx+b=±1上。此向量即称为支持向量。对于落在直线wTx+b=±1以内的点,函数间隔y(j)(wTx(j)+b)>1,必定有αj=0,当计算函数最优切割超平面參数w,b时。这些点相应的αj=0。所以对參数没有影响。仅仅有支持向量,即落在wTx+b=±1上数据影响着最优超平面的计算。
2.线性支持向量机
以上讨论的内容是建立在数据是线性可分的情况。即存在一个分离超平面能够把训练数据分为两部分。实际上数据并不会这么理想,例如以下图所看到的。即存在某些样本点不能满足函数间隔大于等于1这个条件。
这时能够为每一个数据点设置一个松弛因子ξi≥0,使得函数间隔γi加上松弛因子ξi大于等于1.即y(i)(wTx(i)+w0)≥1−ξi,同一时候对每一个松弛因子ξi支付一个代价ξi。由此原始问题变为:
C称为惩处參数(C>0)。C值越大对误分类的惩处越大。因为当C为无穷大时,即成为了线性可分问题。
採用与线性可分同样的过程。建立拉格朗日函数:
由对偶函数得。首先分别对w,b,ξi求偏倒数,并令为0,能够得到上面右式,带回到拉格朗日函数中,因为μi≥0,且αi=C−μi,所以有:
由上述KKT条件能够得到:
3.非线性支持向量机
3.1 概念
如上图所看到的,原始样本数据线性不可分,即无法用一条直线或分离超平面将两类分开。
可是对原始数据採用非线性变换ϕ(x),非线性变换将原始数据从低维映射到高维,高维上数据就可能变得线性可分。
步骤:首先使用非线性变换将原始数据集映射到新空间中。称为特征空间,在特征空间中数据将变的线性可分,然后採用线性支持向量机的方法训练分离超平面參数。
但在高维上计算量会急剧增大。会造成维数灾难,自然引入核技巧(kernal trick)。
3.2 核技巧
观察线性支持向量机的对偶问题为:
上述目标函数中。仅仅包括原始数据的内积形式<x(i),x(j)>=(x(i))T(x(j))。
由上述分析,仅仅须要找到一个合适的非线性变换ϕ(x),将原始数据x(i)映射到高维特征空间ϕ(x(i))中。内积形式变为为<ϕ(x(i)),ϕ(x(j))>。
定义核函数K(x,z)=ϕ(x)Tϕ(z)。表示两个原始数据x,z分别变换到特征空间中的内积值。
核技巧的方法即不用构造非线性映射ϕ(x)而直接给定一个核函数K(x,z),降低了计算量。如以下样例一个核函数等于两个非线性变换的内积:
经常使用几个核函数:
4.SVM后验概率输出
SVM分类器中判决函数y^=sign(f(x))=sign(wTx+b)。能够採用f(x)与sigmoid函数结合。把f(x)=wTx+b解释成y=1的对数几率,SVM分类器概率输出(Platt 2000):
參数A,B通过最大释然的方法求解,为防止过拟合。求解A,B參数的样本数据应独立于训练分类的样本。因为在训练分类器阶段,没有考虑后验概率的问题,因此SVM后验概率结果不可靠。
5.几种损失函数的比較
如图:0-1损失是二分类问题的真正损失函数,合页损失与logistic损失是对0-1的损失函数的近似。最小二乘损失强化了分类点在正确分类边界处。
5.1合页损失函数
对于线性支持向量机。目标函数是最小化12||w||2+C∑mi=1ξi,当中ξi为每一个样本支付的代价;能够定义ξi=[1−y(i)(wTx(i)+b)]+;下标’+’表示取正值函数。假设z>0,[z]+=z;否则[z]+=0,因此目标函数能够定义为:
第一项关于被称为经验损失,定义z=y(i)(wTx(i)+b);损失函数为E(z)=[1−z]+。如上图所看到的,因为图形像一个合页,被称为合页损失。
5.2logistic回归损失
为了方便叙述,改变一下标记方法。记原始样本数据为(xi,ti)。t∈[1,−1],模型预測值为y(xi)=wTxi+b。结合sigmoid函数。能够把y(xi)带入sigmoid函数中,后验概率输出。
即p(t=1|y)=σ(y),则p(t=−1|y)=1−σ(y)=σ(−y)。综上两种情况p(t|y)=σ(ty)。
採用最大似然函数:
目标函数能够定义为对数似然的负数。同一时候加上一个二次正则化因子。
第一项即为logistic回归损失函数ELR(yt)=ln[1+exp(−yt)]
5.3最小二乘损失
与线下回归相似,能够採用最小二乘损失作为目标函数:
6.SVM多分类问题
1.one-versus-the-rest
对于K个类别的问题。在训练样本上,採用SVM训练出K个分类器。每一个分类器将训练样本分成Ki类与非Ki类,然后採用SVM训练出模型。如上图所看到的,每一个分类器仅仅能回答是否属于Ki的答案。此种方法会造成一个样本数据属于多个类别的情况,上左图阴影部分。
也能够採用:y(x)=maxk yk(x),即採用最大的函数间隔的那个类别。但不同的分类器有可能尺度不同样,函数距离自然不能作为推断标准。
同一时候,训练样本的不平衡也可能造成分类器有误差。
2.one-versus-one
在K分类的情况下,训练出K(K−1)2个分类器,即每两个类别训练出一个分类器,然后依据K(K−1)2个分类器的结果,採用投票方法给出预測结果。
此种方法依旧造成部分数据不属于不论什么类的问题,上右图阴影部分所看到的。
3.其它方法
1.一次训练K分类的SVM。
參数多。复杂度高;(Weston and Watkins 1999)
2.DAGSVM ;(Platt 2000)
參考:
1. PRML
2. MLAPP
3. CS 229-Andrew Ng
【机器学习具体解释】SVM解二分类,多分类,及后验概率输出的更多相关文章
- 机器学习经典算法详解及Python实现--基于SMO的SVM分类器
原文:http://blog.csdn.net/suipingsp/article/details/41645779 支持向量机基本上是最好的有监督学习算法,因其英文名为support vector ...
- 【机器学习基础】——另一个视角解释SVM
SVM的另一种解释 前面已经较为详细地对SVM进行了推导,前面有提到SVM可以利用梯度下降来进行求解,但并未进行详细的解释,本节主要从另一个视角对SVM进行解释,首先先回顾之前有关SVM的有关内容,然 ...
- 机器学习实验一SVM分类实验
一.实验目的和内容 (一)实验目的 1.熟悉支持向量机SVM(Support Vector Machine)模型分类算法的使用. 2.用svm-train中提供的代码框架(填入SVM分类器代码)用tr ...
- Python机器学习笔记:SVM(1)——SVM概述
前言 整理SVM(support vector machine)的笔记是一个非常麻烦的事情,一方面这个东西本来就不好理解,要深入学习需要花费大量的时间和精力,另一方面我本身也是个初学者,整理起来难免思 ...
- 机器学习---支持向量机(SVM)
非常久之前就学了SVM,总认为不就是找到中间那条线嘛,但有些地方模棱两可,真正编程的时候又是一团浆糊.參数任意试验,毫无章法.既然又又一次学到了这一章节,那就要把之前没有搞懂的地方都整明确,嗯~ 下面 ...
- 机器学习——支持向量机(SVM)
机器学习--支持向量机(SVM) 支持向量机(Support Vector Machine)广泛地应用于分类问题,回归问题和异常检测问题.支持向量机一个很好的性质是其与凸优化问题相对应,局部最优解就是 ...
- 机器学习:支持向量机(SVM)
SVM,称为支持向量机,曾经一度是应用最广泛的模型,它有很好的数学基础和理论基础,但是它的数学基础却比以前讲过的那些学习模型复杂很多,我一直认为它是最难推导,比神经网络的BP算法还要难懂,要想完全懂这 ...
- 视觉机器学习读书笔记--------SVM方法
SVM是一种二类分类模型,有监督的统计学习方法,能够最小化经验误差和最大化几何边缘,被称为最大间隔分类器,可用于分类和回归分析.支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题, ...
- 遵循统一的机器学习框架理解SVM
遵循统一的机器学习框架理解SVM 一.前言 我的博客仅记录我的观点和思考过程.欢迎大家指出我思考的盲点,更希望大家能有自己的理解. 本文参考了李宏毅教授讲解SVM的课程和李航大大的统计学习方法. 二. ...
随机推荐
- Java集合(五)--LinkedList源码解读
首先看一下LinkedList基本源码,基于jdk1.8 public class LinkedList<E> extends AbstractSequentialList<E> ...
- Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/config/spring/applicationContext.xml]
在搭建SpringMVC框架的时候遇到了这个问题 问题的原因: 就是没有找到applicatoincontext.xml这个文件, 因为idea自动生成的路径不正确 因此需要再web.xml里面, ( ...
- dns config
.: { forward . { force_tcp expire 50s health_check 50s } cache debug errors whoami log } Corefile .: ...
- MySQL字符集设定与查询
一.字符集设定 MySQL数据库允许对服务器.数据库.数据表.数据列级别的字符集作出互不影响的设定. 1.对服务器字符集设定是通过配置文件中选项character-set-server 设置,如 ch ...
- 02-Mysql中的运算符
Mysql中运算符 1.算术运算符运算符 作用+ 加法- 减法* 乘法/,DIV 除法,返回商%,MOD 除法,返回余数 mysql root@localhost: ...
- 第五章:C++程序的结构
主要内容: 1.作用域与可见性 2.对象的生存期 3.数据与函数 4.静态成员 5.共享数据的保护 6.友元 7.编译预处理命令 8.多文件结构和工程 作用域:函数原型作用域.块作用域.类作用域.文件 ...
- vim的操作命令
vim常用命令 在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行.你可以试试把代码缩进任意打乱再用n==排版,相当于一般IDE里的code ...
- Triangular Pastures (二维01背包)
描述Like everyone, cows enjoy variety. Their current fancy is new shapes for pastures. The old rectang ...
- [POJ2443]Set Operation(bitset)
传送门 题意:给出n个集合(n<=1000),每个集合中最多有10000个数,每个数的范围为1~10000,给出q次询问(q<=200000),每次给出两个数u,v判断是否有一个集合中同时 ...
- [POJ3041] Asteroids(最小点覆盖-匈牙利算法)
传送门 题意: 给一个N*N的矩阵,有些格子有障碍,要求我们消除这些障碍,问每次消除一行或一列的障碍,最少要几次. 解析: 把每一行与每一列当做二分图两边的点. 某格子有障碍,则对应行与列连边. ...