说明:本文是一篇学习笔记,在看完很多大佬对SVM的讲解之后,自己Copy和整理的,仅供学习使用,码字不易,喜欢请点赞!!!
一、SVM简介
支持向量机,英文名Support Vector Machine,因此简称SVM。SVM是应用最广泛、并且效果很不错分类算法。李航的《统计学习方法》对SVM的原理进行了详细的推导,CSDN的博客专家July也对SVM的数学原理进行了完整的总结。本文在看了这些大佬的文章后,做出了自己的整理,希望供自己日后学习使用,也提供给大家学习参考使用。本文主要包括以下部分:
- 线性可分SVM
- 线性不可分SVM
- SVM公式推导用到的知识简介
- 离群点处理
- 主要参数
二、线性可分情况下的SVM
2.1 线性可分简介
对于二分类问题,如果线性可分的话,你可能首先想到的是逻辑回归,前面我们分享过逻辑回归的原理,知道逻辑回归通过将线性回归的值使用Sigmoid函数映射到区间(0,1)之间,然后根据预测值与0的大小关系对比,来判断y属于哪一类。
在逻辑回归里面使用的是 θ T x \theta ^Tx θTx来表示分割超平面,其中有:
θ T x = θ 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n \theta ^Tx=\theta _0+\theta _1x_1+\theta _2x_2+...+\theta _nx_n θTx=θ0+θ1x1+θ2x2+...+θnxn
因此逻辑回归分类的结果,只和 θ T x \theta ^Tx θTx的正负有关,即:
i f if if θ T x > 0 \theta ^Tx>0 θTx>0 t h e n then then y = 1 y=1 y=1 , e l s e else else i f if if θ T x < 0 \theta ^Tx<0 θTx<0 t h e n then then y = 0 y=0 y=0。
这里令 θ 0 = b \theta _0=b θ0=b, θ 1 x 1 + θ 2 x 2 + . . . + θ n x n = w T x \theta _1x_1+\theta _2x_2+...+\theta _nx_n = w^Tx θ1x1+θ2x2+...+θnxn=wTx
则有:
θ T x = w T x + b \theta ^Tx= w^Tx+b θTx=wTx+b
在逻辑回归中,y的值取0和1,这里我们将分类的y的值取-1和1(即将分类标签0使用-1替换)。则有:
i f if if w T x + b > 0 w^Tx+b>0 wTx+b>0 t h e n then then y = 1 y=1 y=1 , e l s e else else i f if if w T x + b < 0 w^Tx+b<0 wTx+b<0 t h e n then then y = − 1 y=-1 y=−1。
并且我们有 y ( w T x + b ) > 0 y(w^Tx + b) >0 y(wTx+b)>0,则分类正确。
所以我们需要找到一个超平面,使得能分开两类数据。那么怎么分开效果更好呢,下图明显课件绿色分割平面由于红色分割平面。那么分开的标准是什么呢?请看下一节。
2.2 函数间隔 and 几何间隔
这部分参考了知乎朋友Jason对函数间隔和集合间隔的解释,参考链接见文末参考文献。
我么知道SVM是通过超平面来讲样本分成两类的,在超平面 w T x + b = 0 w^Tx+b=0 wTx+b=0确定的情况下,那么 ∣ w T x + b ∣ |w^Tx+b| ∣wTx+b∣可以表示点x距离超平面的相对距离,为什么是相对距离呢?一会儿你就知道了。
前面说了, y ( w T x