机器学习-支持向量机(python3代码实现)

支持向量机

哈尔滨工程大学-537

算法原理:

一、寻找最大间隔

如下图所示,用一条分割线将两类点分割开来(二维的是一条分割线,多维的就是分隔面),显然三条线都能将两类点分割开来,然而,从直观来看,红色的分割线显然分割效果最好。为什么这么说呢?

这里写图片描述

因为红色的分割线到两边最近的点的距离更远。可以直观把两边的两类点想象成地雷,我们有一支红军要通过这片雷区,显然,沿着绿色和灰色的路线行军,两边不会踩到地雷的安全区域非常的窄,而沿着红色的路线行军,安全区域明显更宽。我们的目的就是要找到能够使安全区域最宽的行军路线,最终使红军夺得革命战争的胜利。

如下图所示,距离分割线最近的几个点的位置,决定了分割线的位置,形象的来说,就是距离红军队伍最近的几个地雷的位置,决定了红军穿过雷区的行军路线,如果距离红军最近的地雷的位置发生改变,红军的行军路线就必须随之改变,否则安全区域就有可能变窄,踩到地雷的可能性就会增加。
这里写图片描述

那么此时要解决的目标就非常明确了,即找到距离分割线最近的那几个点,而这几个距离分割线最近的点,就叫做支持向量,这就是支持向量机一词的由来。
那么如何找到距离分割线最近的那几个点?

由高中数学可知:空间中一个点(x1,y1,z1)(x1,y1,z1)到平面线ax+by+cz+d=0ax+by+cz+d=0 的距离为:ax1+by1+cz1+da2+b2+c2ax1+by1+cz1+da2+b2+c2

扩展为多维的情况,点Xi=(xi1,xi2...xik)Xi=(xi1,xi2...xik)到一个超平面WTX+b=0WTX+b=0的距离为:WTXi+b||W||WTXi+b||W||,其中WW X kk维向量(因为 X i kk个特征)。

于是当前的任务就是要找到 W T X i + b | | W | | 值最小的数据点,将该点的WTXi+b||W||WTXi+b||W||最大化,此时的WW b 就是我们要找的最优分割超平面的参数。

由高中数学可知:若点(x1,y1)(x1,y1)在直线y=ax+by=ax+b的上侧,则将点(x1,y1)(x1,y1)带入直线得ax1+by1>0ax1+b−y1>0,反之,若在下侧,则带入直线得ax1+by1<0ax1+b−y1<0;

推广到多维的情况:若数据点XiXi在超平面正侧,WTXi+b>0WTXi+b>0,那么将在这一侧的数据点定义为1类,即类别标签yiyi为1,那么yi(WTXi+b)>0yi(WTXi+b)>0
反之,若数据点XiXi在超平面的负侧,WTXi+b<0WTXi+b<0,那么将这一侧的数据点定义为-1类,即类别标签yiyi为-1,那么yi(WTXi+b)>0yi(WTXi+b)>0 , 这样在比较大小的时候,就避免了负数的出现。

那么此时,首要任务就是找到yi(WTXi+b)||W||yi(WTXi+b)||W||最小的数据点,并将该点的yi(WTXi+b)||W||yi(WTXi+b)||W||值最大化。

若限制yi(WTXi+b)1yi(WTXi+b)≥1,则距离超平面最近的点的yi(WTXi+b)yi(WTXi+b)应等于1,而||W||||W||则越大,说明该点离超平面越近。

如下图,可以更加直观的理解以上说法,虚线WTX+b1=0WTX+b−1=0和虚线WTX+b+1=0WTX+b+1=0分别是两条与直线WTX+b=0WTX+b=0平行的直线(由高中数学可知,WTX+b1=0WTX+b−1=0在直线上侧,WTX+b+1=0WTX+b+1=0在直线下侧),通过归一化系数W,可以使最后的常数一直保持+1和-1,也就是说,这两条虚线可以在平面上任意移动,而始终保持WTX+b1=0WTX+b−1=0WTX+b+1=0WTX+b+1=0的形式。那么现在的要求就是,让这两条虚线之间的距离最大,且要保证所有点都在这两条虚线之外(或在虚线之上),即1类样本点都在WTX+b1=0WTX+b−1=0的正侧(或在线上),即WTXi+b10WTXi+b−1≥0;而-1类样本点都在WTX+b+1=

评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值