-
支持向量回归
2014-03-20 13:41:19支持向量回归是在支持向量机上进一步的应用,使用支持向量回归可拟合函数 -
支持向量机SVM、支持向量回归SVR详细推导
2019-06-30 09:31:52文章详细介绍了支持向量机SVM及其拓展,支持向量回归SVR.并从线性分类和非线性分类的角度出发,详细推导了硬间隔、软间隔和核函数的支持向量机。目录
一、SVM简介
简介:SVM的英文全称是Support Vector Machines,中文叫支持向量机。支持向量机是我们用于分类的一种算法。支持向量也可以用于回归,此时叫支持向量回归(Support Vector Regression,简称SVR)。
发展历史:1963年,ATE-T Bell实验室研究小组在Vanpik的领导下,首次提出了支持向量机(SVM)理论方法。但在当时,SVM在数学上不能明晰地表示,人们对模式识别问题的研究很不完善,因此SVM的研究没有得到进一步的发展与重视。 1971年,Kimeldorf提出了使用线性不等约束重新构造SV的核空间,使一部分线性不可分的问题得到了解决。20世纪90年代,一个比较完善的理论体系——统计学习理论(Statistical Learning Theory,SLT)形成了,此时一些新兴的机器学习方法(如神经网络等)的研究遇到了一些重大的困难,比如欠学习与过学习问题、如何确定网络结构的问题、局部极小点问题等,这两方面的因素使得SVM迅速发展和完善,并在很多问题的解决中表现出许多特有优势,而且能够推广应用到函数拟合等其他机器学习问题中,从此迅速发展了起来,目前已经成功地在许多领域里得到了成功应用。
思想:SVM的主要思想可以概括为如下两点:
(1)它是针对线性可分的情况进行分析的。对于线性不可分的情况,通过使用非线性映射算法将低维输入空间线性不可分的样本转化为高维特征空间,使其线性可分,从而使得在高维特征空间中采用线性算法对样本的非线性特征进行线性分析成为可能。
(2)它基于结构风险最小化理论,在特征空间中构建最优分类面,使得学习器能够得到全局最优化,并且使整个样本空间的期望风险以某个概率满足一定上界。
从上面的两点基本思想来看,SVM没有使用传统的推导过程,简化了通常的分类和回归等问题;少数的支持向量确定了SVM 的最终决策函数,计算的复杂性取决于支持向量,而不是整个样本空间,这就可以避免“维数灾难”。少数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本,而且注定了该方法不但算法简单,而且具有较好的“鲁棒”性。数学基础:拉格朗日乘子法、对偶问题、KKT条件
应用:人脸检测、验证和识别,说话人/语音识别,文字/手写体识别 ,图像处理等等
二、推导过程
SVM有三宝:间隔、对偶、核技巧。
遇到的问题大致可以分为线性可分和线性不可分的情况,因此,我将分开介绍:1.线性可分
1.1 硬间隔
1. 基本模型
训练样本集,分类学习的思想:找一个划分超平面,将不同类别的样本分开。
划分的超平面很多,我们去找哪一个?直观上看,我们应该找位于两类训练样本“正中间”的超平面。在样本空间中,划分超平面可通过如下线性方程来描述:
其为法向量,决定了超平面的方向;b为位移项,决定了超平面与原点之间的距离。
显然,划分超平面可被法向量w和位移b确定,下面我们将其记为(w,b)。 样本空间中任意点x到超平面(w,b)的距离可写为
假设超平面(w,b)能将训练样本正确分类,即对,若,则.否则:,令
对应如下:
问题只与投影方向有关,一旦方向定了,通过缩放w和b,总能使上式成立。所以,求超平面的问题转化为求w和b的问题。如下图所示,距离超平面最近的这几个训练样本点使上式的等号成立,它们被称为“支持向量”(support vector),两个异类支持向量机到超平面的距离之和为 :
上图中,两条虚线之间的距离为:,将其称之为间隔。欲找到具有“最大间隔”(maximum margin)的划分超平面,也就是找到参数w和b,使得γ最大,即:
上面的约束等价于如下约束:
即支持向量机(Support Vector Machine,简称SVM)的基本型。2. 模型求解
上式中,其中w和b是模型参数。注意到上式本身是一个凸二次规划问题,能直接用现成的优化计算包求解,但我们可以有更高效的办法,可以求出闭式解。
对式使用拉格朗日乘子法可得到其“对偶问题”(dual problem):
其中,令对w和b的偏导数等于零得:
将第一个式代入L,即可将中的w和b消去,再考虑第二个式的约束,就得到对偶问题:
解出α后,求出w和b即可得到模型:
从对偶问题解出的是拉格朗日乘子,它恰对应着训练样本。注意到支持向量机最优化问题中有不等式约束,因此上述过程需满足KKT条件,即要求:
最后一个条件,对任意训练样本,总有或.
则有以下两种情况:
(1) 若,则该样本将不会在求和中出现,不会对f(x)有任何影响;
(2) 若,则必有,位于最大间隔边界上,是一个支持向量。
这显示出支持向量机的一个重要性质:训练完成后,大部分的训练样本都不需保留,最终模型仅与支持向量有关.如何求解:二次规划问题,通过SMO算法求解。
基本思路:每次选择两个变量α_i和α_j,并固定其他参数。这样,在参数初始化后,SMO不断执行如下两个步骤直至收敛:
(1) 选取一对需更新的变量和;
(2) 固定和以外的参数,求解式获得更新后的和.分析:KKT条件违背的程度越大,则变量更新后可能导致的且标函数值减幅越大。
第一个变量:SMO先选取违背KKT条件程度最大的变量。
第二个变量:应选择一个使且标函数值减小最快的变量,使选取的两变量所对应样本之间的间隔最大。为什么更新两个,而非一个?原因是,若仅选择一个,则其可有其他变量导出。因此更新两个。
SMO算法之所以高效,是由于在固定其他参数后,仅优化两个参数的过程能做到非常高效。
之前的优化问题:
仅考虑和时,式中的约束可重写为:
其中c是使成立的常数。用消去上式中的变量,则得到一个关于的单变量二次规划问题,仅有的约束是。
不难发现,这样的二次规划问题具有闭式解,于是不必调用数值优化算法即可高效地计算出更新后的和.确定偏移项b:
対任意支持向量 都有,即
其中 为所有支持向量的下标集,但现实任务中常采用一种更鲁棒的做法:使用所有支持向量求解的平均值
1.2 软间隔
在现实任务中往往很难确定合适的核函数使得训练样本在特征空间中线性可分。
缓解该问题的一个办法是允许支持向量机在一-些样本上出错.为此,要引入“软间隔”的概念,如图所示:
在最大化间隔的同时,不满足约束的样本应尽可能少.于是,优化目标可写为:
即,在间隔上加一个损失,允许错分,但是损失应该尽量小。(1)0/1损失函数
显然,当C为无穷大时,迫使所有样本均满足约束,于是等价于经典支持向量机方法;
当C取有限值时,允许一些样本不满足约束。
然而,非凸、非连续,不易直接求解。人们通常用其他一些函数来代替,称为“替代损失”(surrogate loss),通常是凸的连续函数且是的上界。(2)hinge损失函数
若采用hinge损失,则代价函数变成:
引入“松弛变量”(slack variables),可将重写为:
这就是常用的“软间隔支持向量机”。
(3)其他损失函数
损失函数:
标准:>0时,尽可能小,<0时,尽可能大。从而保证分类的准确性。2.线性不可分(核函数)
我们假设训练样本是线性可分的,超平面能将训练样本正确分类。然而在现实任务中,原始样本空间内也许并不存在一个能正确划分两类样本的超平面。例如图中的“异或”问题就不是线性可分的.
对这样的问题,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。例如在图中,若将原始的二维空间映射到一个合适的三维空间,就能找到一个合适的划分超平面。
如何映射?有没有通用的办法?幸运的是,如果原始空间是有限维,即属性数有限,那么一定存在一个高维特征空间使样本可分。 令∅(x)表示将x映射后的特征向量,于是,在特征空间中划分超平面所对应的模型可表示为:
其中w和b是模型参数。
问题转化为:
其对偶问题是:
求解式涉及到计算,这是样本与映射到特征空间之后的内积。
由于特征空间维数可能很高,甚至可能是无穷维,因此直接计算通常是困难的。
为了避开这个障碍,可以设想这样一个函数:
即与在特征空间的内积等于它们在原始样本空间中通过函数κ(∙,∙ )计算的结果。有了这样的函数,我们就不必直接去计算高维甚至无穷维特征空间中的内积。
于是式可重写为:
于是,求解后即可得到:
这里的函数κ(∙,∙ )就是“核函数”(kernel function)。上式显示出模型最优解可通过训练样本的核函数展开,这一展式亦称“支持向量展式”(support vector expansion)。问题:显然,若已知合适映射ϕ(∙)的具体形式,则可写出核函数κ(∙,∙ ),但在现实任务中我们通常不知道ϕ(∙)是什么形式。
合适的核函数是否一定存在呢?什么样的函数能做核函数呢?
答案是肯定的。定理(核函数) 令χ为输入空间,κ(∙,∙ )是定义在上的对称函数,则κ是核函数当且仅当对于任意数据,“核矩阵”(kernel matrix)K总是半正定的:
定理表明,只要一个对称函数所对应的核矩阵半正定,它就能作为核函数使用。在不知道特征映射的形式时,我们并不知道什么样的核函数是合适的,“核函数选择”成为支持向量机的最大变数。
通常,可选择如下核函数,选择性能最优者作为某一问题的核函数:
注意:当d=1时,高斯核也成为径向基核函数(RBF)核。此外,还可通过函数组合得到,例如:
(1) 若κ_1和κ_2为核函数,则对于任意正数,其线性组合也是核函数:
(2) 若κ_1和κ_2为核函数,则核函数的直积也是核函数;
(3) 若κ_1为核函数,则对于任意函数g(x),也是核函数;
3.SVR支持向量回归
给定训练样本,希望学得一个回归模型,使得与尽可能接近,和是待确定的模型参数。
假设我们能容忍与之间最多有的偏差,即仅当与之间的差别绝对值大于时才计算损失.于是,SVR问题可形式化为:
其中C为正则化常数,是图中所示的ϵ -不敏感损失(ϵ -insensitive loss)函数:
引入松弛变量和,可将式重写为:
引入拉格朗日乘子,
再令对,,, 的偏导为零可得:
上述过程中需满足KKT条件,即要求:
SVR的解形如
能使式中的的样本即为SVR的支持向量,它付必落在ϵ-同隔带之外.显然, SVR的支持向量仅是训练样本的一部分,即其解仍具有稀疏性.若,则必有,
实践中常采用一中更鲁棒的办法:迭取多个满足条件的样本求解b后取平均値。若考虑特征映射形式,则:
则SVR可表示为:
其中为核函数。 -
支持向量机和支持向量回归
2016-11-24 14:07:31根据《Pattern Recognition and Machine Learning》这本书的第7章(稀疏核机)的7.1节,介绍了样本数据线性可分的线性可分支持向量机和样本数据重叠的线性支持向量机,以及支持向量回归。详细介绍了公式的推导过程,... -
支持向量回归问题。 在支持向量回归中,最后的决定系数alpha等于0,表示不是支持向量,在epsil
2021-03-24 12:21:40支持向量回归问题。 在支持向量回归中,最后的决定系数alpha等于0,表示不是支持向量,在epsilon带内。大于0小于C表示在epsilon带上,大于C表示在带外。但是我做的过程中发展,会有微小差别,比如alpha等于0应该在带... -
粗糙ε-支持向量回归模型
2021-02-09 07:34:20在ε-支持向量回归和粗糙v-支持向量回归模型的基础上,研究了新的粗糙ε-支持向量回归模型.利用固定对称边界粗糙ε-不敏感损失函数,得到粗糙ε-不敏感管,构造固定对称边界粗糙ε-支持向量回归模型;利用固定非对称边界... -
ε距离加权支持向量回归
2021-03-15 08:18:10ε距离加权支持向量回归 -
特权多目标支持向量回归
2021-03-12 13:52:38特权多目标支持向量回归 -
支持向量回归代码
2014-04-18 12:26:41关于支持向量回归的代码,支持向量分类和回归问题 -
无偏置支持向量回归优化问题
2021-03-10 03:10:50无偏置支持向量回归优化问题 -
光滑CHKS孪生支持向量回归机
2021-02-26 15:01:48光滑CHKS孪生支持向量回归机 -
支持向量回归的一种网络优化策略
2021-01-15 07:29:29提出一种用于支持向量回归的网络优化策略.学习策略分为两个阶段:首先训练支持向量机, 得到支持向量回归的初始结构和参数,构造一个无阈值的支持向量回归网络;然后通过带有遗忘因子的递归最小二乘算法, 优化计算支持... -
减少示例以加速支持向量回归
2021-02-22 20:19:24随着训练实例数量的增加,支持向量回归机的训练时间大大增加。 在本文中,我们基于支持向量的目标值通常是局部极值或接近极值的观察结果,开发了一种减少训练时间的方法来减少训练时间。 所提出的方法首先从完整的... -
基于支持向量回归和线性回归的航班延误组合预测
2021-02-08 03:17:41基于支持向量回归和线性回归的航班延误组合预测 -
支持向量回归的递归有限牛顿算法
2021-02-23 23:20:32支持向量回归的递归有限牛顿算法 -
线性规划支持向量回归的学习错误
2021-02-23 15:22:52线性规划支持向量回归的学习错误 -
多输出支持向量回归matlab_RDKit:基于支持向量回归(SVR)预测logP
2020-12-03 10:17:22使用支持向量回归(SVR)来预测logP。 分子的输入结构特征是摩根指纹,输出是logP。代码示例:#导入依赖库import numpy as npfrom rdkit import Chemfrom rdkit.Chem.Crippen import MolLogPfrom rdkit import Chem, ...RDKit一个用于化学信息学的python库。使用支持向量回归(SVR)来预测logP。 分子的输入结构特征是摩根指纹,输出是logP。
代码示例:
#导入依赖库
import numpy as np
from rdkit import Chem
from rdkit.Chem.Crippen import MolLogP
from rdkit import Chem, DataStructs
from rdkit.Chem import AllChem
from sklearn.svm import SVR
from sklearn.metrics import mean_squared_error, r2_score
from scipy import stats
import matplotlib.pyplot as plt
载入smile分子库,计算morgan指纹和logP
num_mols = 5000
f = open('smiles.txt', 'r')
contents = f.readlines()
fps_total = []
logP_total = []
for i in range(num_mols):
smi = contents[i].split()[0]
m = Chem.MolFromSmiles(smi)
fp = AllChem.GetMorganFingerprintAsBitVect(m,2)
arr = np.zeros((1,))
DataStructs.ConvertToNumpyArray(fp,arr)
fps_total.append(arr)
logP_total.append(MolLogP(m))
fps_total = np.asarray(fps_total)
logP_total = np.asarray(logP_total)
划分训练集和测试集
num_total = fps_total.shape[0]
num_train = int(num_total*0.8)
num_total, num_train, (num_total-num_train)
fps_train = fps_total[0:num_train]
logP_train = logP_total[0:num_train]
fps_test = fps_total[num_train:]
logP_test = logP_total[num_train:]
将SVR模型用于回归模型
https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVR.html
_gamma = 5.0
clf = SVR(kernel='poly', gamma=_gamma)
clf.fit(fps_train, logP_train)
完成训练后,应该检查预测的准确性。对于评估,将使用r2和指标的均方误差。
logP_pred = clf.predict(fps_test)
r2 = r2_score(logP_test, logP_pred)
mse = mean_squared_error(logP_test, logP_pred)
r2, mse
模型结果可视化
slope, intercept, r_value, p_value, std_error = stats.linregress(logP_test, logP_pred)
yy = slope*logP_test+intercept
plt.scatter(logP_test, logP_pred, color='black', s=1)
plt.plot(logP_test, yy, label='Predicted logP = '+str(round(slope,2))+'*True logP + '+str(round(intercept,2)))
plt.xlabel('True logP')
plt.ylabel('Predicted logP')
plt.legend()
plt.show()
参考:
https://github.com/SeongokRyu/CH485---Artificial-Intelligence-and-Chemistry
https://blog.csdn.net/zb123455445/article/details/78354489
-
02-36 支持向量回归
2020-02-28 22:13:24文章目录支持向量回归支持向量回归学习目标支持向量回归详解支持向量机目标函数优化问题回顾支持向量回归损失度量函数支持向量回归目标函数优化问题支持向量回归目标函数对偶形式支持向量回归模型系数的稀疏性核支持...文章目录
支持向量回归
传统回归模型如线性回归,对于样本是直接基于模型,通过预测值和真实值之间的差别计算损失,并且当时损失才为零。
支持向量回归(support vector regression, SVR)则可以容忍和之间有最多的偏差,即当的时候才计算损失,这相当于以为中心,构建了一个宽度为的间隔带,如果样本落入间隔带,则他的分类就是正确的。
支持向量回归学习目标
- 支持向量机和支持向量回归的优化问题
- 支持向量回归目标函数的对偶形式
- 支持向量回归模型系数的稀疏性
- 核支持向量回归
- 支持向量机的优缺点
支持向量回归详解
支持向量机目标函数优化问题回顾
线性可分SVM目标函数优化问题为
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ & \underbrace{…
线性SVM由于在目标函数中加入了松弛因子,目标函数优化问题为
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ & \underbrace{…支持向量回归损失度量函数
支持向量回归由于有一个间隔带,因此它的损失度量函数为
支持向量回归目标函数优化问题
由于SVR的间隔带是自己引入的,所以SVR的目标函数变为
如果和线性SVM一样引入松弛因子,但是由于我们的误差度量中的是绝对值小于,因此这个不等式其实是两个不等式,则SVR需要引入两个松弛因子和,则SVR的优化问题将变成
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ s.t. & f(x_i)-…
对SVR的优化问题引入拉格朗日乘子,通过拉格朗日乘子法即可得到拉格朗日函数
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ & L(w,b,\alpha…支持向量回归目标函数对偶形式
通过拉格朗日即可得到支持向量回归目标函数的原始形式
可以发现支持向量回归的目标函数的原始形式也满足KTT条件,即可以通过拉格朗日对偶将我们的问题转化为等价的对偶问题,即
首先求优化函数对让的极小值,再求拉格朗日乘子的极大值,即先得到拉格朗日函数分别对求偏导为0可得
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ & w = \sum_{i=…
将拉格朗日函数对的偏导代入拉格朗日函数,即可得SVR的对偶问题
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ s.t. & \sum_{i…
对于上述SVR的目标函数的对偶形式取对数,即可变成最小化目标函数的优化问题,即
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ s.t. & \sum_{i…
对于这个目标函数,依然可以使用SMO算法求出对应的,进而求出回归模型的。支持向量回归模型系数的稀疏性
在对支持向量回归的目标函数优化的时候,我们假设该目标函数满足KKT条件,该KKT条件为
从上式可以看出,只有当的时候才可以为非0解,并且只有当的时候才可以为非0解。首先根据松弛变量的定义,如果,则样本点落在间隔带中,则,既可以得到,则可以得到,则。
即只有样本点不落入间隔带中才能使得相应的和为非0解,并且由于样本点既不能同时在分隔超平面的两边,即和不能同时存在,即和至少有一个为0并且不能同时为0,则。
假设已经通过SMO算法得到,则可以得到,即可得SVR的分离超平面为
从上式可以看出当样本点落在间隔带,由于,即,则不受这些间隔带内点的影响,对于间隔带外的样本点,则会对造成影响,即这些点为SVR的支持向量。并且由于SVR的支持向量仅仅是训练样本的一部分,所以SVR的解具有稀疏性。SVR对于的求解类似于SVM,由于能得到多个值,所以最后对取平均值。
核支持向量回归
上一节得到了SVR的分离超平面为
如果我们使用和SVM一样的核技巧,即对SVR训练数据做一个样本映射,即另表示映射后的特征向量。则分离超平面可以变为
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ f(x) & = \sum_…
其中为核函数。小结
SVR除了可以支持回归问题外,其他方面和SVM差不多,由于SVR也算作是SVM的一个分支,此处不多说什么,参考SVM即可。
-
机器学习算法支持向量回归
2019-03-10 19:04:07机器学习算法,支持向量回归,SVR回归,就是找到一个回归平面,让一个集合的所有数据到该平面的距离最近。 -
密度加权孪生支持向量回归机
2021-01-13 20:25:15为了使数据集的内在分布更好地影响训练模型, 提出一种密度加权孪生支持向量回归机算法. 该算法通过?? 近邻算法计算获得每个数据点基于数据密度分布的密度加权值, 并将密度加权值引入到标准孪生支持向量回归机算法中.... -
基于Beta噪声模型支持向量回归及其应用
2021-02-09 07:33:05在ν-支持向量回归的基础上,本文提出一种基于不等式约束的Beta噪声支持向量回归(BN-SVR)的新模型,并将其应用于短期风速预报中.实验结果说明,模型BN-SVR是有效可行的,且较经典支持向量回归模型获得更好的性能. -
支持向量回归的类似Bagging的度量学习
2021-03-11 19:45:23支持向量回归的类似Bagging的度量学习 -
支持向量回归实现
2014-03-20 13:43:11采用何种手段才能实现支持向量回归呢,当然有很多现成的工具和库函数,但libsvm和lssvm是较为好用的两种工具 -
基于遗传-支持向量回归的煤层底板突水量预测研究
2020-05-23 17:14:38针对煤层底板突水问题的小样本、非线性特点,采用支持向量回归算法对突水量进行预测,避免了定性分析的局限性。利用遗传算法全局搜索能力的优势,提出了基于遗传算法的支持向量回归参数寻优方法,并建立煤层底板突水量... -
支持向量回归法控制两轮自平衡机器人
2021-03-04 02:45:18支持向量回归法控制两轮自平衡机器人