支持向量机(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) ,是一种监督学习算法,属于 ...
随机推荐
-
【rqnoj39】 饮食问题
题目描述 Bessie 正在减肥,所以她规定每天不能吃超过 C (10 <= C <= 35,000)卡路里的食物.农民 John 在戏弄她,在她面前放了B (1 <= B < ...
-
[转] mhvtl虚拟磁带库的安装与应用
转自:candon123 -- http://candon123.blog.51cto.com/704299/388192/ 1.获取mhvtl: 官方网站:http://mhvtl.nimsa.u ...
-
tag标签调取
{dede:tag row='10' sort='new' getall='1'} <li> <a href='[fie ...
-
如何写mysql的定时任务
什么是事件: 一组SQL集,用来执行定时任务,跟触发器很像,都是被动执行的,事件是因为时间到了触发执行,而触发器是因为某件事件(增删改)触发执行: 查看是否开启: show variables li ...
-
iOS——UIButton响应传参数
- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents; 方法是 ...
-
sjtu1313 太湖旅行
Description 西山风景区是苏州著名的*风景区,一到暑假,游客们都蜂拥而至.作为太湖风景区的精华,西山景区吸引人的地方主要在它的群岛风光.花果丛林和名胜古迹. ginrat对这个地方向往已 ...
-
MySQL中EXPLAIN解释命令详解
MySQL中的explain命令显示了mysql如何使用索引来处理select语句以及连接表.explain显示的信息可以帮助选择更好的索引和写出更优化的查询语句. 1.EXPLAIN的使用方法:在s ...
-
Objective-C基础教程读书笔记(7)
第7章 深入了解Xcode Xcode是一个很好用的工具,有很多强大的功能,不过并不是所有的功能都易于发现.如果你打算长期使用这个强大的工具,就肯定要尽可能多了解它.本章将介绍一些Xcode编辑器的使 ...
-
自己用的vim插件
一.Plugin 'VundleVim/Vundle.vim'. 二.Plugin 'Valloric/YouCompleteMe' let g:ycm_server_python_interpret ...
-
PostGIS集群
postgresql集群:https://bbs.csdn.net/topics/390896906?page=1 https://blog.csdn.net/s465689853/article/ ...