看了就要关注我,喵呜~
★ 前言 ★
今天让我们一起来学习一下SVM的知识,本篇文档源码和示例源代码已经上传到:https://github.com/parker78/machine-learning/blob/master/svm-20180702.muse。
支持向量机概述
所谓支持向量是指那些在间隔区边缘的训练样本点。这里的“机(machine,机器)”实际上是一个算法。在机器学习领域,常把一些算法看做是一个机器。支持向量机(Support vector machines,SVM)与神经网络类似,都是学习型的机制,但与神经网络不同的是SVM使用的是数学方法和优化技术。
解决的问题
将给定数据分为两类,当有一个数据点需要进行预测时,可以根据已经分类好的结果,对其进行归类。在support vector machines(SVM) 中,一个数据点表示为一个p维的向量。我们需要找到一个p-1维的超平面(hyperplane)。SVM是一种线性分类器(Linear classifier)。
什么是线性可分?
下图线性可分的例子中,有各种各样的分割方式,那么选择哪种方式最优?损失函数如何确定?
问题描述
正样本和负样本如上图3中所示,我们需要找到一条线将正负样本分开。需要找到下图的红线。
如果是正样本,投影距离应该大于某个常
数。
为了更加通用,我们使用下面的方式来进行表示。
如果
表示是正样本。
上面的公式是一个决策函数,我们需要加上些约束条件,来求解向量w和b。
我们添加的约束条件:
为什么选择1和-1?
如果所有的样本点都满足上面的条件,那么一定满足下面的条件。
换句话说:数学上的便利
约束条件1 比较难求,因此引入y,描述如下:
对于正样本,y取1;对于负样本,y取-1。得到新的约束条件。
因此有:
对于那些处在边界上的点有:
橙色的线表示正样本向量,蓝色的线表示负样本向量,绿色的线表示差值,方向量方向投影表示正负样本间的距离。
上面做的变换关键是:1-b - (-1 -b)
为什么 求1/x的最大值 用 (1/2)*x^2的最小值替代? 数学上的便利
问题推导
拉格朗日乘子法:
求偏导:
偏导为零后,最后得到:
代回到L中可以得到:
下期我们将用Python实现SVM实战,敬请期待!
领取专属 10元无门槛券
私享最新 技术干货