• 欢迎访问数智,大数据学习

【ML第六节】:机器学习之支持向量机SVM算法

机器学习 Raybra_Wei 2年前 (2018-09-06) 619次浏览 0个评论 扫描二维码

了解SVM英文名 support vector machine,因此简称 SVM,它是一种二分类模型,基本模型定义为特征空间上的间隔最大的线性分类器,学习策略是间隔最大化,最终转化为一个凸二次规划问题的求解。

引出:在描述支持向量机之前,先看一个有趣的问题:

【ML 第六节】:机器学习之支持向量机 SVM 算法

在这两副图里面,如果要将黑白两类点分为两类,那么那一根直线会比较好呢(后面解答)?因为两类点之间的分割足够宽,那么我们很容易就可以找到其中的某些直线将这两类点分开,这种数据被称为线性可分数据(图2为线性不可分)。就现在看来,这组数据维度比较小,那么要是数据是 3 维的,我们需要用什么将两类点分开呢?自然而然的想到平面了。如果向更高维度类推,那么分类的决策边界对象就会是一个超平面。

如果数据点离决策边界越远,那么其最后的预测结果就越可信。在上述问题中如果要选择最好的一条分割线,那我们就需要寻找一条使得点到分割面的距离(margin)最大。如下图:

【ML 第六节】:机器学习之支持向量机 SVM 算法

在上面点到分割面的距离被称为间隔,他的含义是:我们希望找到里分割超平面(支持平面)最近的点,确保它们离分割面的距离尽可能远。之所以希望间隔尽可能的大,是因为如果我们犯错或者在有限数据集上训练分类器的话,我们希望分类器尽可能健壮。

支持向量:就是离分割超平面最近的那些点。支持向量机的名字由来就是通过该算法来求得这些支持向量。

解决问题:如图,我们需要将分割面求出来:

【ML 第六节】:机器学习之支持向量机 SVM 算法

 

首先,可以将该分割线(这里是二维的点)写成:w·x+b=0,w 是指分割线的法向量,w·x 是指两个向量的内积:在二维空间上,表示两个向量的模的积乘上他们之间的夹角的余弦值。在上面的问题中,我们所需要求解的是 w 和 b;现在假设有两个支持平面经过了图中的支持向量,上面支持平面为:w·x1+b=1,下面的支持平面为:w·x2+b = -1(1 和-1 代表两类点);两式相减得到:w·(x1-x2)=2;这里是内积,那么原式就等价为:||w||*||x1-x2||*cosA = 2 ;角 A 代表向量 w 和 x1-x2 的夹角。很显然,(x1-x2)*cosA 就为两支持平面之间的距离 d;所以 d=2/||w||; 那么对于上面的点,都有 w·x1+b>=1; 下面的点都有 w·x2+b<=-1;两类点等价于:yi(w·xi+b)>=1 (yi=1,-1,I = 1,2,…N);距离等价于:【ML 第六节】:机器学习之支持向量机 SVM 算法

那么对于上述的问题,给定了一些约束条件然后求最优值,因此该问题是一个带约束条件的优化问题,这里的约束条件是 yi(w·xi+b) >= 1; 对于这类优化问题,需要用到拉格朗日乘子法。通过朗格朗日乘子法,我们就可以给予约束条件来表述原来的问题。由于这里的约束条件都是基于数据点的,那么我们可以将超平面写成数据点的形式。最后优化目标函数变成:

【ML 第六节】:机器学习之支持向量机 SVM 算法

这样 SVM 的主要工作就是去求解这些 alpha。

算法流程:

⑴收集数据

(2)准备数据:需要数值型数据。

(3)分析数据:有助于可视化分隔超平面。

(4)训练算法:SVM 的大部分时间都源自训练,该过程主要实现两个参数的调优。

(5)测试算法:十分简单的计算过程就可以实现。

(6)使用算法:几乎所有分类问题都可以使用 SVM,值得一提的是,S V M 本身是一个二类分类器,对多类问题应用 SVM 需要对代码做一些修改。


数智 Lab , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:【ML 第六节】:机器学习之支持向量机 SVM 算法
喜欢 (3)
[]
分享 (0)
关于作者:
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址