支持向量机SVM原理

看了就要关注我,喵呜~

★ 前言 ★

今天让我们一起来学习一下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实战,敬请期待!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180806G0HAKH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券