【机器学习实战】——SVM支持向量机

【引言】
SVM可以说是目前最好的现成的分类器,即不加任何修改就可以直接使用。本文对应《机器学习实战》第六章内容,具体理论知识可以联系西瓜书第七章内容和博客笔记,此处只介绍SMO算法的实现与学习心得,以及关于核函数的选择和实现。


1、基于最大间隔分隔数据

支持向量机:

优点:泛化错误率低,计算开销小,可解释性强;
缺点:调参工作量大,核函数敏感性强;
适用数据类型:标称型和数值型

线性可分:在平面内能够划出一条直线将两组数据点分开,则这组数据就被称为线性可分;
分隔超平面:当数据点的特征维度不仅仅是二维后(例如:1001维的特征数据集,那么就需要1000维的分隔超平面来划分),划分数据集的“直线”。
决策边界:与划分超平面、分隔超平面、SVM中所说的超平面是同一个意思,也就是常说的支持向量
间隔:点到分隔面的距离,尽可能大,这样才能保证分类器的健壮性,即在当数据集元素增多时,也能起到很好的划分作用。
支持向量:离分隔超平面最近的那些点。
SVM的设计意图:希望找到离分隔超平面最近的点,确保它们离分隔面的距离尽可能远。

因此,SVM的设计目的便是对超平面内的数据集进行划分,并且尽可能使支持向量与离决策面的距离最大化


2、寻找最大化间隔

分隔超平面公式:
w T x + b w^Tx +b
而平面上一点A到分隔超平面的距离公式,即其法线或垂线的长度为:
w T A + b w \frac{|w^TA+b|}{|w|}
显然,作为描述分隔超平面的向量w和常数b,共同决定了超平面划分公式,而我们的目的,也正是寻找最优的w和b


2.1 分类器求解的优化问题

利用海瑟矩阵处理输入的超平面得到:
f ( w T + b ) f(w^T+b)
目的是类似于sigmoid函数,对其做出二值化处理,当 w T + b < 0 w^T+b<0 时,输出-1;反之为+1。这里之所以这样标注,是为了便于在计算协方差时直观地反应与分隔超平面的距离远近
l a b e l ( w T + b ) label * (w^T+b)
label的正负号反应了数据点是正例还是反例, w T x + b w^Tx+b 的大小反应了点与分隔超平面的距离(被称为函数间隔)两者始终同号,值越大,离分隔超平面越远;值越靠近1,就说明离分隔超平面越近。
如果对上述公式稍作修改:
l a b e l ( w T + b ) w label * \frac{(w^T+b)}{||w||}
那么就可以反应分隔点(支持向量)与分隔超平面(支持向量机)之间的几何间隔

【正如上节说到,我们需要找到分类器中的w和b,那么就需要先找到两个不同类别间间隔最小的点集合,再从这个点集合中找到与划分平面距离最大的的点作为支持向量
公式化后可以写作:
a r g m a x w , b { m i n n ( l a b e l ( w T x + b ) ) 1 w } argmax_{w,b}\{min_n(label·(w^Tx+b))·\frac{1}{||w||}\}

显然,利用最优化的知识不难发现,这里的约束条件就是当分类间隔大于等于1时,公式化为:
s . t      l a b e l ( w T + b ) 1 s.t \ \ \ \ label * (w^T+b)≥1
利用拉格朗日乘子法,引入λ,详细的公式过程如西瓜书第七章内所述。因为约束条件都是基于数据点的,因此可以将超平面改写为数据点式的最优化约束问题:
m a x α [ i = 1 m α 1 2 i , j = 1 m l a b e l ( i ) l a b e l ( j ) α i α j < x ( i ) , x ( j ) > ] max_\alpha[\sum_{i=1}^m\alpha-\frac{1}{2}\sum_{i,j=1}^{m}label^{(i)}·label^{(j)}·\alpha_i·\alpha_j<x^{(i)},x^{(j)}> ]
s . t      a 0 ,      i 1 m α i l a b e l = 0 s.t\ \ \ \ a≥0, \ \ \ \ \sum_{i-1}^{m}\alpha_i·label = 0
以上就是SVM的公式化目标函数和约束条件,我们的目的就是利用拉格朗日乘子法优化它,求出最优的w和b。

然而,这一切都是建立在假设数据100%线性可分的基础上,而事实并非如此。通过在引入拉格朗日乘子的基础上,再引入松弛变量的原理,给予数据点一定的错误容忍范围,从而避免过拟合的情况,也增强了数据划分的可解释性。

s . t      C a 0 ,      i 1 m α i l a b e l = 0 s.t \ \ \ \ C≥a≥0, \ \ \ \ \sum_{i-1}^{m}\alpha_i·label = 0
常数C用于控制最大化间隔保证大部分点的函数间隔小于1.0这两个目标权重。

通过上式不难发现,最终的目的就是求出所有的α,因为α可以用来表示这些分隔超平面。

收集数据:任意方法
准备数据:数值型数据
分析数据:有助于可视化分隔超平面
训练算法:两个主要参数的调优
测试算法:调用训练后的模型
使用算法:几乎所有分类都可以使用SVM。

以上便是SVM算法的设计流程。


3、SMO高效优化算法

发布了19 篇原创文章 · 获赞 2 · 访问量 9141

猜你喜欢

转载自blog.csdn.net/qq_25134999/article/details/83247362