该节的内容是支持向量机(SVM, support vectormachine)。
这里首先要推荐一下July的SVM三层境界([http://blog.csdn.net/v_july_v/article/details/7624837](http://blog.csdn.net/v_july_v/article/details/7624837))由于《机器学习实战》关于SVM一章的内容很多,本节先简单归纳一下关于支持向量机的基础。
**一.概念描述**
支持向量机,就是通过最大化支持向量到分类超平面之间的分类间隔。分类超平面就是我们想要得到的决策曲面;支持向量就是离分类超平面最近的点,而间隔即为支持向量到分类超平面的距离。
核函数:这是一种将SVM扩展到更多数据集的方式,一般的说法是,核函数的作用是将数据从低维空间映射到高维空间,使得线性不可分变得线性可分。这句话的意思用个简单的例子来说明:
有:`a1 * x1^2 + a2 * x2^2 + a3 * x1x2 = 0`
此时令:`z1=x1^2,` `z2=x2^2`, `z3=x1x2`
这样就由原来的二维映射到三维空间了,而此时问题变成线性可分了。我们知道,在求解SVM时,**所有的运算都可以写成内积的形式**,但是在高维空间中计算内积往往比较复杂,有时可能出现维数灾难,此时我们就可以把内急运算符换成核函数,从而解决这个问题。
设非线性映射`Φ(x)`将全部原始数据 `x` 变换到另一个特征空间,在训练SVM时,需要计算两个样本间的内积,两个样本`xi`和`xj`对应的高维空间的内积为:`<Φ(xi), Φ(xj)>`,该内积可以通过一个核函数`K(xi, xj)`计算得到。而不用知道这个样本映射Φ(x)是怎样。径向基函数是SVM中常用的一个核函数:
![](https://box.kancloud.cn/2016-01-05_568b383834d96.jpg)
径向基函数是一个采用向量作为自变量的函数,能够基于向量距离运算输出一个标量。
**二.书中提到的几点**
* SVM可能是现成最好的分类器,这里“现成”指的是分类器不加修改即可直接使用。几乎所有的分类问题都可以使用SVM,但是,SVM本身是一个二值分类器,对于多类分类问题,如果需要使用SVM,则需要对代码做一些修改。
* SVM的实现方法有很多,最常用的就是序列最小最优化算法(SMO,Sequential Minimal Optimization)
* 支持向量机是一种分类器。之所以称为“机”是因为它会产生一个二值决策结果,即它是一种决策“机”。