2020 线性模型—SVM(1)
线性模型
支持向量机(Support Vector Machine)
今天主要来说一说 SVM 的美,那么什么是 SVM 的美呢?SVM 的美源于她的严谨、源于她的精巧。虽然 SVM 很美同时也是很难追求,望尘莫及。因为其公式推导比较繁琐,这也就是在 AI 工程师面试时都喜欢问 SVM 问题,而且如果不假思索能够把 SVM 手推导出来。网上有学多关于 SVM 的分享和讲座,但是其中能把 SVM 推导过程将很通透的的确不多,并不是这些大佬没有吃透 SVM,可能是因为时间上问题,或者颗粒度不够的原因吧。我也是看了不下 5 6 个关于 SVM,到现在为止,还在熟悉 SVM 的推导过程。
在 2003 到 2007 年是 SVM 时代,到现在对于小样本依旧有自己的优势。SVM 优点是其容错性,也就是具有很高鲁棒性。
前苏联 vapnik 早在 70 年代中期就已经提出 SVM 算法,当冷战结束苏联解体后去了美国,经过一段时间,终于在 1995 年提出 SVM。
有关 SVM 对目标问题就比较难于理解,SVM 目标就是找到一个合理分割面(对于高维空间),首先我们来说一说什么线性可分(Linear Separable),可以找到一条分割线将两个类别分开,这样数据集就是线性可分数据集。如果数据集是线性可分的,那么就存在无数条分割线,SVM 的任务是从这些分割线中找到最优的分割线。
<img src="./images/svm_001.jpg">
如果一个线性可分数据集存在分割线,那么也就是存在无数条线性可分的分割线,那么在这么多线性可分分割线中哪一条线是最优的呢。以及我们如何定义最优的分割线。当得到一条分割线,可以通过对这条线做平行向上或者向下移动直到与一侧接触到样本停止(也就是样本点穿过该平行于分割线的线)。找到距离 d(刚刚我们通过平移得到分别在分割线两侧且通过样本点的两条直线之间距离),能够使 d 距离最大的分割线,d 就是 margin 间隔,将左右(或者说上下)移动平行线通过点样本点是支持向量(Support Vector),只与这些支持向量有关,所以 SVM 可以用在小样本的数据集上。
支持向量机,对于样本数很少样本,背后一个非常漂亮算法支持。