机器学习实战系列(五):SVM支持向量机

 

课程的所有数据和代码在我的Github:Machine learning in Action,目前刚开始做,有不对的欢迎指正,也欢迎大家star。除了 版本差异,代码里的部分函数以及代码范式也和原书不一样(因为作者的代码实在让人看的别扭,我改过后看起来舒服多了)。在这个系列之后,我还会写一个scikit-learn机器学习系列,因为在实现了源码之后,带大家看看SKT框架如何使用也是非常重要的。    


1、支持向量机概述

1.1 原理简述

所谓支持向量机,顾名思义,分为两个部分了解,一什么是支持向量(简单来说,就是支持(或支撑)平面上把两类类别划分开来的超平面的向量点),二这里的“机(machine,机器)”是一个算法。在机器学习领域,常把一些算法看做是一个机器,如分类机(当然,也叫做分类器),而支持向量机本身便是一种监督式学习的方法,它广泛的应用于统计分类以及回归分析中。

用一个二维空间里仅有两类样本的分类问题来举个小例子。 如图所示

正方形和圆圈是要区分的两个类别,在二维平面中它们的样本如上图所示。中间的直线就是一个分类函数,它可以将两类样本完全分开。在这种情况下边缘实心的几个数据点就叫做支持向量,这也是支持向量机这个分类算法名字的来源。在SVM中,我们寻找一条最优的分界线使得它到两边的边界都最大(最大化支持向量到分隔线(面)的距离)

一般的,如果一个线性函数能够将样本完全正确的分开,就称这些数据是线性可分的,否则称为非线性可分的。什么叫线性函数呢?在一维空间里就是一个点,在二维空间里就是一条直线,三维空间里就是一个平面,可以如此想象下去,如果不关注空间的维数,这种线性函数还有一个统一的名称——超平面

在实际中,我们经常会遇到线性不可分的样例,此时,我们的常用做法是把样例特征通过某种核函数映射到高维空间中去,使其线性可分。下图即是映射前后的结果,将坐标轴经过适当的旋转,就可以很明显地看出,数据是可以通过一个平面来分开的。

核函数的价值在于它虽然也是将特征进行从低维到高维的转换,但核函数厉害在它事先在低维上进行计算,而将实质上的分类效果表现在了高维上,避免了直接在高维空间中的复杂计算。

 

1.2 特点

将SVM算法和前面介绍的Logistic回归和决策树算法作对比,如下图所示,我们能直观看到SVM作为非线性分类器的优势。

 

优点:泛化错误率低,计算开销不大,结果易解释

缺点:对参数调节和核函数的选择敏感,原始分类器不加修改仅适用于处理二类问题

适用数据类型:数值型和标称型数据,类别标签为+1和-1

 

回到顶部

2、寻找最大分类间隔

2.1 关于线性分类器

上图中红蓝两类数据点可以用线性函数 g(x)=w*x+b 区分开,关于这个线性函数要注意一下三点

  1. 式中的 x 不是二维坐标系中的横轴,而是样本的向量表示,例如一个样本点的坐标是(3,8),则x=(3,8),而不是x=3
  2. 这个形式并不局限于二维的情况,在 n 维空间中仍然可以使用这个表达式,只是式中的 w 成为了 n 维向量
  3. g(x) 不是中间那条直线的表达式,中间那条直线的表达式是g(x)=0,即  w*x+b = 0,也把这个函数叫做分类面

易知中间那条分界线并不是唯一的,把它稍微旋转或平移一下,仍然可以达到上面说的效果。那就牵涉到一个问题,对同一个问题,哪一个函数更好?通常的衡量指标叫做分类间隔。 

2.2 分类间隔

在监督学习中,每一个样本由一个特征向量和一个类别标签组成,如下:

Di=(xi,yi)

xi 就是特征向量,就是yi 分类标记。

在二元的线性分类中, 这个表示分类的标记只有两个值,+1和-1。有了这种表示法,我们就可以定义一个样本点到某个超平面的间隔(函数间隔):

注意到如果某个样本属于该类别的话,那么wi*x+b > 0(这是因为我们所选的g(x)=wx+b就是通过大于0还是小于0来判断分类),而yi也大于0;若不属于该类别的话,那么wi*x+b < 0 ,而yi也小于0,这意味着yi(w*xi+b)总是大于0,而它的值就等于|wxi+b|, 也即|g(xi)|.

现在把w和b进行归一化,即用w/||w||和b/||w||分别代替原来的w和b,那么间隔就可以写成如下形式,叫做几何间隔,几何间隔所表示的正是点到超平面的欧式距离。<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图灵的猫.

小二,给客官上酒!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值