Kuekua's blog


YesterDay you said tomorrow!


SVM--支持向量机简述

此文是根据July大神所写的 支持向量机通俗导论(理解SVM的三层境界) 一文的读后感,记录下自己的一点感悟与体会。

SVM 它本质上即是一个二分类方法,用$$wT+b$$定义分类函数,于是求w、b,为寻最大间隔,引出$$1/2∥w∥^2$$ ,继而引入拉格朗日因子,化为对拉格朗日乘子α的求解(求解过程中会涉及到一系列最优化或凸二次规划等问题),如此,求w、b 与求α 等价,而α的求解可以用一种快速学习算法SMO,至于核函数,是为处理非线性情况,若直接映射到高维计算恐维度爆炸,故在低维计算,等效高维表现。

1.算法步骤:

1.1 选取合适的核函数 $$K(x_i,x_j)$$ 。
1.2 将训练数据 xi带入分类函数中,利用SMO求解系数αi。



这里,大部分αi为0,因为其对应的训练数据xi,有yi∗(w∗xi+b)>1,只有w∗xi+b=1的训练数据才真正对分类有效,即其对应的αi不为0,这些数据即为支持向量。
1.3 根据上一步求得得分类函数对待分类数据x进行二分类。即判断f(x)的正负。

2.核函数

核函数: K(xi,xj) ,一般选高斯核函数即可。而核函数的选择往往不是最关键的,分类器性能更依赖于训练数据。


核函数原理:
将低维线性不可分数据通过核函数映射到高维,达到线性可分的目的,并利用内积函数使运算量并未明显增加。

3.多分类器的应用

SVM是二分类器,对于N类问题的分类有两种办法:
1. 训练N个SVM分类器,每个分类器对应分类一种类别与其他N-1种类别,最终分类结果是具有最大正距离的类别,即正向离超平面距离最远。实际应用上应该是取f(x)的最大值。

2. 训练 N ∗ ( N − 1 ) / 2 个SVM分类器,每个分类器对应两两类别的分类,结果通过投票决定,投票依据仍为f(x)。

4.拉格朗日对偶性

凸函数寻找最大值问题的求解方法,其局部最大值即全局最大值!

目标函数:




这里的某些条件即KKT条件:


5.使用松弛变量处理outliers 方法

数据本身是非线性结构的,而只是因为数据有噪声。对于这种偏离正常位置很远的数据点,我们称之为outlier ,在我们原来的SVM模型里,outlier的存在有可能造成很大的影响,因为超平面本身就是只有少数几个support vector 组成的,如果这些support vector里又存在outlier 的话,其影响就很大了。为了处理这种情况,SVM 允许数据点在一定程度上偏离一下超平面。


博客全站共85.5k字