数据挖掘十大算法(三):SVM支持向量机[初步]

支持向量机(Support Vector Machine, SVM)算法,是一种用于二分类的分类算法,通过数据集训练得到的分类器,可以用来预测新的样本的类别(正例或负例两种类别)。SVM也可以用于回归。

文本仅讲述支持向量分类器(SVC)。根据数据集的不同,SVM可以分为三类:

1.线性可分

2.线性不可分

3.非线性

下面,以线性可分的情况为例,讲解SVM的概念和基本公式推导过程。


一、什么是SVM

先以一个二维数据集实例为例,介绍SVM的概念,直观理解SVM的作用。

如下图所示,是一个训练集(二维平面上的点集),其中黑色为正例,红色点为负例,这是他们的类别标签(label)。现在,需要根据训练集求出一条线,对测试集的点进行分类。在直线两侧的样本分别属于不同的两类。


现在,有如下图的两条直线,用于分类。


那么哪条直线的分类效果最好呢,直观地看,是L2。可以看一下,这两种情况下对新的样本(下图中绿色的点)的分类预测情况,如下图。


可以看出,在第一种分类下,第一个绿点被分类为负例,然而直观地看,这个点明显于是正例的一类,第二个绿点的分类情况类似。在第二种分类下,两个绿点(直观上)都被正确地分类,所以我们选择L2作为分类的标准。


下面,记我们选择的这条直线为L。我们将L沿着左下和右上的方向,移动,直到直线分别第一次接触到两个类中的点,达到如下图所示的状态。


我们将L+和L-上的点称作:支持向量,这就是支持向量机这个名称的来源。

回过头来思考之前那个问题,为什么L2比L1好?因为L2(L),距离支持两个类别中的支持向量的距离大。可以看下面的对比图。


如上图,前面提到的第一条直线,距离两个类的支持向量的距离非常小。因此,我们在寻找最优的直线的时候,可以以直线距离两个类中的支持向量的和作为目标函数,让这个目标最大化,对应的直线,就是我们要寻找的直线。


二、SVM数学表达与推导

下面,我们用数学符号表示、推导这些过程。上面的例子是二维平面内的点,而实际的数据集可能不止二维,而是高维数的,因此,下面的一些数学符号、数学用语可以用来表示高维数据集



上述问题,是一个关于α的二次规划问题,可以利用已有的程序包求解,也可以利用更高效的SMO算法求解(SMO算法略)。关于SVM最基本的数学推导,就是上面这些。


三、小结

本文意在初步探讨支持向量机原理,关于线性不可分、非线性SVM以及SMO算法原理等更深入的问题,将在后面的文章中详细介绍。参考文献:

1. https://www.cnblogs.com/en-heng/p/5965438.html

2. https://blog.csdn.net/amds123/article/details/53696027 2. https://blog.csdn.net/amds123/article/details/53696027

猜你喜欢

转载自blog.csdn.net/ten_sory/article/details/81063911
今日推荐