关于机器学习算法的程序,在我的Github上,欢迎大家follow:
Github地址:https://github.com/xuesongjaybluce
SVM在之前的很长一段时间内是性能最好的分类器,它有严密而优美的数学基础作为支撑。在各种机器学习算法中,它是最不易理解的算法之一,要真正掌握它的原理有一定的难度。在本文中,我将带领大家通过一张图来理清SVM推导过程的核心过程。
简介:SVM由Vapnik等人在1995年提出,在出现之后的20多年里它一直是学术界和工业界最具影响力的机器学习算法之一。在深度学习技术出现之前,使用高斯核的SVM在很多问题上一度取得了最好的效果。SVM不仅可以用于分类问题,还可以用于回归问题。它具有泛化性能好,适合小样本等优点,被广泛应用于各种实际问题。
最简单的SVM从线性分类器导出,根据最大化分类间隔的目标,我们可以得到线性可分问题的SVM训练时求解的问题。但现实应用中很多数据是线性不可分的,通过加入松弛变量和惩罚因子,可以将SVM推广到线性不可分的情况,具体做法是对违反约束条件的训练样本进行惩罚,得到线性不可分的SVM训练时优化的问题。这个优化问题是一个凸优化问题,并且满足Slater条件,因此强对偶成立,通过拉格朗日对偶可以将其转化成对偶问题求解。
到这里为止,支持向量机还是一个线性模型,只不过允许有错分的训练样本存在。通过核函数,可以将它转化成非线性模型,此时的对偶问题也是一个凸优化问题。这个问题的求解普遍使用的是SMO算法,这是一种分治法,它每次选择两个变量进行优化,这两个变量的优化问题是一个带等式和不等式约束条件的二次函数极值问题,可以求出公式解,并且这个问题也是凸优化问题。优化变量的选择通过KKT条件来确定。
支持向量机的主要思想可以概括如下:给定训练样本,支持向量机建立一个超平面作为决策曲面,使得正例和反例之间的隔离边缘被最大化。
在处理更加复杂的线性不可分的模式时,我们原则性的对算法的基本思想进行扩展。引入内积的思想,加入核技巧,使线性不可分的数据在高维空间中线性可分。
1 线性可分模式的最优超平面
考虑训练样本{(,)},其中是输入模式的第i个样例,