机器学习之支持向量机简介

2011-08-30 14:54 来自 zhaoshx

 

机器学习之支持向量机简介

       支持向量机(Support Vector Machine,SVM)是AT&TBell 实验室的V.Vapnik等人提出的一种新型机器学习算法。到目前为止,支持向量机已应用于孤立手写字符识别6&7、网页或文本自动分类、说话人识别、人脸检测、性别分类、计算机入侵检测、基因分类、遥感图象分析、目标识别、函数回归、估计、函数逼近、密度估计、时间序列预测及数据压缩、文本过滤、数据挖掘、非线性系统控制等各个领域的实际问题中。

       SVM的主要思想是针对两类分类问题,寻找一个超平面作为两类训练样本点的分割,以保证最小的分类错误率。在线性可分的情况下,存在一个或多个超平面使得训练样本完全分开,SVM的目标是找到其中的最优超平面,最优超平面是使得每一类数据与超平面距离最近的向量与超平面之间的距离最大的这样的平面,如下图所示,超平面W是h值最大的最优超平面;对于线性不可分的情况,通过使用核函数(一种非线性映射算法将低维输入空间线性不可分的样本转化为高维特征空间使其线性可分。

        SVM的基本模型设输入模式集合{ x[i]} ∈ Rn 由两类点组成, 如果x[i]属于第1类, 则y[i] = 1 , 如果x[i]属于第2类, 则y[i] = -1 , 那么有训练样本集合{ x[i] , y[i]} , i = 1 ,2,3 , ⋯, n ,求最优分类面wx-b=0,满足:y[i](w·x[i] - b) >= 1;并使2*h= 2/‖w‖最大,即min‖w‖*‖w‖/2;根据对偶理论,可以通过解该问题的对偶问得到最优解,对偶问题为:

      max∑α[i] – 1/2 ∑α[i]*α[j]*y[i]*y[j]*x[i]*x[j]

      0≤α[i]≤C*∑α[i]*y[i]=0

其中x[i] ·x[j]表示这两个向量的内积,当对于线性不可分的情况,用核内积K(x[i], x[j])(通过核函数映射到高维空间中对应向量的内积)代替x[i] ·x[j]。根据对偶问题的解α,求得w,b ,得到最优分类面

       SVM模型求解:当训练样本向量很多、向量维数很大时,解上面的对偶问题是一个解大型矩阵的问题,采用传统的矩阵求逆无论在空间复杂度上还是在时间复杂度上都是不可取的。序贯最小优化(sequential minimal optimization,简称SMO)算法是目前解决大量数据下支持向量机训练问题的一种十分有效的方法。

       SMO的基本思想是每次只选择违法KTT条件最严重的两个拉格朗日乘子,通过求解只有两个变量的二次规划问题,更新选取的拉格朗日乘子,此时保持其他拉格朗日乘子,通过不断的迭代,最终得到问题的最优解。SMO的基本步骤为:

       1、将a向量分成两个集合,工作集aB,固定集aN,即:a = {aB, aN }。初始化时,aB为a全部的分量,aN为空集;

        2、每次对aB解决一个小的二次规划问题,保持aN中的值不变;

       3、每次迭代选择不同的aB和aN ,每解决一个小规模优化问题,都在原来的基础上向最终的解集前进一步;

       4、每次迭代检查当前结果,满足优化条件,则找到了优化问题的解,算法结束。

posted @ 2012-03-12 00:47  HUJJ  阅读(460)  评论(0编辑  收藏  举报