支持向量机(SVM)原理阐述
支持向量机(Support Vector Machine, SVM)是一种二分类模型。给定训练集D = {(x1,y1), (x2,y2), ..., (xm,ym)},分类学习的最基本的想法即是找到一个超平面S:,从而将训练集D的样本空间中不同类别的样本区分开。
SVM的模型,由简至繁地,包括:线性可分支持向量机(linear SVM in linearly separable case)、线性支持向量机(linear SVM)以及非线性支持向量机(non-linear SVM)。
当训练数据线性可分时,SVM试图寻找硬间隔最大化(hard margin maximization)的划分超平面,因为这样的超平面产生的分类结果是最鲁棒的,由此学习的线性分类器称为线性可分支持向量机;而当训练数据近似线性可分时,通过软间隔最大化(soft margin maximization),也可学习得到分类器,称为线性支持向量机;当数据线性不可分时,则可以使用核技巧(kernel methods)以及软间隔最大化,习得非线性支持向量机。“间隔、”核技巧“等相关概念均将在下文中予以阐述。
一、线性可分支持向量机
1.1 间隔与支持向量
如前文所述,划分超平面可以用线性方程来描述,其中ω为法向量,b为位移。于是,划分超平面可以由ω和b确定,记为(ω, b)。利用高中解析几何的相关知识容易推算出,样本空间中任意点到超平面(ω, b)的距离即为
由于若超平面(ω', b')可以对样本正确分类,则对于(xi,yi),若yi=+1,则;若yi=-1,则。令
则总存在缩放变换ςω→ω',ςb→b'使得上式成立。由此,定义”支持向量“(support vector)为满足上式且距离超平面最近的点。两个异类支持向量到超平面的距离之和被称为”间隔“(margin),为。顺便一提,所谓样本都必须划分正确的情形称为“硬间隔”(hard margin),而“软间隔”(soft margin)则允许某些样本不满足。
SVM的任务是找到”最大间隔“(maximum margin)的划分超平面。于是,SVM的基本型可以表达为
进而可以写为
值得注意的是,间隔貌似只与ω有关,但事实上,b通过约束隐式地影响着ω的取值,进而对间隔产生影响。
1.2 对偶问题与SMO算法
为求解得到最大间隔划分超平面的模型,一种高效的办法是利用lagrange乘子法得到SVM基本型的”对偶问题“(dual problem),再利用SMO算法求解。
首先,在基本型中,对每条约束添加lagrange乘子,得到lagrange函数为
为取到函数的最值,令L(ω,b,α)对ω和b分别求偏导为零,得到
代入L(ω,b,α),消去ω和b,即得到SVM基本型的对偶问题
且上述过程需要满足KKT条件,即要求
直接用二次规划算法来求解对偶问题,开销较大。比较高效的是SMO算法(Sequential Minimal Optimization)。
SMO首先初始化参数,然后不断执行下述步骤直至收敛:
- 选取一对需要更新的αi和αj;
- 固定αi和αj以外的参数,求解上式获得更新后的αi和αj。
最后,由,可以确定偏移项b为
1.3 核函数
如果原始样本空间中不存在可以正确划分样本的超平面,则可以将样本从原始空间映射到更高维的特征空间,使得样本在此特征空间内线性可分。事实上,若原始空间是有限维的,则一定存在一个更高维的空间使样本线性可分。
令Φ(x)表示将x映射后的特征向量,则在特征空间中,划分超平面对应的模型可表示为。于是得到基本型
及其对偶问题
直接计算Φ(xi)TΦ(xj)通常比较困难,为此,引入”核函数“(kernel function)k(•,•)。设k(xi, xj) = <Φ(xi), Φ(xj)> = Φ(xi)TΦ(xj),则对偶问题可以重写为
求解后即得到
此展式亦称为”支持向量展式“(support vector expansion)。
那么,合适的核函数是否一定存在?什么样的核函数能作为核函数呢?对此,有如下定理:
定理 令为输入空间,k(•,•)为定义在上的对称函数,则k是核函数当且仅当对于任意数据D = {x1,x2,...,xm},”核矩阵“(kernel matrix)K总是半正定的:
书中给出了几种常见的核函数,见于下表
此外,核函数还可以通过函数组合得到:
- 若k1和k2是核函数,则k1(x,z)k2(x,z)也是核函数;
- 若k1是核函数,则对于任意函数g(x),k(x,z) = g(x)k1(x,z)g(z)也是核函数。
二、线性支持向量机
2.1 软间隔与正则化
如前文提到的,而“软间隔”允许某些样本不满足。尽管如此,还是希望不满足约束的样本尽可能少。于是,优化目标可以改写为
其中,C>0是常数,是“0/1损失函数”
为了使得优化目标更易于求解,引入一些数学性质更好的函数来替代,成为“替代损失”(surrogate loss)。替代损失函数通常是凸的、连续的,且是的上界。下面列出了一些常用的替代损失函数:
- hinge损失:
- 指数损失(exponential loss):
- 对率损失(logistic loss):
例如,如果采用hinge损失,则优化目标变为
进而引入“松弛变量”(slcak variable)ξi≥0。每个样本都对应一个松弛变量,用以表征该样本不满足约束的程度。由此,上式可以重写为
此即为常见的“软间隔支持向量机”,亦即“线性支持向量机”。
类似线性可分支持向量机的求解,首先通过lagrange乘子法得到lagrange函数
其中,是lagrange乘子。对ω,b,ξi分别求偏导为零,得到
代入原式即得到对偶问题
且上述过程满足KKT条件
值得注意的是,SVM与对率回归的优化目标相近。比如,若将对率损失作为替代损失函数带入,则几乎就得到对率回归模型。
不过,与对率回归模型不同的是,SVM不具有概率意义。对率回归可直接用于多分类任务,而SVM则需要推广。另一方面,由于hinge损失有一块“平坦的”零区域,使得SVM的解具有稀疏性,而对率回归的解则依赖更多的训练样本,预测开销更大。
用不同函数作为替代损失函数得到的学习模型的性质与替代函数直接相关,但这些模型具有一个共性:即优化目标中,第一项用来描述划分超平面的“间隔”大小,另一项则用来表述训练集上的误差。于是,更一般的形式可写为
其中Ω(ƒ)称为“结构风险”(structural risk),用于描述模型自身的一些性质;成为“经验风险”(empirical risk),用于描述与训练集的契合程度。上述形式也可称为“正则化”(regularization)问题,其中Ω(ƒ)为正则化项,C为正则化常数,而Lp范数(norm)为常用的正则化项。比如,L2范数倾向于非零分量个数尽量稠密;而L0和L1范数倾向非零分量个数尽量少。
2.2 支持向量回归
首先回顾一下回归问题:给定训练样本D = {(x1,y1), (x2,y2), ..., (xm,ym)},希望学得一个形如的模型,使得ƒ(x)与y尽可能接近,ω和b是待确定的模型参数。基于ƒ(x)与y的差别计算损失,当且仅当ƒ(x)与y完全相同时,损失才为0。
与传统回归模型不同,“支持向量回归”(Support Vector Regression, SVR)假设我们能容忍ƒ(x)与y之间最多有ε的偏差。于是,SVR问题可以形式化为
C为正则化常数,为ε-不敏感损失(ε-insensitive loss)函数
再引入松弛变量和,将优化目标重写为
同样地,用lagrange乘子法,可以得到lagrange函数
偏导置零求解得到对偶问题
SVR的解形如
以及相应的KKT条件
其中,满足的样本即为SVR的支持向量。同样地,选取多个满足0<αi<C的样本求平均值解得b。
考虑特征映射,则利用核函数k(xi,xj)=Φ(xi)TΦ(xj),SVR表示为
2.3 核方法
从SVM和SVR的解的形式不难看出,若不考虑偏移项b,则其学习得到的模型总能表示成核函数k(x,xi)的线性组合。事实上,对核函数,有下述“表示定理”(representer theorem):
表示定理 令为核函数k对应的再生希尔伯特空间,表示空间中关于h的范数,对于任意单调递增函数Ω: [0,∞)→和任意非负损失函数: →[0,∞),优化问题
的解总可以写为
所谓“核方法”(kernel methods),就是人们发展出的一系列基于核函数的学习方法。其中最常见的,就是通过引用核函数——“核化”——来将线性学习器拓展为非线性学习器。
下面以线性判别分析为例,介绍由核方法得到的分线性拓展,“核线性判别分析”(Kernelized Linear Discriminant Analysis, KLDA)。
设映射将样本映射到特征空间。线性判别分析在中执行,以求得。类似于在前一篇博文『机器学习中的线性模型』提到的,最大化目标为
令Xi表示第i(i=0,1)类样本的集合,其样本数为mi;总样本数m=m0+m1。则第i类样本在特征空间中的均值为
于是,类间散度矩阵和类内散度矩阵的计算公式如下
将J(ω)作为损失函数,再令Ω≡0,由表示定理,h(x)可写为
于是
令K为核函数k对应的核矩阵,1i为第i类样本的指示向量(即1i的第j个分量为1当且仅当xj属于Xi,否则为0)。再令
于是,KLDA的优化目标即等价为
这样以来,即便映射Φ的具体形式难以知道,只要使用线性判别分析即可求解得到α,进而可以由h(x)的表示定理表达式得到投影函数h(x)。
支持向量机(SVM)原理阐述的更多相关文章
- 机器学习之支持向量机—SVM原理代码实现
支持向量机—SVM原理代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/9596898.html 1. 解决 ...
- 支持向量机(SVM)原理详解
SVM简介 支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机:SVM还包括核技巧, ...
- 支持向量机SVM原理_python sklearn建模乳腺癌细胞分类器(推荐AAA)
项目合作联系QQ:231469242 sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?cours ...
- 【机器学习】支持向量机SVM
关于支持向量机SVM,这里也只是简单地作个要点梳理,尤其是要注意的是SVM的SMO优化算法.核函数的选择以及参数调整.在此不作过多阐述,单从应用层面来讲,重点在于如何使用libsvm,但对其原理算法要 ...
- 机器学习——支持向量机SVM
前言 学习本章节前需要先学习: <机器学习--最优化问题:拉格朗日乘子法.KKT条件以及对偶问题> <机器学习--感知机> 1 摘要: 支持向量机(SVM)是一种二类分类模型, ...
- 【IUML】支持向量机SVM
从1995年Vapnik等人提出一种机器学习的新方法支持向量机(SVM)之后,支持向量机成为继人工神经网络之后又一研究热点,国内外研究都很多.支持向量机方法是建立在统计学习理论的VC维理论和结构风险最 ...
- 以图像分割为例浅谈支持向量机(SVM)
1. 什么是支持向量机? 在机器学习中,分类问题是一种非常常见也非常重要的问题.常见的分类方法有决策树.聚类方法.贝叶斯分类等等.举一个常见的分类的例子.如下图1所示,在平面直角坐标系中,有一些点 ...
- 支持向量机SVM——专治线性不可分
SVM原理 线性可分与线性不可分 线性可分 线性不可分-------[无论用哪条直线都无法将女生情绪正确分类] SVM的核函数可以帮助我们: 假设‘开心’是轻飘飘的,“不开心”是沉重的 将三维视图还原 ...
- 一步步教你轻松学支持向量机SVM算法之案例篇2
一步步教你轻松学支持向量机SVM算法之案例篇2 (白宁超 2018年10月22日10:09:07) 摘要:支持向量机即SVM(Support Vector Machine) ,是一种监督学习算法,属于 ...
- 一步步教你轻松学支持向量机SVM算法之理论篇1
一步步教你轻松学支持向量机SVM算法之理论篇1 (白宁超 2018年10月22日10:03:35) 摘要:支持向量机即SVM(Support Vector Machine) ,是一种监督学习算法,属于 ...
随机推荐
- Touch Gesture手势总结
- django学习:一些疑惑
昨天学习了django的第二天,有一些收获. django的语法很严谨,看上去明明对齐的,但是他却提示说缩进不一致.后来我把前面的空全部删除,全部采用空格,这样就通过了,看样子还是要编程有一个好习惯, ...
- exp迁移测试库10.2.0.5
目的: 将一套10.2.0.5的UP-UNIX系统的数据,迁移到一台Windows环境下. 迁移方案:由于不同的操作系统,为了方便迁移,只是测试,使用EXP/IMP方式. 迁移流程: 一.源端导出 1 ...
- linux终端窗口字体缩放快捷键
环境:ubuntu16.04, 打开终端,有时候log输出一行显示不下 ‘ctrl’ + ‘-’字体缩小,一行显示更多的内容 ‘ctrl’ + ‘shift’ + ‘+’字体变大
- linux服务器ssh免密登录
环境:两台服务器,Park01.Park02,配置ssh免密登录 在Park01执行:ssh-keygen 然后一直回车 生成节点的公钥和私钥,生成的文件会自动放在/root/.ssh目录下 然后 ...
- 第四次SCRUM任务
一.第四次SCRUM任务 继第三次的任务之后,对最终的部署做一定的完善,以及系统的BUG调试,压力测试,会议明确最终的方案. 二.用户故事 1.用户可以进行输入用户名密码登录和注册. 2.用户可以在程 ...
- eclipse运行无错的ssm项目,迁移到idea出错
我的报错信息为mapper绑定相关错误,是因为idea在构建项目时,target/classes目录下不存在mapper.xml文件 解决方法: <!-- 在maven中添加以下配置,它的父标签 ...
- 听说https更安全
0--介绍: 现在人们对网络的依赖越来越重,那么对于网络安全的要求也越来越高,传统的http协议实现了网络中的快速传输,完整传输,保证了信息的完整性,但是对于网络的安全性却没有那么强,很容易被人劫持, ...
- 谷歌浏览器可以google了
做为一个开发者好多疑问点或者难点大多数时间 都在进行百度,百度也能解决问题,但是呢如果让我能够google呢?我肯定会优先google的,这里面能够搜到一些国外技术人的文章可供参考. 下面是一个能够支 ...
- servlete基础
1. 使用servlet需要继承HttpServlet Servlet 生命周期 Servlet 生命周期可被定义为从创建直到毁灭的整个过程.以下是 Servlet 遵循的过程: Servlet 通 ...