【机器学习算法模型】1. SVR模型推导

【机器学习算法模型推导】1. SVR算法介绍与推导

一、SVR算法

SVR做为SVM的分支从而被提出。SVM一般用于二分类问题,而SVR一般应用于数据的拟合。

1.SVR简介

无论SVM还是SVR,都需要建立一个超平面。SVM的目标是令超平面与最近的样本点的距离最大,实现通过超平面分类的目的;而SVR的目标是要使得超平面与最远的样本点的距离最小,从而可以通过利用超平面对数据进行拟合。
请添加图片描述

2.SVR数学模型

SVR在线性函数两侧制造了一个“间隔带”,对于所有落入到间隔带内的样本,都不计算损失;只有间隔带之外的,才计入损失函数。之后再通过最小化间隔带的宽度与总损失来最优化模型。
由于模型需要放弃一些边缘的点,用于最小化间隔带,
所以引入了松弛变量 ξ i \xi_i ξi ξ i ∗ \xi_i^* ξi(松弛变量有两个符号,SVM只有1个符号), 代表上图上边缘点和下边缘点与中间实线的距离(y轴投影距离而不是欧式距离,直接计算点与点在实线上的投影的y轴上的差即可。):

2.1 SVR目标函数

m i n ω , b 1 2 ∥ ω ∥ 2 + C ∑ i = 1 l ( ξ i + ξ i ∗ ) \mathop{min}\limits_{\omega, b}\frac{1}{2}\parallel\omega\parallel^2 + C\sum_{i=1}^{l}(\xi_i + \xi_i^*) ω,bmin21ω2+Ci=1l(ξi+ξi)

s . t . { y i − ω x − b ≤ ϵ + ξ i ω x + b − y i ≤ ϵ + ξ i ∗ ξ i , ξ i ∗ ≥ 0 s.t.\left\{ \begin{array}{l} y_i-\omega x-b \le \epsilon + \xi_i \\ \omega x + b - y_i \le \epsilon + \xi_i^* \\ \xi_i,\xi_i^* \qquad \quad \ge 0 \end{array} \right. s.t.yiωxbϵ+ξiωx+byiϵ+ξiξi,ξi0

其中, ξ i \xi_i ξi ξ i ∗ \xi_i^* ξi的取值为:

{ ξ i = y i − ( ω x + b + ϵ ) , y i > ω x + b + ϵ ξ i = 0 , o t h e r w i s e \left\{ \begin{array}{l} \xi_i=y_i-(\omega x + b +\epsilon), y_i > \omega x + b + \epsilon\\ \xi_i=0, \qquad \qquad \qquad \quad otherwise \end{array} \right. {ξi=yi(ωx+b+ϵ),yi>ωx+b+ϵξi=0,otherwise

{ ξ i ∗ = ( ω x + b − ϵ ) − y i , y i < ω x + b − ϵ ξ i ∗ = 0 , o t h e r w i s e \left\{ \begin{array}{l} \xi_i^*=(\omega x + b -\epsilon)-y_i, y_i < \omega x + b - \epsilon\\ \xi_i^*=0, \qquad \qquad \qquad \quad otherwise \end{array} \right. {ξi=(ωx+bϵ)yi,yi<ωx+bϵξi=0,otherwise

2.2 为了最小化目标函数,根据约束条件,构造拉格朗日函数

L = 1 2 ∥ ω ∥ 2 + C ∑ i = 1 l ( ξ i + ξ i ∗ ) − ∑ i = 1 l α i ( ϵ + ξ i − y i + ω x + b ) − ∑ i = 1 l α i ∗ ( ϵ + ξ i ∗ + y i − ω x − b ) − ∑ i = 1 l ( η i ξ i + η i ∗ ξ i ∗ ) s . t . α i , α i ∗ , η i , η i ∗ ≥ 0 \begin{array}{l} L=\frac{1}{2}\parallel\omega\parallel^2 + C\sum_{i=1}^{l}(\xi_i + \xi_i^*) \\ \qquad - \sum\limits_{i=1}^l \alpha_i(\epsilon + \xi_i - y_i + \omega x + b) \\ \qquad - \sum\limits_{i=1}^l \alpha_i^*(\epsilon + \xi_i^* + y_i - \omega x - b) \\ \qquad - \sum\limits_{i=1}^l(\eta_i\xi_i + \eta_i^*\xi_i^*)\\ s.t. \quad\alpha_i, \alpha_i^*, \eta_i, \eta_i^* \ge 0 \end{array} L=21ω2+Ci=1l(ξi+ξi)i=1lαi(ϵ+ξiyi+ωx+b)i=1lαi(ϵ+ξi+yiωxb)i=1l(ηiξi+ηiξi)s.t.αi,αi,ηi,ηi0

原问题可以化为:
m i n ω , b m a x α i ( ∗ ) , η i ( ∗ ) L ( ω , b , ξ i , ξ i ∗ , α i , α i ∗ , η i , η i ∗ ) \mathop{min}\limits_{\omega, b}\mathop{max}\limits_{\alpha_i^{(*)}, \eta_i^{(*)}}L(\omega, b, \xi_i,\xi_i^*, \alpha_i, \alpha_i^*, \eta_i, \eta_i^*) ω,bminαi(),ηi()maxL(ω,b,ξi,ξi,αi,αi,ηi,ηi)

2.3 原问题的对偶问题

m a x α i ( ∗ ) , η i ( ∗ ) m i n ω , b L ( ω , b , ξ i , ξ i ∗ , α i , α i ∗ , η i , η i ∗ ) \mathop{max}\limits_{\alpha_i^{(*)}, \eta_i^{(*)}}\mathop{min}\limits_{\omega, b}L(\omega, b, \xi_i,\xi_i^*, \alpha_i, \alpha_i^*,\eta_i, \eta_i^*) αi(),ηi()maxω,bminL(ω,b,ξi,ξi,αi,αi,ηi,ηi)

2.4 分别对 ω , b , ξ i , ξ i ∗ \omega,b,\xi_i,\xi_i^* ω,b,ξi,ξi求偏导,并令偏导为0

{ ∂ L ∂ ω = ω − ∑ i = 1 l ( α i ∗ − α i ) x i = 0 ∂ L ∂ b = ∑ i = 1 l ( α i ∗ − α i ) = 0 ∂ L ∂ ξ i = C − α i − η i ∂ L ∂ ξ i ∗ = C − α i ∗ − η i ∗ \left\{ \begin{array}{l} \frac{\partial L}{\partial \omega} = \omega - \sum\limits_{i=1}^{l}(\alpha_i^* - \alpha_i)x_i = 0\\ \frac{\partial L}{\partial b} =\sum\limits_{i=1}^{l}(\alpha_i^* - \alpha_i) = 0\\ \frac{\partial L}{\partial \xi_i}=C - \alpha_i - \eta_i\\ \\ \frac{\partial L}{\partial \xi_i^*} = C - \alpha_i^* - \eta_i^* \end{array} \right. ωL=ωi=1l(αiαi)xi=0bL=i=1l(αiαi)=0ξiL=CαiηiξiL=Cαiηi

2.5 用SMO算法求解SVR

使用SMO算法前,还需将 α i , α i ∗ \alpha_i, \alpha_i^* αi,αi转化为一个参数,因为SMO算法针对的是任意样本 x i x_i xi 只对应一个参数 α i \alpha_i αi的情况。

过程采用拉格朗日对偶法,对偶问题有解的充要条件是满足KKT条件,对于SVR的对偶问题,其KKT条件如下:
{ α i ( ϵ + ξ i − y i + ω x + b ) = 0 α i ∗ ( ϵ + ξ i + y i − ω x − b ) = 0 ( C − α i ) ξ i = 0 ( C − α i ∗ ) ξ i ∗ = 0 α i α i ∗ = 0 ξ i ξ i ∗ = 0 \left\{ \begin{array}{l} \alpha_i(\epsilon + \xi_i - y_i + \omega x + b) = 0\\ \alpha_i^*(\epsilon + \xi_i + y_i - \omega x - b) = 0\\ (C-\alpha_i)\xi_i = 0\\ (C-\alpha_i^*)\xi_i^* = 0\\ \alpha_i\alpha_i^* = 0\\ \xi_i\xi_i^* = 0 \end{array} \right. αi(ϵ+ξiyi+ωx+b)=0αi(ϵ+ξi+yiωxb)=0(Cαi)ξi=0(Cαi)ξi=0αiαi=0ξiξi=0

λ i = α i − α i ∗ \lambda_i = \alpha_i - \alpha_i^* λi=αiαi。由KKT条件, α i , α i ∗ \alpha_i,\alpha_i^* αi,αi至少有一个为0。所以 ∣ λ i ∣ = α i + α i ∗ |\lambda_i| = \alpha_i + \alpha_i^* λi=αi+αi。代入对偶问题,则有(先用求导结果替换 ω \omega ω):
m i n λ [ ∑ i = 1 l y i λ i + ϵ ∣ λ i ∣ + 1 2 ∑ i = 1 l ∑ j = 1 l λ i λ j x i T x i ] s . t . { ∑ i = 1 l λ i = 0 − C ≤ λ i ≤ C \begin{array}{l} \mathop{min}\limits_{\lambda}[\sum\limits_{i=1}^{l}y_i\lambda_i+ \epsilon|\lambda_i| + \frac{1}{2}\sum\limits_{i=1}^{l}\sum\limits_{j=1}^{l}\lambda_i\lambda_j x_i^Tx_i] \\ s.t.\left\{\begin{array}{l} \sum\limits_{i=1}^{l}\lambda_i = 0\\ -C \le \lambda_i \le C \end{array} \right. \end{array} λmin[i=1lyiλi+ϵλi+21i=1lj=1lλiλjxiTxi]s.t.i=1lλi=0CλiC
最后再参考SMO算法,求出回归模型系数 ω , b \omega, b ω,b

<think>嗯,用户想了解机器学习中的回归算法,包括它们的介绍、原理和实现。首先,我需要确定回归算法的主要类型,以及它们的核心思想。常见的回归算法有线性回归、多项式回归、岭回归、Lasso回归、弹性网络回归、决策树回归、支持向量回归、梯度提升回归和贝叶斯回归。每个算法都有不同的数学原理和应用场景。 首先,线性回归是最基础的,它通过最小化预测值与真实值之间的均方误差来找到最佳拟合直线。原理部分需要解释损失函数和参数求解方法,比如最小二乘法或者梯度下降。实现的话,可以用Python的Scikit-learn库中的LinearRegression。 接下来是多项式回归,它扩展了线性回归,通过引入多项式特征来拟合非线性关系。需要注意过拟合的问题,可能需要正则化处理。原理部分要提到特征转换和模型复杂度。 然后是正则化的方法,比如岭回归和Lasso回归。岭回归使用L2正则化,防止过拟合,适用于特征数量多的情况。Lasso回归使用L1正则化,可以产生稀疏模型,进行特征选择。弹性网络结合了L1和L2正则化,平衡两者的优势。这部分需要解释正则化项如何影响损失函数,以及参数调优的重要性。 决策树回归是基于树结构的非参数方法,通过划分特征空间来预测目标值。需要说明如何选择分裂点,比如使用均方误差或平均绝对误差作为分裂标准。实现时可以使用DecisionTreeRegressor。 支持向量回归(SVR)基于支持向量机,通过寻找一个间隔带,使得数据点尽可能落在带内。需要提到核技巧,处理非线性问题,比如使用RBF核。参数如C和epsilon的影响需要解释清楚。 梯度提升回归(如GBRT)是集成方法,通过逐步构建多个弱学习器(通常是决策树),组合它们的预测结果。需要说明Boosting的思想,以及如何通过减少残差来训练后续模型。实现可以用GradientBoostingRegressor。 贝叶斯回归则是基于贝叶斯定理,假设参数服从先验分布,通过数据更新后验分布。与频率主义的线性回归不同,它提供概率化的参数估计,适用于小数据集。需要解释先验、似然和后验的关系。 在实现部分,每个算法都需要对应的代码示例,使用Scikit-learn库。比如线性回归的fit和predict方法,SVR的核函数设置,决策树的max_depth参数等。同时,可能需要提到数据预处理,如标准化,特别是对于正则化模型SVR来说很重要。 用户可能还关心如何选择适合的回归算法,这取决于数据特征、问题复杂度、是否需要可解释性等。比如线性回归适合线性关系,特征多且相关时用岭回归,需要特征选择用Lasso,非线性问题用SVR或梯度提升。 需要注意过拟合和欠拟合的问题,模型评估指标如R²、MSE、MAE等。可能还需要提到交叉验证和网格搜索进行超参数调优。 最后,生成相关问题时要覆盖算法比较、应用场景、优缺点、数学推导、参数调优和实际应用案例,帮助用户深入理解。</think>### 机器学习回归算法详解 #### 一、回归算法分类及核心思想 回归算法用于预测连续值输出,核心是建立输入特征$x$与目标值$y$的映射关系。常见算法包括: 1. **线性回归**:拟合线性关系,$y = \beta_0 + \beta_1x_1 + \dots + \beta_nx_n$,最小化均方误差(MSE) 2. **多项式回归**:扩展为非线性关系,$y = \beta_0 + \beta_1x + \beta_2x^2 + \dots + \beta_kx^k$ 3. **正则化回归**(岭回归/Lasso/弹性网络):通过添加$L1/L2$正则项防止过拟合 4. **支持向量回归(SVR)**:寻找最大间隔超平面,允许$\epsilon$误差 5. **决策树回归**:基于特征划分构建树结构 6. **梯度提升回归(GBRT)**:集成多棵弱决策树逐步优化预测 #### 二、原理与数学表达 1. **线性回归** 目标函数: $$ \min_{\beta} \sum_{i=1}^n (y_i - \beta^T x_i)^2 $$ 闭式解: $$ \hat{\beta} = (X^T X)^{-1}X^T y $$ 2. **岭回归**(L2正则化) $$ \min_{\beta} \left( \sum_{i=1}^n (y_i - \beta^T x_i)^2 + \lambda \sum_{j=1}^m \beta_j^2 \right) $$ 解为: $$ \hat{\beta} = (X^T X + \lambda I)^{-1}X^T y $$ 3. **SVR原理** 优化目标: $$ \min_{w,b} \frac{1}{2}\|w\|^2 + C\sum_{i=1}^n (\xi_i + \xi_i^*) $$ 约束: $$ |y_i - (w^T \phi(x_i) + b)| \leq \epsilon + \xi_i $$ #### 三、实现示例(Python) ```python # 线性回归 from sklearn.linear_model import LinearRegression model = LinearRegression() model.fit(X_train, y_train) # 支持向量回归 from sklearn.svm import SVR svr = SVR(kernel='rbf', C=100, epsilon=0.1) svr.fit(X_scaled, y) # 梯度提升回归 from sklearn.ensemble import GradientBoostingRegressor gbr = GradientBoostingRegressor(n_estimators=100, learning_rate=0.1) gbr.fit(X_train, y_train) ``` #### 四、算法对比与应用场景 | 算法 | 特点 | 适用场景 | |-------|-------|---------| | 线性回归 | 简单、可解释性强 | 线性关系数据,基线模型[^1] | | 岭回归 | 处理多重共线性 | 高维数据 | | SVR | 非线性建模 | 小样本非线性问题 | | GBRT | 高精度预测 | 复杂非线性关系 | #### 五、评估指标 常用指标: $$ R^2 = 1 - \frac{\sum(y_i - \hat{y}_i)^2}{\sum(y_i - \bar{y})^2}, \quad \text{MSE} = \frac{1}{n}\sum(y_i - \hat{y}_i)^2 $$
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

eddyleung_zs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值