首页 > 代码库 > svm

svm

最大间隔分类器Maximum Margin Classifier的定义
 技术分享
函数间隔:
  技术分享       技术分享
 
几何间隔:
 技术分享         技术分享
目标函数:
技术分享

技术分享

  现在的目标函数是二次的,约束条件是线性的,所以它是一个凸二次规划问题。这个问题可以用现成的QP (Quadratic Programming) 优化包进行求解。

  由于这个问题的特殊结构,还可以通过拉格朗日对偶性变换到对偶变量的优化问题,即通过求解与原问题等价的对偶问题(dual problem)得到原始问题的最优解,

  一言以蔽之:在一定的约束条件下,目标最优,损失最小。

  一者对偶问题往往更容易求解;

  二者可以自然的引入核函数,进而推广到非线性分类问题。

拉格朗日对偶性:

技术分享

目标函数:

  技术分享

转换成对偶函数:

 技术分享

换言之,之所以从minmax的原始问题技术分享,转化为maxmin的对偶问题技术分享,一者因为技术分享技术分享的近似解,二者,转化为对偶问题后,更容易求解。

下面可以先求L 对w、b的极小,再求L 对技术分享的极大。

对偶问题求解的3个步骤

(1)、首先固定技术分享要让 L 关于 w 和 b 最小化,我们分别对w,b求偏导数,即令 ?L/?w 和 ?L/?b 等于零

技术分享

技术分享

(2)、求对技术分享的极大,即是关于对偶问题的最优化问题。经过上面第一个步骤的求w和b,得到的拉格朗日函数式子已经没有了变量w,b,只有技术分享

技术分享

 (3)在求得L(w, b, a) 关于 w 和 b 最小化,以及对技术分享的极大之后,最后一步便是利用SMO算法求解对偶问题中的拉格朗日乘子技术分享

 技术分享

惩罚因子C

其中: 技术分享 是一个参数,用于控制目标函数中两项(“寻找 margin 最大的超平面”和“保证数据点偏差量最小”)之间的权重。

    C越大表示有些样本很重要,决不能分类错误就给一个很大的C,要求保证分类误差很小,不能分类错误

      C越大越重视离群点和分类错误点

   C是一个你必须事先指定的值,指定这个值以后,解一下,得到一个分类器,然后用测试数据看看结果怎么样,如果不够好,换一个C的值,再解一次优化问题,得到另一个分类器,

   再看看效果,如此就是一个参数寻优的过程,但这和优化问题本身决不是一回事,优化问题在解的过程中,C一直是定值,要记住。

松弛变量ξ

SVM引入了松弛变量ξ是为解决过拟合的办法

SMO算法

 第一步选取一对技术分享技术分享,选取方法使用启发式方法;

 第二步固定除技术分享技术分享之外的其他参数,确定W极值条件下的技术分享,     其中技术分享技术分享表示。

 那么在每次迭代中,如何更新乘子呢?

  • 步骤1:先“扫描”所有乘子,把第一个违反KKT条件的作为更新对象,令为a2;
  • 步骤2:在所有不违反KKT条件的乘子中,选择使|E1 ?E2|最大的a1(其中技术分享,而技术分享,求出来的E代表函数ui对输入xi的预测值与真实输出类标记yi之差)。
  • 值得一提的是,每次更新完两个乘子的优化后,都需要再重新计算b,及对应的Ei值。
核函数 
选择不同的核函数,可以生成不同的SVM,常用的核函数有以下4种:
⑴线性核函数
⑵多项式核函数
⑶径向基函数
⑷二层神经网络核函数

SVM的优点:

   SVM学习问题可以表示为凸优化问题,因此可以利用已知的有效算法发现目标函数的全局最小值。

  而其他分类方法(如基于规则的分类器和人工神经网络)都采用一种基于贪心学习的策略来搜索假设空间,这种方法一般只能获得局部最优解。 

SVM的缺点:

SVM一般只能用在二类问题,对于多类问题效果不好

svm