1 支持向量机
支持向量机(support vector machines,SVM)是一种二类分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;支持向量机还包括核技巧,这使它成为实质上的非线性分类器。支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划(convex quadratic programming)的问题,也等价于正则化的合页损失函数的最小化问题。支持向量机的学习算法是求解凸二次规划的最优化算法。
支持向量机学习方法包含构建由简至繁的模型:线性可分支持向量机(linear support vector machine in linearly separable case)、线性支持向量机(linear support vector machine)及非线性支持向量机(non-linear vector machine)。简单模型是复杂模型的基础,也是复杂模型的特殊情况。当训练数据线性可分时,通过硬间隔最大化(hard margin maximization),学习一个线性的分类器,即线性可分支持向量机,又称为硬间隔支持向量机;当训练数据近似线性可分时,通过软间隔最大化(soft margn maximization),也学习一个线性的分类器,即线性支持向量机,又称为软间隔支持向量机;当训练数据线性不可分时,通过使用核技巧(kernel trick)及软间隔最大化,学习非线性支持向量机。
——《统计学习方法》
优点:泛化错误率低,计算开销不大,结果易解释。
缺点:对参数调节和核函数的选择敏感,原始分类器不加修改仅适用于处理二分类问题。
适用数据类型:数值型和标称型数据。
——《机器学习实战》
2 线性可分支持向量机
给定线型可分训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习得到的分离超平面为:
分类决策函数为:
该决策函数称为线型可分支持向量机。
是某个确定的特征空间转换函数,作用是将x映射到(更高的)维度。最简单的为。
2.1 原理及定义
对于上图所示的二分类问题,线性可分支持向量机学习的目标是在特征空间中找到一个分离超平面,然而存在无穷个分离超平面可将两类数据正确分开;线性可分支持向量机则是利用间隔最大化求最优分离超平面,解是唯一的,图中的红色直线即为求解得到的最优分离超平面,将实例分到不同的类。
线性可分支持向量机中的间隔最大化又称为硬间隔最大化(与下面小节的软间隔最大化相对应)。
间隔最大化的直观解释是:对训练数据集找到几何间隔最大的超平面意味着以充分大的确信度对训练数据进行分类。也就是说,不仅将正负实例点分开,而且对最难分的实例点(离超平面最近的点)也有足够大的确信度将它们分开。这样的超平面应该对未知的新实例有很好的分类预测能力。
支持向量(support vector):训练数据集的样本点中与分离超平面距离最近的样本点的实例。上图中两条虚线上的三个点即为支持向量。约束条件为:
间隔边界:支持向量所在的两个超平面。
间隔(margin):间隔边界之间的距离。其值为。
在决定分离超平面时只有支持向量起作用,而其他实例点并不起作用、如果移动支持向量将改变所求的解;但是如果在间隔边界以外移动其他实例点,甚至去掉这些点,则解是不会改变的。由于支持向量在确定分离超平面中起着决定性作用,所以将这种分类模型称为支持向量机。支持向量的个数一般很少.所以支持向量机由很少的“重要的”训练样本确定。
2.2 算法步骤
输入:线型可分训练集,
其中
输出:分离超平面和分类决策树
(1)构造并求解约束最优化问题
求得最优解
(2)计算
并选择的一个正分量,计算
(3)求得分离超平面
分类决策函数:
在线型可分支持向量机中,和只依赖于训练数据中对应于的样本点,而其它样本点对和没有影响。则训练数据中对应于的实例点称为支持向量。
3 线性支持向量机
3.1 原理及定义
对于线性可分问题,上述线性可分支持向量机的学习(硬间隔最大化)算法是完美的。但是,训练数据集线性可分是理想的情形。在现实问题中,训练数据集往往是线性不可分的,即在样本中出现噪声或特异点。这就需要将硬间隔最大化,改为软间隔最大化,允许支持向量机在一些样本上出错。
对每个样本点引进松弛变量,使得函数间隔加上松弛变量≥1。约束条件变为:
同时,对每个松弛变量,支付一个代价。目标函数由原来的变成:
这里,C>0称为惩罚参数,一般由应用问题决定。
C越大,训练精度会变高,有可能过拟合,过渡带宽度越来越小。
软间隔的支持向量或者在间隔边界上,或者在间隔边界与分离超平面之间,或者在分离超平面误分一侧。若,则,支持向量恰好落在间隔边界上;若,,则分类正确,在间隔边界与分离超平面之间;若,,则在分离超平面上;若,,则位于分离超平面误分一侧。
3.2 损失函数
然而,0/1损失函数非凸、非连续,数学性质不太好,使得不易直接求解。于是,人们通常用其他一些函数来代替 0/1损失函数, 称为”替代损失” (surrogate loss)。替代损失函数一般具有较好的数学性质,如它们通常是凸的连续函数且是 0/1损失函数的上界。下图给出了三种常用的替代损失函数:
由图可知,”替代损失”不仅要分类正确,而且确信度足够高时损失才是0,也就是说,对学习有更高的要求。
3.3 算法步骤
输入:线型可分训练集,
其中
输出:分离超平面和分类决策树
(1)选择惩罚参数C>0,构造并求解凸二次规划问题
求得最优解
(2)计算
并选择的一个正分量,计算
(3)求得分离超平面
分类决策函数:
4 非线性支持向量机
4.1 原理及定义
前面两个算法都是假设训练样本是线性可分的,即存在一个分离超平面能将训练样本正确分类。然而在现实任务中,原始样本空间内也许并不存在一个能正确划分两类样本的超平面。例如下图中的” 异或 ” 问题就不是线性可分的。
对这样的问题,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。例如在上图中,若将原始的二维空间映射到一个合适的三维空间 ,就能找到一个合适的分离超平面。幸运的是,如果原始空间是有限维,即属性数有限,那么一定存在一个高维特征空间使样本可分。
用线性分类方法求解非线性分类问题分为两步:首先使用一个变换将原空间的数据映射到新空间;然后在新空间里用线性分类学习方法从训练数据中学习分类模型。
4.2 核函数
核技巧的做法是,在学习与预测中只定义核函数,而不显式地定义映射函数。
即将上面优化目标函数中的替换为。
核技巧巧妙的利用线性分类学习方法和核函数解决非线性问题。在实际应用中,往往以各领域知识直接选择核函数,核函数的选择的有效应需要通过实验验证。
常用核函数如下表:
| 名称 | 表达式 | 参数 |
|---|---|---|
| 线性核 | ||
| 多项式核 | 为多项式的次数 | |
| 高斯核 | 为高斯核的带宽 (width) | |
| 拉普拉斯核 | ||
| Sigmoid 核 | tanh 为双曲正切函数, |
此外,还可通过函数组合得到,例如:
- 若和为核函数,则对于任意正数、,其线性组合
也是核函数;
- 若和为核函数,则而核函数的直积
也是核函数;
- 若为核函数,则对于任意函数
也是核函数。
4.3 算法步骤
输入:训练集,其中
输出:分类决策树
(1)选择适当的核函数和适当的惩罚参数C>0,构造并求解最优化问题
求得最优解
(2)选择的一个正分量,计算
(3)构造决策函数:
5 序列最小优化算法-SMO
5.1 原理及定义
支持向量机的学习问题可以形式化为求解凸二次规划问题。这样的凸二次规划问题具有全局最优解,并且有许多最优化算法可以用于这一问题的求解,但是当训练样本容量很大时,这些算法往往变得非常低效,以致无法使用。所以,如何高效地实现支持向量机学习就成为一个重要的问题。
1998年Platt提出序列最小最优化(sequential minimal optimization,SMO)算法。该算法是支持向量机学习的一种快速算法,其特点是不断地将原二次规划问题分解为只有两个变量的二次规划子问题,并对子问题进行解析求解,直到所有变量满足KKT条件为止。这样通过启发式的方法得到原二次规划问题的最优解。因为子问题有解析解,所以每次计算子问题都很快,虽然计算子问题次数很多,但在总体上还是高效的。
5.2 算法步骤
输入:训练集,
其中,精度 ε ;
输出:近似解
(1)取初值,令;
(2)选取优化变量,解析求解两个变量的最优化问题
求得最优解,更新为;
(3)若在精度 ε 范围内满足停机条件
其中,
则转(4);否则令,转(2);
(4)取
6 支持向量回归
对样本 (x,y) ,传统回归模型通常直接基于模型输出 f(x) 与真实输出 y 之间的差别来计算损失,当且仅当 f(x) 与 y 完全相同时,损失才为零。与此不同,支持向量回归 (Support Vector Regression,简称 SVR)假设我们能容忍 f(x) 与 y 之间最多有 ε 的偏差,即仅当 f(x) 与 y 之间的差别绝对值大于 ε 时才计算损失。如下图所示,这相当于以 f(x) 为中心,构建了一个宽度为 2ε 的间隔带,若训练样本落入此间隔带,则认为是被预测正确的。
引入松弛变量ζ_i和\hatζ_i,SVR可形式化为最优化问题:
7 参考
- 机器学习升级版视频 - 邹博
- 《统计学习方法》第7章 支持向量机
- 《机器学习实战》第6章 支持向量机
- 《机器学习 - 周志华》第6章 支持向量机
===========文档信息============
学习笔记由博主整理编辑,供非商用学习交流用
如本文涉及侵权,请随时留言博主,必妥善处置
版权声明:非商用自由转载-保持署名-注明出处
署名(BY) :dkjkls(dkj卡洛斯)
文章出处:http://blog.csdn.net/dkjkls