0%

SVM 算法讲解 (算法 + 案例)

1.SVM 讲解

新闻分类案例

SVM 是一个很复杂的算法,不是一篇博文就能够讲完的,所以此篇的定位是初学者能够接受的程度,并且讲的都是 SVM 的一种思想,通过此篇能够使读着会使用 SVM 就行,具体 SVM 的推导过程有一篇博文是讲得非常细的,具体链接我放到最后面,供大家参考。

1.1 支持向量机 (SVM) 的由来

首先我们先来看一个 3 维的平面方程:Ax+By+Cz+D=0

这就是我们中学所学的,从这个方程我们可以推导出二维空间的一条直线:Ax+By+D=0

那么,依次类推,更高维的空间叫做一个超平面:

x 代表的是一个向量,接下来我们看下二维空间的几何表示:

SVM 的目标是找到一个超平面,这个超平面能够很好的解决二分类问题,所以先找到各个分类的样本点离这个超平面最近的点,使得这个点到超平面的距离最大化,最近的点就是虚线所画的。由以上超平面公式计算得出大于 1 的就属于打叉分类,如果小于 0 的属于圆圈分类。

这些点能够很好地确定一个超平面,而且在几何空间中表示的也是一个向量,那么就把这些能够用来确定超平面的向量称为支持向量(直接支持超平面的生成),于是该算法就叫做支持向量机 (SVM) 了。

1.2 如何找到超平面

函数间隔

在超平面 wx+b=0 确定的情况下,|w_x+b | 能够表示点 x 到距离超平面的远近,而通过观察 w_x+b 的符号与类标记 y 的符号是否一致可判断分类是否正确,所以,可以用 (y(w*x+b)) 的正负性来判定或表示分类的正确性。于此,我们便引出了函数间隔(functional margin)的概念。定义函数间隔(用

表示) 为:

但是这个函数间隔有个问题,就是我成倍的增加 w 和 b 的值,则函数值也会跟着成倍增加,但这个超平面没有改变。所以有函数间隔还不够,需要一个几何间隔。

几何间隔

我们把 w 做一个约束条件,假定对于一个点 x ,令其垂直投影到超平面上的对应点为 x0 ,w 是垂直于超平面的一个向量,为样本 x 到超平面的距离,如下图所示:

根据平面几何知识,有

1.3 最大间隔分类器

对一个数据点进行分类,当超平面离数据点的 “间隔” 越大,分类的确信度(confidence)也越大。所以,为了使得分类的确信度尽量高,需要让所选择的超平面能够最大化这个 “间隔” 值。这个间隔就是下图中的 Gap 的一半。

1.4 后续问题

至此,SVM 的第一层已经了解了,就是求最大的几何间隔,对于那些只关心怎么用 SVM 的朋友便已足够,不必再更进一层深究其更深的原理。

SVM 要深入的话有很多内容需要讲到,比如:线性不可分问题、核函数、SMO 算法等。

在此推荐一篇博文,这篇博文把深入的 SVM 内容也讲了,包括推导过程等。如果想进一步了解 SVM,推荐看一下:

支持向量机通俗导论:blog.csdn.net/v_JULY_v/ar…

1.5 新闻分类实例

github 地址

寻觅互联网,少有机器学习通俗易懂之算法讲解、案例等,项目立于这一问题之上,整理一份基本算法讲解 + 案例于文档,供大家学习之。通俗易懂之文章亦不可以面概全,但凡有不正确或争议之处,望告知,自当不吝赐教!

.

.

.

.

欢迎添加微信交流!请备注 “机器学习”。