1. 支持向量机
支持向量机(Suport Vector Machine,常简称为SVM),是一个监督式学习的方式。支持向量机属于一般化线性分类器,这类分类器的特点是能够同时最小化经验误差与最大化几何边缘区,因此支持向量机机也被称为最大边缘区分类器。
蓝色和红色的线圈出来的点就是所谓的支持向量,离分界线最近的点,如果去掉这些点,直线多半要改变位置。Classifier Boundary就是决策函数f(x),在两个类的中间。红色和蓝色之间的间隙就是我们要的最大化分类的间隙。
有拉格朗日乘子法的地方,必然是一个组合优化问题。比如
这是一个带等式约束的优化问题,有目标值,有约束条件,不能直接求导。可以使用拉格朗日方法,把这个约束乘以一个系数加到目标函数中去,这样相当与既考虑了原目标函数,也考虑了约束条件。然后分别对x求导等于0, 把它带点菜约束条件中去,可以看到,2个变量两个等式,最终可再带回去求x就可以了。更高一层,带有不等式的约束问题怎么办?需要用更一般化的拉格朗日乘子法,即KKT条件,来求解这个问题。
任何原始问题约束条件无非最多三种,等式约束,大于号约束,小于号约束,而这三种最终通过将约束方程简化成两类:约束方程等于0和约束方程小于0。
假设原始问题约束条件为下例所示: 那么把约束条件变个样子 现在拿到目标函数中去变成
那么KKT条件的定理是什么呢?就是如果一个优化问题在转变成 其中g是不等式约束,h是等式约束。那么KKT条件就是函数的最优值,它必定满足下面条件:
这三个等式很好理解,重点是第三个句子不好理解,因为我们知道在约束条件变完或,所有的 ,且求和还要为0。那么为什么KKT的条件是这样的呢?
某次的g(x)在为最优解起作用,那么它的系数值(可以)不为0,如果某次g(x)没有为下一次的最优解起作用,那么它的系数就必须为0。
函数间隔 对于给定的训练数据集T合超平面(w,b),定义超平面(w,b)关于样本点 的函数间隔为
函数间隔可以表示分类预测的正确性及确信度。但是选择超平面时,只有函数间隔是不够的,因子只要成比较改变 和b,超平面并没有改变,但函数间隔却扩大了。
几何间隔 对于给定的训练数据集T和超平面 ,定义超平面 关于样本点 的几何间隔为 ,其中 为 的 范数。
如果 ,那么函数间隔和几何间隔相等。如果超平面参数 成比例地改变(超平面没有改变),函数间隔也成比例改变,而几何间隔不变。
支持向量机的基本想法是求解能够正确分训练数据集并且几何间隔最大的分离超平面。对线性可分的训练数据集而言,线性可分分离超平面有无穷多个(等价于感知机),但是几何间隔最大的分离超平面时唯一的。这里的间隔最大化被称为硬间隔最大化。
间隔最大化的直观解释是:对训练数据集找到几何间隔最大的超平面意味着以充分大的确信度对训练数据进行分类。也就是说,不仅将正负实例点分开,而且对最难分的实例点(离超平面最近的点)也有足够大的确信度将他们分开。这样的超平面应该对未知的新实例有很好的分类预测能力。
下面考虑如何求一个几何间隔最大的分离超平面,即最大间隔分离超平面。具体地,这个问题可以表示为下面的约束最优化问题: 即我们希望最大化超平面 关于训练数据集的集合间隔 ,约束条件表示的是超平面 关于每个训练样本点的集合间隔至少是
考虑几何间隔和函数间隔的关系式,可将这个问题改成为 函数间隔 并不影响最优化问题的解。事实上,假设将 成比例改变为 ,这时函数间隔变成 。函数间隔的改变对最优化问题的不等式约束没有影响,对目标函数的优化也没有影响,也就事实说,它产生一个等价的最优化问题。这样,就可以取 。将 代入上面的最优化问题。注意最大化 和最小化 是一样的。
于是就得到下面的线性可分支持向量机学习的最优化问题 这是一个凸二次规划问题(contex quadratic programming)问题。 凸优问题是指约束最优化问题 其中,目标函数 和约束函数 都是 上的可连续可微的凸函数,约束函数 是 的仿射函数。当木匾函数是 是二次函数且约束函数 是仿射函数时,上述的凸优化问题成为凸二次规划问题。 如果求出约束最优化问题的解 ,那么就可以得出最大间隔分离超平面 及决策函数 ,即线性可分支持向量机模型。
为了求解线性可分支持向量机的最优化问题,将它作为原始最优化问题,应用到拉格朗日对偶性,通过求解对偶问题得到原始问题的最优解,这就是线性可支持向量机的对偶算法(dual algorithm)。这样做的优点,一是对偶问题往往根据容易求解;二是自然引入核函数,进而推广到非线性可分类问题。
首先构建拉格朗日函数(Lagrange function)。为此,对每一个不等式约束引入拉格朗日乘子(Lagrange multiplier) 定义拉格朗日函数: 其中 为拉格朗日乘子向量。
根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题
为了得到对偶函数问题的解,需要先求 对 的极小,再求 的极大 (1)求 将拉格朗日函数 分别对 求偏导数并令其等于0
将(1)代入拉格朗日函数,并利用(2),即可得 即 (2)求 对 的极,即对偶问题 将公式(3)的目标函数由极大值转换成求极小,就得到下面与之等价的对偶最优化问题
(3)解 假设 是对偶最优化问题的解,则存在下标使得 ,并求按下式求得原始最优化的解
根据KKT条件成立,即得 因此 ,且至少存在一个 ,假设 ,那么 不是原始问题的解,所以
那么分离的超平面可以写成 决策函数可以写成
由此可以看出,分类决策函数只依赖于输入x和训练样本输入的内积,式(8)称为线性可分支持向量机的对偶形式。
案例 训练数据正例点是 ,负例点是 ,试用线性可分支持向量机 解:根据所给数据,对偶问题是
解这一优化问题,将 代入目标函数并记为
对 求偏导令其为0,易知 处取极值,该点不满足约束条件 ,所以最小值应在边界上达到。
当 ,当 ,于是
这样, 对应的实例点 是支持向量,计算可得 ,
分离超平面为 分离决策函数为
线性可分问题的支持向量机学习方法,对线性不可分训练数据是不适用的,因为这时上述方法中的不等式约束不能都成立。 线性不可分意味着不能满足函数间隔大于等于1的约束条件 。为了解决这个问题,对每个样本点 都引入一个松弛变量 ,使得函数间隔加上变量大于等于1,这样约束条件变为 同时对于每个松弛变量 ,支付一个代价 ,目标函数由原来的 变成 C>0为惩罚参数,一般由应用问题解决,C值大时对误分类的惩罚增大,C值小时对误分类的惩罚减小。最小化木匾函数有2层意思:使得 尽量小,即间隔尽量大,同时使误分类点的个数尽量小,C是调和两者的系数
非线性分类问题是指通过非线性模型才能很好地进行分类的问题。非线性问题往往不好求解,希望通过线性分类问题的方法解决这个问题,所采取的方法是进行一个非线性变换,将非线性问题变成线性问题,通过解变换后的线性问题的方法求解原来的非线性问题。
用线性分类方法求解非线性分类问题分两步:首先使用一个变换将原来空间的数据映射到新空间;然后在新空间里用线性分类学习方法从训练数据中学习分类模型。核技巧就属于这样的方法。
设X是输入空间(欧氏空间 的子集或离散集合),又设H为特征向量(希伯而空间H),如果存在一个从X到H的映射 使得对所有 ,函数 满足条件 则称K(x,z)为核函数, 为映射函数, 。通常计算K(x,z)比较容易,而通话 计算K(x,z)并不容易。
是输入空间到特征空间的迎神,特征空间一般是高维的,甚至是无穷维,可以看到,对于给定的核K(x,z),特征空间H和映射函数 的取法并不唯一,可以取不同的特征空间,即便是在同一特征空间也可以取不同的映射。
在对偶目标函数中的内积 可以用核函数 来代替,此时对偶问题的目标函数成为 这等价于经过映射函数 将原来的输入空间变换到一个新的特征空间,将输入空间中的内积 变换成特征空间中的内积 ,在新的特征空间里从训练样本中学习线性支持向量机。学习是隐式地在特征空间进行的,不需要显式地定义特征空间和营业日函数。在实际应用中,往往依赖领域知识直接选择核函数。
对应的支持向量机是一个p次多项式分类器,在此情形下,分类决策函数成为
对应的支持向量机是高斯径向基函数(radial basis function)分类器。在此情形下,分类决策函数成为
核函数不仅可以定义在欧式空间,还可以定义在离散数据的集合上。比如,字符串核函数是定义在字符串集合上的核函数。字符串核函数在文本分类、信息检索、生物信息学等方面都有应用。
两个字符串s和t上的字符串核函数是基于映射 的特征空间中的内积: 字符串核函数 给出了字符串s和t中长度等于n的所有子串组成的特征向量的余弦相似度。直观上看,两个字符串相同的字串越多,它们就越相似,字符串核函数的值就越大。字符串核函数可以由动态规划快速地计算。
支持向量机的学习问题可以形式化为求解凸二次规划问题,这样的凸二次规划问题具有全局最优解,并且有许多最优化算法可以用于这一问题的求解。但是当训练样本容量很大时,这些算法往往变得非常低效,以至无法使用。
序列最小最优化(sequential minimal optimization,SMO)算法,是一种启发式算法,其基本思路是:如果所有变量的解都满足此最优化问题的KKT条件,那么这个最优化问题的解就得到了。因为KKT条件是该最优化问题的充分必要条件。否则,选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题。这个二次规划问题的目标是使函数值变得更小。重要的是,这时子问题可以通过解析方法求解,这样就可以大大提高整个算法的计算速度。子问题有两个变量,一个是违反KKT条件最严重的那一个,另一个由约束条件自动确定。如此,SMO算法将原问题不断分解为子问题并对子问题求解,进而达到求解原问题的目的。
假设两个变量是 ,其他变量 是固定的,于是SNO的最优化问题的子问题可以写成。
其中, 是常数,目标函数中省略不含 的常数项。
为了求解两个变量的二次规划问题,约束可以用二维空间中的图形表示
不等式约束(7.3)使得 在盒子[0,C] [0,C]内,等式约束(7.2)使 在平行于盒子[0,C] [0,C]的对角线的直线上。因此要求的是目标函数在一条平行于对角线的线段上最优值。这使得两个变量的最优化问题成为实质上的单变量最优化文图,不访考虑为变量 的最优化问题。
假设初始化可行解为 ,最优化解为 ,并且假设沿着约束方向未经剪辑时 的最优解为
由于 需满足不等式约束(7.3),所以最优值 的取值范围必须满足条件 其中,L与H是 所在对角线段端点的界,如果 如果 ,则
下面首先要求沿着约束方向未经剪辑即未考虑不等式约束(7.3)时 的最优解 ,然后在解决剪辑后 的解 ,我们用定理来描述这个结果 令
当i=1,2时, 为函数g(x)对输入 的预测值与真实输出 之差
定理 最优化问题(7.1)~(7.3)沿着约束方向未经剪辑时的解是 其中 是输入空间到特征空间的映射
经剪辑后的 的解是 由 是
2. 支持向量机
定义拉格朗日函数 , KKT条件 为: 求极值,则令 得到: 代入 消去 和 ,得到原问题的 对偶问题 为 由KKT条件得到:对于任意训练样本 总有 或 ,这就意味着当 时,该样本并不会对 产生而任何影响,当 时,此时意味着训练样本在最大间隔的边界上,该样本点称之为支持向量。
**
假设样本线性可分,即存在一个超平面对样本进行分类。而实际任务中,样本往往是非线性可分。此时,我们将 映射到高维特征空间,在特征空间中找到超平面使得样本线性可分,记 为 映射到高维特征空间所对应的特征向量。 因此,对应的模型可以表示为 实际只需要求解如下函数: 对偶问题为: 当特征空间维度很高时,计算 困难,故定义核函数 使得 , 则对偶问题重写为: 求解该对偶问题得到
由于 非凸、非连续,常用其他损失函数替代,如下图所示:
采用拉格朗日乘子法 ,求极值,令 带入L得到原问题的对偶问题为: KKT条件要求 : 由此可得:
(1)考虑 与 最多允许有 的误差 (2)构建宽度为 的间隔带,如图:
**
3. 支持向量机
支持向量机可以用于分类、回归与异常点检测,它有以下优势:
1、对高维数据集十分有效。
2、当p>n时,依然有效。
3、高效利用内存。
4、不同的核函数与决策函数一一对应。
缺点如下:
1、当p>>n时,需要合理选用核函数以避免过拟合。
2、由于支持向量机不直接提供概率估计,需要经过五折交叉验证计算得到,所以它较慢。
SVC、NuSVC和LinearSVC能够实现多元分类。SVC与NuSVC十分相似,不同之处在于NuSVC引入了一个新的超参数v,它可以控制支持向量的数量和训练误差。LinearSVC是另一个实现线性核函数的支持向量分类,所以它不接受关键词kernel,也没有所谓的支持向量。
支持向量的解释:支持向量本质上就是一个向量,而且是离间隔边界最近的向量,也就是这些向量支撑了整个间隔边界,支持向量的名字由来就是这样。
多元分类在分类中主要有两种方法:one-vs-one和one-vs-rest。
one-vs-one:假设有n个类别,则会针对两两类别建立二项分类器,得到k=n*(n-1)/2个分类器。对新数据进行分类时,依次使用这k个分类器进行分类,每次分类相当于一次投票,分类结果是哪个就相当于对哪个类投了一票。在使用全部k个分类器进行分类后,相当于进行了k次投票,选择得票最多的那个类作为最终分类结果。
one-vs-rest:假设有n个类别,那么就会建立n个二项分类器,每个分类器针对其中一个类别和剩余类别进行分类。进行预测时,利用这n个二项分类器进行分类,得到数据属于当前类的概率,选择其中概率最大的一个类别作为最终的预测结果。
其中,one-vs-rest更加受到青睐,因为它更快并且结果也很不错。
在内核岭回归中我们有谈到过支持向量回归,支持向量分类与支持向量回归都是只依赖于训练集的子集,因为构建模型的代价函数忽略任何接近于模型预测的训练数据。支持向量回归也有三种不同的形式:SVR、NuSVR和LinearSVR。
OneClassSVM实现了一个用于无监督的孤立点检测。
支持向量机是个强大的工具,不过它的计算和存储空间要求也会随着要训练向量的数目增加而快速增加。 SVM的核心是一个二次规划问题,是将支持向量和训练数据的其余部分分离开来。一般情况下复杂度为 ~ 。
惩罚系数C的设置:C定义了你对噪声的重视程度,如果数据中有很多噪声,我们应该减小C,防止模型过拟合。
gamma的设置:gamma 定义了单一 训练样本能起到多大的影响,这样就会导致只有某些训练样本就能占领主导地位,对于训练集可能效果会很好,但是对于测试集效果很差,即会导致过拟合,降低gamma能有效降低过拟合的风险,与C一样。
推荐一个网站,作者将SVM讲述的很好: SVM入门(一)至(三)Refresh - Jasper's Java Jacal - BlogJava
参考:《Scikit-Learn官方API》
如有错误,请指正;如有疑问,请留言。
4. 支持向量机
本文主要参考了李航的《统计学习方法》。是本人学习支持向量机的学习笔记。 首先对支持向量机做简单介绍,然后分别介绍以下三个模型: (1)线性可分支持向量机: 又称为硬间隔支持向量机,通过硬间隔最大化来学习一个线性分类器。适合 数据线性可分 情况; (2)线性支持向量机: 又称为软间隔支持向量机,通过软间隔最大化来学习一个线性分类器。适合 数据近似线性可分 情况; (3)非线性支持向量机: 通过核技巧和软间隔最大化来学一个非线性分类器。适合 数据非线性可分 情况 本文将对三个模型的介绍,从原始问题导出对偶问题。得到对偶问题以后,通过SMO算法对模型参数进行求解。最后,如果有机会再介绍以下支持向量机模型参数是如何利用SMO算法学习和训练的。
两堆数据怎么样才是线性可分就不再赘述,否则请出门左拐百度“线性可分”。支持向量机学习的目的是找到一个将两类数据分离的超平面,这个超平面可以描述为: 但实际上,我们通过给定的线性可分数据集能够拟合出来的模型为: 其中带了星号的 和 是超平面模型的参数,表示是从数据集中学习得到的经验值或者说是估计值。与理论上的模型差别就在于这两个参数。如果数据足够多,那么经验值与理论值就近似相等了。
为什么要引入间隔呢?为什么还有除了函数间隔之外还有个几何间隔?
什么是间隔,间隔就是样本点与分离超平面之间的距离。支持向量机学习的目标就是将间隔最大化。 支持向量机在学习过程中最终目的是找到一个能将数据分离的超平面。但将数据分离完成后还不够完美,还需要使得这个分离超平面具有足够的正确性和确信度。 假设我们得到了一个超平面 ,如果有一个点 ,则我们可以采用 来表示分类的正确性和确信度。 的正负取值描述正确性; 的取值描述确信度。
我们用变量 来表示第i个样本与超平面之间的函数间隔描述式: 在定义和寻找超平面的时候就是在训练集 中寻找最小的函数间隔,即:
先不废话,直接给出几何间隔的描述式,然后再解释要引入几何间隔。免得看一堆字看的懵逼。 可以看到函数间隔和集合间隔相比,参数 和 的分母上多了个 ,为什么要这样做呢?因为我们需要对参数 和 进行约束。如果不进行约束,求出来的超平面 与不加约束是相同的(毕竟 和 前面的系数可以约掉),但 和 的实际可能会大个好几倍,会导致超平面的确信度 变得十分不可靠。因此,我们对函数间隔加以约束,引入几何间隔的概念。 在定义和寻找超平面的时候就是在训练集 中寻找最小的几何间隔,即: 函数间隔和几何间隔的关系:
支持向量机学习的目的是找到一个几何间隔最大的、能正确划分数据集 的分离超平面。有目标,有约束,那么就可以表示为一个有约束的最优化问题,用几何间隔描述: 用函数间隔描述: 为了方便转换为最优化问题,我们将约束项 保留的同时,对 积分得到 ,使得最大化 问题等价转换为最小化 ;令 ; 利用两个数学技巧得到最终的最优化问题: 线性可分支持向量机最优化问题 我们求出最优解 后,可以得到分离超平面: 对新样本进行决策分类函数为: 决策分类函数的意思就是将新样本的特征值 带入式子 中,根据得出正负取值来进行分类。 其中, 函数:
原始问题:线性可分支持向量机最优化问题 为了导出它的对偶问题,我们构造一个拉格朗日函数: 根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题 先求极小化问题,再求极大化问题。 (1)求极小化问题 : 将 对 和 求偏导并令其等于0 将上面两个式子得出的结果代回到 : 于是就求得: (2)求极大化问题 : 我们把上一步的结果带入第二步中,再加上约束条件可以得到: 再把负号去掉,使得最大化问题等价转化为最小化问题 这样就得到了对偶问题的最优化问题,然后采用如SMO这种参数估计方法来对参数进行求解。 原始问题的解 假设我们求出了对偶最优化问题的解 ,则存在一个下标j使得 ,我们就可以根据关系推导出原始最优化问题的解 ( 这是一个定理,证明请参考李航的《统计学习方法》 ):
正如本文开篇所说的,线性支持向量机用来解决近似线性可分的数据分类问题。我们在线性可分支持向量机的基础对数据集 中的每一个样本都引入一个松弛变量 ,并对目标函数引入一个惩罚项,改变原来的目标函数和约束条件,使得线性支持向量机的 原始问题 为:
根据原始问题构造拉格朗日函数: 根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题 (1)求极小化问题 将 对 求偏导并令其等于0: 将上面的结果代回拉格朗日函数得到: (2)求极大化问题 通过上一步我们求解得到了极小化问题的表达式,接下来我们求解极大化问题: 实际上,通过约束条件中的非零关系,可以进一步将约束条件简化为 .我们可以得到最终的 线性支持向量机的对偶最优化问题: 原始问题的解 原始问题的解与前面的线性可分支持向量机一样,假设我们求出了对偶最优化问题的解 ,则存在一个下标j使得 ,我们就可以根据关系推导出原始最优化问题的解 ( 这也是一个定理,证明请参考李航的《统计学习方法》 ): 对新样本进行决策分类函数的对偶形式为: 决策分类函数的意思就是将新样本的特征值 带入式子 中,根据得出正负取值来进行分类。 其中, 函数:
非线性支持向量机中用一个核函数来替代输入实例向量之间的内积,从而实现了把线性不可分的低维数据映射成线性可分的高维数据,然后再用超平面对高维空间内的数据进行分类。
其实,可以看到上面的最优化问题和分类决策函数中只涉及到了输入实例# 的内积,因此我们可以通过核函数代替输入实例之间的内积。从而达到用核函数把数据映射到高维空间的目的。 我们用核函数 来代替实例之间的内积 后可以写出 非线性支持向量机的对偶最优化问题 和 分类决策函数: 最优化问题: 分类决策函数: 当核函数 是正定核函数时,最优化问题是凸二次规划问题,解存在。
为了搞清楚这个问题,首先要想想提出核函数的动机什么?提出核函数的目的是为了把低维数据映射成高维数据啊,然后好用一个分类超平面对这些数据分类。但是映射完成后的高维空间是什么样的我们并不清楚,好像目前只能保证哪些函数可以作为核函数使用,而不能为每种输入数据分布巧妙地设计出一个个核函数。而实际应用中也是在尝试使用各种各样的核函数,如高斯核函数、多项式核函数、线性核函数、sigmoid核函数、拉普拉斯核函数、字符串核函数等。 既然不能对每次的输入数据设计出合适的核函数,我们总能讨论一下什么样的函数才有资格成为核函数,因此我们退而求其次,有空去了解一下为什么核函数 必须要是正定核函数?虽然在实际应用中我们直接就采用几种常见的核函数进行尝试。
参考: https://blog.csdn.net/jiangjieqazwsx/article/details/51418681
5. 支持向量机原理
支持向量机方法的基本思想是:定义最优线性超平面,并把寻找最优线性超平面的算法归结为求解一个凸规划问题。进而基于Mercer核展开定理,通过非线性映射φ,把样本空间映射到一个高维乃至于无穷维的特征空间(Hilbert空间),使在特征空间中可以应用线性学习机的方法解决样本空间中的高度非线性分类和回归等问题(Nello Cristianini,2005)。简单地说就是升维和线性化。一般的升维都会带来计算的复杂化。这里自然发生的两个问题是如何求得非线性映射φ和解决算法的复杂性。SVM方法巧妙地解决了这两个难题:由于应用了核函数的展开定理,所以根本不需要知道非线性映射的显式表达式;由于是在高维特征空间中应用线性学习机的方法,所以与线性模型相比不但几乎不增加计算的复杂性,而且在某种程度上避免了“维数灾”。另外,SVM是一种有坚实理论基础的新颖的小样本学习方法。它基本上不涉及概率测度的定义及大数定律等,因此不同于现有的统计方法。从本质上看,它避开了从归纳到演绎的传统过程,实现了高效的从训练样本到预报样本的“转导推理”(transductive inference),大大简化了通常的分类和回归等问题。SVM的最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾”。如果说神经网络方法是对样本的所有因子加权的话,SVM方法是对只占样本集少数的支持向量样本“加权”。当预报因子与预报对象间蕴涵的复杂非线性关系尚不清楚时,基于关键样本的方法可能优于基于因子的“加权”。少数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本、“剔除”大量冗余样本,而且注定了该方法不但算法简单,而且具有较好的“鲁棒”性。由于有较为严格的统计学习理论做保证,应用SVM方法建立的模型具有较好的推广能力。SVM方法可以给出所建模型的推广能力的确定的界,这是目前其它任何学习方法所不具备的。
随着支持向量机理论的深入研究,出现了许多变种的支持向量机,如Sheng-wei Fe(2009)提出的两类重要的预测技术:分类和回归。其中分类问题预测要求观察值是离散的,而回归问题主要针对决策属性值是连续的情况,它通过学习训练样本集建立一个回归器,然后在条件属性给定的情况下进行预测。
支持向量机回归分为线性回归和非线性回归,其原理如下:
(1)支持向量机线性回归
设样本集为:(x1,y1),…,(xi,yi),x∈Rn,y∈R,回归函数用下列线性方程来表示:
f(x)=w·x+b (4.14)
假设所有训练数据在ε精度下如图4.5所示无误差地用线性函数拟合,即
基坑降水工程的环境效应与评价方法
图4.5 支持向量机回归
考虑到允许误差的情况,引入松弛因子ξi, ,则式(4.13)变为
基坑降水工程的环境效应与评价方法
其中常数C>0,表示对超出误差ε的样本的惩罚程度,ξi, 为松弛变量的上限与下限。为此构造拉格朗日函数:
基坑降水工程的环境效应与评价方法
得到其对偶问题为:
基坑降水工程的环境效应与评价方法
基坑降水工程的环境效应与评价方法
基坑降水工程的环境效应与评价方法
可以得到回归函数为:
其中,αi, 将只有一小部分小为零,它们对应的样本就是支持向量。
(2)支持向量机非线性回归
以上讨论的是线性问题,对于非线性问题,把输入样本xi通过ψ:x→H映射到高维特征空间H(可能是无穷维)。当在特征空间中构造最优超平面时,实际上只需进行内积运算,而这种内积运算是可以用原空间中的函数来实现的,没有必要知道ψ的形式。因为只要核函数K(xi,xj)满足Mercer条件,它就对应某一变换空间的内积即K(xi,xj)=ψ(i)·ψ(xj)。这一点提供了可能导致的“维数灾难”问题解决方法。
由线性支持向量回归可知,二次规划的拉格朗日目标函数:
基坑降水工程的环境效应与评价方法
其对偶形式:
基坑降水工程的环境效应与评价方法
可以得到回归函数为:
基坑降水工程的环境效应与评价方法
传统的拟合方法通常是在线性方程后面加高阶项。由此增加的可调参数增加了过拟合的风险。支持向量回归用核函数即能作非线性回归,达到了“升维”的目的,增加的可调参数很少,过拟合仍能控制。
6. 支持向量机原理
支持向量机原理SVM简介
支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;SVM还包括核技巧,这使它成为实质上的非线性分类器。SVM的的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。SVM的的学习算法就是求解凸二次规划的最优化算法。
SVM算法原理
SVM学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。如下图所示, \boldsymbol{w}\cdot x+b=0 即为分离超平面,对于线性可分的数据集来说,这样的超平面有无穷多个(即感知机),但是几何间隔最大的分离超平面却是唯一的。
在推导之前,先给出一些定义。假设给定一个特征空间上的训练数据集
T=\left\{ \left( \boldsymbol{x}_1,y_1 \right) ,\left( \boldsymbol{x}_2,y_2 \right) ,...,\left( \boldsymbol{x}_N,y_N \right) \right\}
其中, \boldsymbol{x}_i\in \mathbb{R}^n , y_i\in \left\{ +1,-1 \right\} ,i=1,2,...N , x_i 为第 i 个特征向量, y_i 为类标记,当它等于+1时为正例;为-1时为负例。再假设训练数据集是线性可分的。
几何间隔:对于给定的数据集 T 和超平面 w\cdot x+b=0 ,定义超平面关于样本点 \left( x_i,y_i \right) 的几何间隔为
\gamma _i=y_i\left( \frac{\boldsymbol{w}}{\lVert \boldsymbol{w} \rVert}\cdot \boldsymbol{x}_{\boldsymbol{i}}+\frac{b}{\lVert \boldsymbol{w} \rVert} \right)
超平面关于所有样本点的几何间隔的最小值为
\gamma =\underset{i=1,2...,N}{\min}\gamma _i
实际上这个距离就是我们所谓的支持向量到超平面的距离。
根据以上定义,SVM模型的求解最大分割超平面问题可以表示为以下约束最优化问题
\underset{\boldsymbol{w,}b}{\max}\ \gamma
s.t.\ \ \ y_i\left( \frac{\boldsymbol{w}}{\lVert \boldsymbol{w} \rVert}\cdot \boldsymbol{x}_{\boldsymbol{i}}+\frac{b}{\lVert \boldsymbol{w} \rVert} \right) \ge \gamma \ ,i=1,2,...,N
将约束条件两边同时除以 \gamma ,得到
y_i\left( \frac{\boldsymbol{w}}{\lVert \boldsymbol{w} \rVert \gamma}\cdot \boldsymbol{x}_{\boldsymbol{i}}+\frac{b}{\lVert \boldsymbol{w} \rVert \gamma} \right) \ge 1
因为 \lVert \boldsymbol{w} \rVert \text{,}\gamma 都是标量,所以为了表达式简洁起见,令
\boldsymbol{w}=\frac{\boldsymbol{w}}{\lVert \boldsymbol{w} \rVert \gamma}
b=\frac{b}{\lVert \boldsymbol{w} \rVert \gamma}
得到
y_i\left( \boldsymbol{w}\cdot \boldsymbol{x}_{\boldsymbol{i}}+b \right) \ge 1,\ i=1,2,...,N
又因为最大化 \gamma ,等价于最大化 \frac{1}{\lVert \boldsymbol{w} \rVert} ,也就等价于最小化 \frac{1}{2}\lVert \boldsymbol{w} \rVert ^2 ( \frac{1}{2} 是为了后面求导以后形式简洁,不影响结果),因此SVM模型的求解最大分割超平面问题又可以表示为以下约束最优化问题
\underset{\boldsymbol{w,}b}{\min}\ \frac{1}{2}\lVert \boldsymbol{w} \rVert ^2
s.t.\ \ y_i\left( \boldsymbol{w}\cdot \boldsymbol{x}_{\boldsymbol{i}}+b \right) \ge 1,\ i=1,2,...,N
这是一个含有不等式约束的凸二次规划问题,可以对其使用拉格朗日乘子法得到其对偶问题(dual problem)。
首先,我们将有约束的原始目标函数转换为无约束的新构造的拉格朗日目标函数
L\left( \boldsymbol{w,}b,\boldsymbol{\alpha } \right) =\frac{1}{2}\lVert \boldsymbol{w} \rVert ^2-\sum_{i=1}^N{\alpha _i\left( y_i\left( \boldsymbol{w}\cdot \boldsymbol{x}_{\boldsymbol{i}}+b \right) -1 \right)}
其中 \alpha _i 为拉格朗日乘子,且 \alpha _i\ge 0 。现在我们令
\theta \left( \boldsymbol{w} \right) =\underset{\alpha _{_i}\ge 0}{\max}\ L\left( \boldsymbol{w,}b,\boldsymbol{\alpha } \right)
当样本点不满足约束条件时,即在可行解区域外:
y_i\left( \boldsymbol{w}\cdot \boldsymbol{x}_{\boldsymbol{i}}+b \right) <1
此时,将 \alpha _i 设置为无穷大,则 \theta \left( \boldsymbol{w} \right) 也为无穷大。
当满本点满足约束条件时,即在可行解区域内:
y_i\left( \boldsymbol{w}\cdot \boldsymbol{x}_{\boldsymbol{i}}+b \right) \ge 1
此时, \theta \left( \boldsymbol{w} \right) 为原函数本身。于是,将两种情况合并起来就可以得到我们新的目标函数
\theta \left( \boldsymbol{w} \right) =\begin{cases} \frac{1}{2}\lVert \boldsymbol{w} \rVert ^2\ ,\boldsymbol{x}\in \text{可行区域}\\ +\infty \ \ \ \ \ ,\boldsymbol{x}\in \text{不可行区域}\\ \end{cases}
于是原约束问题就等价于
\underset{\boldsymbol{w,}b}{\min}\ \theta \left( \boldsymbol{w} \right) =\underset{\boldsymbol{w,}b}{\min}\underset{\alpha _i\ge 0}{\max}\ L\left( \boldsymbol{w,}b,\boldsymbol{\alpha } \right) =p^*
看一下我们的新目标函数,先求最大值,再求最小值。这样的话,我们首先就要面对带有需要求解的参数 \boldsymbol{w} 和 b 的方程,而 \alpha _i 又是不等式约束,这个求解过程不好做。所以,我们需要使用拉格朗日函数对偶性,将最小和最大的位置交换一下,这样就变成了:
\underset{\alpha _i\ge 0}{\max}\underset{\boldsymbol{w,}b}{\min}\ L\left( \boldsymbol{w,}b,\boldsymbol{\alpha } \right) =d^*
要有 p^*=d^* ,需要满足两个条件:
① 优化问题是凸优化问题
② 满足KKT条件
首先,本优化问题显然是一个凸优化问题,所以条件一满足,而要满足条件二,即要求
\begin{cases} \alpha _i\ge 0\\ y_i\left( \boldsymbol{w}_{\boldsymbol{i}}\cdot \boldsymbol{x}_{\boldsymbol{i}}+b \right) -1\ge 0\\ \alpha _i\left( y_i\left( \boldsymbol{w}_{\boldsymbol{i}}\cdot \boldsymbol{x}_{\boldsymbol{i}}+b \right) -1 \right) =0\\ \end{cases}
为了得到求解对偶问题的具体形式,令 L\left( \boldsymbol{w,}b,\boldsymbol{\alpha } \right) 对 \boldsymbol{w} 和 b 的偏导为0,可得
\boldsymbol{w}=\sum_{i=1}^N{\alpha _iy_i\boldsymbol{x}_{\boldsymbol{i}}}
\sum_{i=1}^N{\alpha _iy_i}=0
将以上两个等式带入拉格朗日目标函数,消去 \boldsymbol{w} 和 b , 得
L\left( \boldsymbol{w,}b,\boldsymbol{\alpha } \right) =\frac{1}{2}\sum_{i=1}^N{\sum_{j=1}^N{\alpha _i\alpha _jy_iy_j\left( \boldsymbol{x}_{\boldsymbol{i}}\cdot \boldsymbol{x}_{\boldsymbol{j}} \right)}}-\sum_{i=1}^N{\alpha _iy_i\left( \left( \sum_{j=1}^N{\alpha _jy_j\boldsymbol{x}_{\boldsymbol{j}}} \right) \cdot \boldsymbol{x}_{\boldsymbol{i}}+b \right) +}\sum_{i=1}^N{\alpha _i}
\ \ \ \ \ \ \ \ \ \ \ =-\frac{1}{2}\sum_{i=1}^N{\sum_{j=1}^N{\alpha _i\alpha _jy_iy_j\left( \boldsymbol{x}_{\boldsymbol{i}}\cdot \boldsymbol{x}_{\boldsymbol{j}} \right)}}+\sum_{i=1}^N{\alpha _i}
即
\underset{\boldsymbol{w,}b}{\min}\ L\left( \boldsymbol{w,}b,\boldsymbol{\alpha } \right) =-\frac{1}{2}\sum_{i=1}^N{\sum_{j=1}^N{\alpha _i\al
7. 什么是支持向量机?
什么是支持向量机?支持向量机基本概念
SVM算法是一种学习机制,是由Vapnik提出的旨在改善传统神经网络学习方法的理论弱点,最先从最优分类面问题提出了支持向量机网络。SVM学习算法根据有限的样本信息在模型的复杂性和学习能力之间寻求最佳折中,以期获得最好的泛化能力。SVM在形式上类似于多层前向网络,而且已被应用于模式识别、回归分析、数据挖掘等方面。
支持向量机这些特点是其他学习算法(如人工神经网络)所不及的。对于分类问题,单层前向网络可解决线性分类问题,多层前向网络可解决非线性分类问题。但这些网络仅仅能够解决问题,并不能保证得到的分类器是最优的;而基于统计学习理论的支持向量机方法能够从理论上实现对不同类别间的最优分类,通过寻找最坏的向量,即支持向量,达到最好的泛化能力。
SVM总的来说可以分为线性SVM和非线性SVM两类。线性SVM是以样本间的欧氏距离大小为依据来决定划分的结构的。非线性的SVM中以卷积核函数代替内积后,相当于定义了一种广义的趾离,以这种广义距离作为划分依据。
模糊支持向量机有两种理解:一种是针对多定义样本或漏分样本进行模糊后处理;另一种是在训练过程中引入模糊因子作用。
SVM在量化投资中的应用主要是进行金融时序数列的预测。根据基于支持向量机的时间序列预测模型,先由训练样本对模型进行训练和完备,然后将时间序列数据进行预测并输出预测结果。
本章介绍的第一个案例是一种基于最小二乘法的支持向最机的复杂金融数据时间序列预测方法,大大提高了求解问题的速度和收敛精度。相比于神经网络预测方法,该方法在大批量金融数据时间序列预测的训练时间、训练次数和预测误差上都有了明显提高,对复杂金融时间序列具有较好的预测效果。
第二个案例是利用SVM进行大盘拐点判断,由于使用单一技术指标对股价反转点进行预测存在较大的误差,所以使用多个技术指标组合进行相互验证就显得特别必要。SVM由于采用了结构风险最小化原则,能够较好地解决小样本非线性和高维数问题,因此通过构造一个包含多个技术指标组合的反转点判断向最,并使用SVM对技术指标组合向量进行数据挖掘,可以得到更加准确的股价反转点预测模型。
支持向量机基本概念
SVM算法是一种学习机制,是由Vapnik提出的旨在改善传统神经网络学习方法的理论弱点,最先从最优分类面问题提出了支持向量机网络。
SVM学习算法根据有限的样本信息在模型的复杂性和学习能力之间寻求最佳折中,以期获得最好的泛化能力。SVM在形式上类似于多层前向网络,而且己被应用于模式识别、回归分析、数据挖掘等方面。支持向量机方法能够克服多层前向网络的固有缺陷,它有以下几个优点:
(1)它是针对有限样本情况的。根据结构风险最小化原则,尽量提高学习机的泛化能力,即由有限的训练样本得到小的误差,能够保证对独立的测试集仍保持小的误差,其目标是得到现有信息下的最优解,而不仅仅是样本数趋于无穷大时的最优值。
(2)算法最终将转化成一个二次型寻优问题,从理论上说,得到的将是全局最优点。
(3)算法将实际问题通过非线性变换转换到高维的特征空间,在高维空间中构造线性判别函数来实现原空间中的非线性判别函数,这一特殊的性质能保证机器有较好的泛化能力,同时它巧妙地解决了维数灾难问题,使得其算法复杂度与样本维数无关。
8. 支持向量机的介绍
支持向量机(Support Vector Machine,SVM)是Corinna Cortes和Vapnik等于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中。在机器学习中,支持向量机(SVM,还支持矢量网络)是与相关的学习算法有关的监督学习模型,可以分析数据,识别模式,用于分类和回归分析。