SVM
SVM 🐤
神经网络由神经网络到SVM
- 为什么我们能用人工神经网络处理大部分数据?
因为人工神经网络解决了与或非及其杂糅的拟合问题,而在离散数学中,所有真假命题通过逻辑推导的命题都能使用与或非表示。最简单的线性逻辑:x增长\(\Delta\)x\(\Leftrightarrow\)y增长\(\Delta\)y
<理论来源:离散数学3>
- 普通ANN存在什么问题?
使用分类正误作为理论支持,只要求样本分类准确,对于边界形态漠不关心。而依据日常经验,边界恰好处于两类样本集中间时最优。
<理论来源:ANN公式>
- 原始的拟合公式存在什么问题?
只能拟合线性平面,无法对非线性平面进行拟合。
<理论来源:线性拟合公式>
- 拟合超平面的分类问题普遍存在的一个问题
过拟合,还会把一些标记错误的样本强行分割
<理论来源:机器学习第二章>
SVM概述
一些高深的定义
维基百科
支持向量机(英语:support vector machine,常简称为SVM,又名支持向量网络)是在分类与回归分析中分析数据的监督式学习模型与相关的学习算法。给定一组训练实例,每个训练实例被标记为属于两个类别中的一个或另一个,SVM训练算法创建一个将新的实例分配给两个类别之一的模型,使其成为非概率二元线性分类器。SVM模型是将实例表示为空间中的点,这样映射就使得单独类别的实例被尽可能宽的明显的间隔分开。然后,将新的实例映射到同一空间,并基于它们落在间隔的哪一侧来预测所属类别。
百度百科
支持向量机(Support Vector Machine, SVM)是一类按监督学习(supervised learning)方式对数据进行二元分类的广义线性分类器(generalized linear classifier),其决策边界是对学习样本求解的最大边距超平面(maximum-margin hyperplane)。
志华百科
周志华:我没写定义,不要问我,公式都在那
基本模型要点
- 解决二分类(多分类移步SVR)
- 目标是分割后临近样本点与超平面间隔最大化
机器学习通用的升级
- 原始:线性可分SVM、线性可分ANN
- 只适用于硬间隔
- 泛化,去除特殊样本的影响:
- 线性SVM:使用软间隔
- 外加函数注入:
- 非线性SVM:使用核函数映射
- RBF:使用高斯径向基函数的ANN
SVM推导关键步骤
要拟合的线性函数
样本点x到超平面的投影x0有,r为几何距离
得
将\(w'=w/r;\ b'=b/r\)所以样本点到超平面的距离
为了好算(真的),我们设 y=$\pm$1 为两类分类的标签(此标签来自于历史原因,实际取什么不要紧,都能算,只是这个比较好算),于是我们要所有点都大于这个间隔
替换一下
为了让边界恰好处于两类样本集的中间,我们让 \(r_{min}\) 最大即可,所以我们要求的目标函数有
所以它符合QP标准型,属于凸优化的标准问题,可以直接OK,但效率不高
凸优化的标准问题有四类:
- Linear Programming(LP)
- Quadratic Programming(QP)
- Semi-Definite Programming(SDP)
- Cone Programming(CP)
然后用拉格朗日对偶性解决,其中α为拉格朗日乘子法的参变量,可以解出。α用于给出对偶问题的上界?(一个老师讲的,为什么会给出上界还不知道,只知道用来解决优化问题挺好用)
然后变换到一个强对偶变量的优化问题上,经过SMO的二次规划解法求得,数学推导就不抄了
KKT条件是一个非线性规划问题能有最优化解法的必要和充分条件,在这个问题中相当于筛选者,只取位于最小距离扩展边界上的样本点,其他一概忽略,所以才有了支持向量这个概念。
所谓的松弛变量来历
(不知道为什么书上不写下面这个公式)
就是不仅仅是最小距离扩展边界上的两边的分类点了,还可以允许分类一定程度上存在错误\(\xi_i\)(因为原本大于1才能算分类成功),出现两个名词:
- 硬间隔:即我们之前直接用几何距离推导的 \(r_{min}\)
- 软间隔:给出一定误差后计算出来的 \(r_{min}\)
\(\xi_i\)常用这几个函数:
- 0/1损失函数
- hinge损失:当我们用这个时求解出来的$ \xi _i$叫松弛变量
- 指数损失
- 对率损失
一样的过程,然后我们有这个最优化问题
前面用于寻找间隔最大的超平面,后面用于保证数据点偏差量有一定偏差量,C为正则化常数,给出需要偏倚哪一方
为了确保\(\xi_i\)大于0,再加一项
然后再SMO一下就不OK了
非线性问题求解
核函数用来做什么?
映射到高阶空间
为什么可以映射到高阶空间?
如果我的线性拟合函数是1阶的,那只能拟合直线,无穷阶次则可以拟合很复杂的曲线,对于原本不是线性函数(比如三角函数)的函数而言,阶数越高效果越好。
以高斯核函数f(x)为例,我们来个泰勒展开,于是就发现……居然把x变成f(x)就是线性无穷阶次了,于是可以用核函数映射到高阶空间。
核函数官方词汇
将变量映射到RKHS特征空间
核函数常见类型
- 线性核函数
- 多项式核函数
- 高斯核函数
- 拉普拉斯核函数
- Sigmoid核函数(也就是除了逻辑函数之外比较常见的另一种激发函数)
证明SVM可行
Novikoff 定理可以推出SVM能得到一个界,不至于无穷循环下去
(Novikoff 定理) 如果分类超平面存在, 仅需在序列 S 上迭代几次,在界为\((\frac{2R}{\gamma})^2\)的错误次数下就可以找到分类超平面,算法停止。
Mercer 定理给出了非线性学习器可行证明
(Mercer 定理) 如果函数 K 是 ℜn × ℜn \(\rightarrow\) ℜ 上的映射(也就是从两个 n 维向量映射到实数域)。那么如果 K 是一个有效核函数(也称为 Mercer 核函数),那么当且仅当对于训练样例{x(1), x(2),…… , x(m)},其相应的核函数矩阵是对称半正定的。
拓展类型
两类分类问题的支持向量机
- 齐次决策函数支持向量分类机
- 限定支持向量分类机
- 最小二乘支持向量分类机
- 中心支持向量分类机
- v-支持向量分类机
- 线性规划形式的支持向量分类机
回归问题的支持向量机
- 最小二乘支持向量回归机
- v-支持向量回归机
- 线性规划形式的支持向量回归机
多类分类问题的求解
- 基于两类支持向量分类机的方法
- 基于顺序回归机的方法
- Crammer-Singer多类支持向量分类机
对于非标准训练集分类问题的求解
- U-支持向量分类机
- 半监督两类分类问题的支持向量机
稳健支持向量分类机
多示例分类问题的支持向量机
算法
一阶软间隔的梯度上升算法
通用结构
共轭梯度算法求解带有高斯核函数的SVM
其他算法的具体内容参见我压缩包里的《支持向量机导论(中文)》
©️ Copyrights.RSMX.GUILIN.2020-04-20