支持向量机SVM(Support Vector Machine)是一种有监督的学习模型,它的核心有两个:一、核函数(kernel trick);二、序列最小优化算法SMO(Sequential minimal optimization)是John Platt在1996年发布的用于训练SVM的有效算法。本文不打算细化SVM支持向量机的详细推倒算法,只涉及以上两点的内容做一个说明,最后给出算法实现和一个实验对比图。
核函数
核函数在处理复杂数据时效果显著,它的做法是将某一个维度的线性不可分数据采取核函数进行特征空间的隐式映射到高维空间,从而在高维空间将数据转化为线性可分,最后回归到原始维度空间实施分类的过程,常见的几个核函数如下:
多项式核:
高斯核(径向基函数):
线性核:
即是两个矩阵空间的内积。
SMO算法流程
SMO的主要两个步骤就是:
1、选择需要更新的一对和,采取启发式的方式进行选择,以使目标函数最大程度的接近其全局最优值;
2、将目标函数对和进行优化,以保持其它所有α不变。
以上是两个基本步骤,实现具体推到公式如下:
所需要收到的约束条件为:同时更新和,要求满足如下条件,就可以保证为0的约束
消去可得
其中