支持向量机
支持向量机(support vector machines)是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。
支持向量机是一种分类器。之所以称为“机”是因为它会产生一个二值决策结果,即它是一种决策“机”。支持向量机的泛化错误率较低,也就是说它具有良好的学习能力,且学到的结果具有很好的推广性。这些优点使得支持向量机十分流行,有些人认为它是监督学习中最好的定式算法。
支持向量机试图通过求解一个二次优化问题来最大化分类间隔。在过去,训练支持向量机常采用非常复杂并且低效的二次规划求解方法。John Platt引入了SMO算法,此算法可以通过每次只优化2个alpha值来加快SVM的训练速度。我们会先讨论了一个简化版本所实现的SMO优化过程,接着给出了完整的Platt SMO算法。相对于简化版而言,完整版算法不仅大大地提高了优化的速度,还使其存在一些进一步提高运行速度的空间。有关这方面的工作,一个经常被引用的参考文献就是“Improvements to Platt’s SMO Algorithm for SVM Classifier Design”。
核方法或者说核技巧会将数据(有时是非线性数据)从一个低维空间映射到一个高维空间,可以将一个在低维空间中的非线性问题转换成高维空间下的线性问题来求解。核方法不止在SVM中适用,还可以用于其他算法中。而其中的径向基函数是一个常用的度量两个向量距离的核函数。
支持向量机是一个二类分类器。当用其解决多类问题时,则需要额外的方法对其进行扩展。SVM的效果也对优化参数和所用核函数中的参数敏感。
SVM优点:
泛化错误率低,计算开销不大,结果易解释。
SVM缺点:
对参数调节和核函数的选择敏感,原始分类器不加修改仅适用于处理二类问题。 适用数据类型:数值型和标称型数据。