支持向量机将机器学习问题归结为带约束的凸优化问题,通过引入拉格朗日对偶来将优化问题进行更方便的求解,而对偶问题的求解可通过SMO算法,将多个变量的优化问题分解为多个选择两个变量的熟悉求解一元二次函数最小值问题,让对偶问题的求解更加高效。核函数可以隐式的定义低纬空间到高纬空间的映射,让低纬空间线性不可分的问题转变为高维空间线性可分的问题,与对偶问题求解非常方便的结合起来。
SVM因为牵扯到优化问题求解和泛函分析的内容,是不容易让初学者掌握的机器学习模型之一,但由于其有着完美且优雅的数学理论支撑,且长时间内模型的泛化能力强,一直是重要的机器学习模型之一,本文尝试由浅入深,紧扣每一个细节,从一个通俗易懂的角度来解释SVM的推导过程,并给出简单的Java版本实现,帮助深入理解SVM。
本文包括以下几个内容:
一、支持向量机的思想
对于一个二分类的问题,数据点到分离超平面的距离可以理解为此模型对于该数据点分类的置信度,
二、学习问题归纳
三、对偶问题求解
四、软间隔最大化
五、序列最优化算法及工程实现
六、核技巧及泛函分析理论
本文参考文献主要为李航老师的《统计机器学习》以及《机器学习实践》,源码可见github主页(https://github.com/bannima/SVM)。
一、支持向量机的思想