前言
最近发现自己的基础知识不够扎实,面对别人的问题总是“知其然不知其所以然”。出现这个问题的朋友周围有很多,大多数人都是“拿来主义”,想着“有了开源库,有了函数包,只要会用就行,在遇到具体问题的时候再去寻找相应的解决办法”,这种“非系统”的学习思想其实殆害无穷,在自己想要踏实做一个工程时,会出现眼界窄,能力不足的问题,有时候为解决一个问题千方百计地找到了一个非常好用的函数,而这个函数自己根本没听过。如果自己深入专研这方面的话,第一反应就是使用最便捷的方法了,这便是“扎实”的基本功带来的好处。
在简书、知乎、优快云上有许多前辈已经总结了好的学习资料,自己也从中获益良多,但每次不论文章写得多好,过段时间还是忘了,反思了一下还是没有将其“私有化”,因此现在用自己的话总结一些基础知识,如果在学习记录的同时,可以给大家理解枯燥的理论知识带来一点点帮助,不胜荣幸。
1 面试中考察SVM的必要性
其一:面试官便于了解面试者的基础知识,数学基本功,学习态度,可以通过一些基础模型来看出这个面试者是否能够胜任该岗位。
其二:由于机器学习范畴大,流派多,面试官懂的可能你不懂,你懂的可能面试官没有提前准备,索性来个大家都应该懂的——SVM、LR等。
因此,面试前准备一些基础知识的理解和推导是对本次面试最起码的态度(面试官把最基本的题都告诉你了,如果连这些你都答不上来,那不好意思了)。
2 基本介绍
SVM最初是为解决二元分类问题而设计的,假设我们在桌面(二维平面下)上有两种颜色的球,我们需要用一条直线把它们分成两类。如果在平面上我们没法用一条直线把它们分成两类,我们就采取猛拍桌子(核技巧)的方法,把球振到空中(多维空间下),迅速扔出一张纸,将两个颜色的球在空间中分隔开。我们把这些球叫做 「data」(数据源),把直线叫做 「classifier」(分类器), 拍桌子叫做「kernelling」(建立核函数), 那张纸叫做「hyperplane」(超平面)。
3.SVM的推导(线性可分的情况)
给定样本集
其中 x x 为 维的向量(有m个属性的一条训练数据)。
目的:寻找一个最优(泛化能力最强)的超平面,将不同类别的样本分开。
超平面可用
如果超平面将样本成功分类,则下式成立
使等号成立的几个样本点称为“支持向量”,两个异类支持向量到超平面的距离之和为