《机器学习实战》学习笔记:支持向量机

来源:互联网 发布:魅族6手机备份数据 编辑:程序博客网 时间:2024/04/30 20:22

该节的内容是支持向量机(SVM, support vectormachine)。

这里首先要推荐一下July的SVM三层境界(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时,需要计算两个样本间的内积,两个样本xixj对应的高维空间的内积为:<Φ(xi), Φ(xj)>,该内积可以通过一个核函数K(xi, xj)计算得到。而不用知道这个样本映射Φ(x)是怎样。径向基函数是SVM中常用的一个核函数:

这里写图片描述

径向基函数是一个采用向量作为自变量的函数,能够基于向量距离运算输出一个标量。

二.书中提到的几点

  • SVM可能是现成最好的分类器,这里“现成”指的是分类器不加修改即可直接使用。几乎所有的分类问题都可以使用SVM,但是,SVM本身是一个二值分类器,对于多类分类问题,如果需要使用SVM,则需要对代码做一些修改。
  • SVM的实现方法有很多,最常用的就是序列最小最优化算法(SMO,Sequential Minimal Optimization)
  • 支持向量机是一种分类器。之所以称为“机”是因为它会产生一个二值决策结果,即它是一种决策“机”。
2 0