支持向量机(SVM)原理小结(3)支持向量回归SVR
- 1. 支持向量回归(SVR)
- 1.1 学习算法—对偶形式
- (1)求 min w , b , ξ , ξ ^ L ( w , b , ξ , ξ ^ , α , α ^ , μ , μ ^ ) \min\limits_{w,b,\xi,\hat\xi} L(w, b, \xi, \hat\xi, \alpha, \hat\alpha, \mu, \hat\mu) w,b,ξ,ξ^minL(w,b,ξ,ξ^,α,α^,μ,μ^)
- (2)求 min w , b , ξ , ξ ^ L ( w , b , ξ , ξ ^ , α , α ^ , μ , μ ^ ) \min\limits_{w,b,\xi,\hat\xi}L(w, b, \xi, \hat\xi, \alpha, \hat\alpha, \mu, \hat\mu) w,b,ξ,ξ^minL(w,b,ξ,ξ^,α,α^,μ,μ^)对 α , α ^ \alpha,\hat\alpha α,α^的极大,即对偶问题
- 1.2 核函数
- 1.3 支持向量
- 2. 模型评价
- 完整代码地址
- 参考
SVM系列文章:
支持向量机(SVM)原理小结(1)线性支持向量机支持向量机(SVM)原理小结(2)非线性支持向量机支持向量机(SVM)原理小结(3)支持向量回归SVR
本博客中使用到的完整代码请移步至: 我的github:https://github.com/qingyujean/Magic-NLPer,求赞求星求鼓励~~~
1. 支持向量回归(SVR)
传统回归问题例如线性回归中,一般使用模型的输出与真实值的差别来计算损失,如均方损失MSE
,当与完全一样时损失才为0。
而SVR假设能容忍$f(x)$和$y$之间最多由
的偏差,即
时才计算损失
。这相当于以为中心,构建了一个宽度为的间隔带
(见下图),如果训练样本落在间隔带内部,则认为预测正确,无损失
。
则SVR问题可形式化为:
对每个样本点引入一个松弛变量,使得约束变为:,同时对每个松弛变量支付一个代价(这里的代价
,其实就是不满足约束的程度
:满足约束的即在间隔带内部的,代价为0;勉强满足约束的即点落在间隔带外边附近的,代价比较小,完全背离约束的即落在间隔带外边而且隔的很远,代价最大)。此时就得到如下的约束最优化的原始问题:
若允许间隔带两侧的松弛程度不同,即进入2个松弛变量,那么就得到如下的约束最优化的原始问题:
1.1 学习算法—对偶形式
首先写出有约束最优化的原始问题的拉格朗日无约束优化函数
:
其中,称为拉格朗日乘子。
约束最优化的原始问题可以表示为 拉格朗日极小极大问题
:。
由于和约束条件函数为连续可微的凸函数,且满足KKT条件,则原始问题的解与对偶问题的解是等价的,那么可以通过求解对偶问题来求解原始问题。
原始问题的对偶问题是 拉格朗日极大极小问题
:
(1)求
将分别对,和求偏导数,并令其等于0。
得
代入得
即
(2)求对的极大,即对偶问题
等价于(利用等式和消去和,并将求max转化为求min):
上式即为 对偶最优化问题
。
对偶最优化问题对的解设为,那么原始问题最优化问题的解也可求出。
即求得
任选一个的分量满足用来求(因为,而,所以):
则最后的SVR模型可表示为:
分类决策函数可以写成
对偶算法中,只依赖于输入 和 训练样本的内积,而上式称为 线性支持向量回归的对偶形式
。
1.2 核函数
考虑非线性映射
和核函数
,则容易得到非线性支持向量回归的对偶形式
:
其中为核函数
。
1.3 支持向量
注意对偶问题中的求解式:,只有才对求解有影响(保证了解的 稀疏性,最终模型仅与支持向量有关
),所以满足的样本 就称为 支持向量
。
由KKT互补条件知,,当时,则一定有,即,同理,如要,则一定有,即。换言之,如若要和不为0,当且仅当即实例一定 不在
间隔带内部
。
此外,因为实例点一定在间隔带的某一侧,所以和不可能同时成立,所以中至少必有一个为0。
2. 模型评价
SVM系列至此就介绍完了,这里对该模型做一个评价总结。评价内容摘自刘建平老师的支持向量机原理(五)线性支持回归:
SVM算法是一个很优秀的算法,在集成学习和神经网络之类的算法没有表现出优越性能前,SVM基本占据了分类模型的统治地位。目前则是在大数据时代的大样本背景下,SVM由于其在大样本时超级大的计算量,热度有所下降,但是仍然是一个常用的机器学习算法。
优点:
- 解决高维特征的分类问题和回归问题很有效,在特征维度大于样本数时依然有很好的效果。
- 仅仅使用一部分支持向量来做超平面的决策,无需依赖全部数据。
- 有大量的核函数可以使用,从而可以很灵活的来解决各种非线性的分类回归问题。
- 样本量不是海量数据的时候,分类准确率高,泛化能力强。
缺点:
- 如果特征维度远远大于样本数,则SVM表现一般。
- SVM在样本量非常大,核函数映射维度非常高时,计算量过大,不太适合使用。
- 非线性问题的核函数的选择没有通用标准,难以选择一个合适的核函数。
- SVM对缺失数据敏感。
完整代码地址
完整代码请移步至: 我的github:https://github.com/qingyujean/Magic-NLPer,求赞求星求鼓励~~~
最后:如果本文中出现任何错误,请您一定要帮忙指正,感激~
参考
[1] 西瓜书-机器学习 周志华
[2] 支持向量机原理(五)线性支持回归 刘建平