写在前面的话

大家好,我是小一大话系列 | SVM(中)—这才一节你就不行了?_分类算法

上节介绍了支持向量机算法,算是一个稍稍有难度的算法,其实主要是涉及到超平面这种不太好想象。如果你理解了上节,那么这节的内容很快就能掌握。

还记得上节最后还留了一个问题:存在噪声点的数据分类,应该怎么处理?

具体可以回顾下上节:大话系列 | SVM(上)

ok,一起来看一下如何解决这个问题,


针对样本的SVM

硬间隔线性支持向量机

还记得上节举的例子吗?

大话系列 | SVM(中)—这才一节你就不行了?_核函数_02

例子中提到的样本点都是线性可分的,我们就可以通过分类​​将样本点完全分类准确,不存在分类错误的情况​​,这种叫硬间隔,这类模型叫做硬间隔线性SVM

软间隔线性支持向量机

同样的,可以通过分类将样本点不完全分类准确,存在少部分分类错误的情况,这叫软间隔,这类模型叫做软间隔线性SVM

不一样的是,因为有分类错误的样本点,但我们仍需要将错误降至最低,所有需要添加一个惩罚项来进行浮动,所有此时求解的最大间隔就变成了这样:


非线性支持向量机

硬间隔和软间隔都是对线性可分的样本点进行分类,那如果样本点本身就不线性可分?

举个例子:下面这幅图

大话系列 | SVM(中)—这才一节你就不行了?_支持向量机_03


样本点并不是线性可分的,这种问题应该怎么处理呢?

解决这个问题之前,先看一下这个小短视频


视频中是将平面中的样本点映射到三维空间中,使用一个平面将样本线性可分

​所以我们需要一种方法,可以将样本从原始空间映射到一个更高纬的空间中,使得样本在新的空间中线性可分。这,叫核函数​

在非线性SVM中,核函数的选择关系到SVM的分类效果。

幸好的是,我们有多种核函数:线性核函数、多项式核函数、高斯核函数、sigmoid核函数等等,甚至你还可以将这些核函数进行组合,以达到最优线性可分的效果

核函数了解到应该就差不多了,具体的实现我们在下一节的实战再说


多分类支持向量机

还有最后一个问题:多分类

我们前面提到的所有例子最终都指向了二分类,现实中可不止有二分类,更多的是多分类问题

那么多分类应该怎么分呢?

有两种方法:一对多和一对一

一对多法

一对多法讲究的是将所有的分类分成两类:一类只包含一个分类,另一类包含剩下的所有分类

举个例子:现在有A、B、C、D四种分类,根据一对多法可以这样分:


  • ①:样本A作为正集,B、C、D为负集
  • ②:样本B作为正集,A、C、D为负集
  • ③:样本C作为正集,A、B、D为负集
  • ④:样本D作为正集,A、B、C为负集

大话系列 | SVM(中)—这才一节你就不行了?_支持向量机_04


一对一法

一对一法讲究的是从所有分类中只取出两类,一个为正类一个为父类

再举个例子:现在有A、B、C三种分类,根据一对一法可以这样分:


  • ①分类器:样本A、B
  • ②分类器:样本A、C
  • ③分类器:样本B、C

大话系列 | SVM(中)—这才一节你就不行了?_支持向量机_05


可以看到,两种方法各有优缺点,具体的都在思维导图里

大话系列 | SVM(中)—这才一节你就不行了?_支持向量机_06


写在后面的话

SVM讲完了。

截止到现在,分类算法我们都说过决策树、贝叶斯、k近邻和今天的支持向量机,分类算法也差不多就这些了,大家有空自己再复习复习。

后面还有两节集成分类算法,也都是在前面分类算法的基础上,分类效果也是要优于前面的基础分类算法,这个我们遇到了再说

还是那句话:学算法嘛,别给自己太大压力,理解差不多了就搞个项目练一练,这也是小一最初的想法,希望能对大家有点用处。