[翻译] 支持向量回归SVR的介绍

X. Introduction

本文先翻译一下:
http://www.saedsayad.com/support_vector_machine_reg.htm

Support Vector Machine can also be used as a regression method, maintaining all the main features that characterize the algorithm (maximal margin).
支持向量机SVM也可以用作回归方法SVR,保留了SVM算法的所有主要思想(也就是最大化间隔)。

The Support Vector Regression (SVR) uses the same principles as the SVM for classification, with only a few minor differences.
支持向量回归 (SVR) 使用与 SVM 相同的分类原理,只有一点儿细微的差别。

First of all, because output is a real number it becomes very difficult to predict the information at hand, which has infinite possibilities.
首先,由于回归问题的输出是实数,因此很难十分精确的预测,因为这具有无限多的可能性。

In the case of regression, a margin of tolerance (epsilon) is set in approximation to the SVM which would have already requested from the problem.
在回归的情况下,间隔的容差 (epsilon) 设置为其实可以看做一个SVM的求解。(我也不知道该怎么翻译)

But besides this fact, there is also a more complicated reason, the algorithm is more complicated therefore to be taken in consideration.
但除了这个事实之外,还有一个更复杂的原因,算法更复杂。(我也不知道该怎么翻译)

However, the main idea is always the same: to minimize error, individualizing the hyperplane which maximizes the margin, keeping in mind that part of the error is tolerated.
但是,主要思想始终是相同的:最小化错误,找到那个能最大化间隔的超平面,记住部分“错误”是可以容忍的。

以上几句话,就是说,没什么感觉对吧,我也是。不用纠结了,我换一篇博客看看,这篇还不错,建议直接看原文

An Introduction to Support Vector Regression (SVR)

https://towardsdatascience.com/an-introduction-to-support-vector-regression-svr-a3ebc1672c2

In this article, I will walk through the usefulness of SVR compared to other regression models, do a deep-dive into the math behind the algorithm, and provide an example using the Boston Housing Price dataset.
老哥带你深入了解SVR数学原理,并给一个波士顿房价的例子

1. 简单回归

大部分回归模型,目标是最小化均方误差,用 Ordinary Least Squares(OLS) [线性最小二乘?] 举个例子,这是目标函数:
min ⁡ ∑ i = 1 n ( y i − w i x i ) 2 \min \sum_{i=1}^{n} (y_i - w_i x_i) ^ 2 mini=1n(yiwixi)2

在这里插入图片描述
上图是波士顿房价预测的最小二乘结果

Lasso, Ridge, 与 ElasticNet等等都是这个简单等式的拓展而已,就是加一个额外的惩罚项,用来降低复杂度或者降低最终模型的特征数量。无论如何,目标都是降低测试集的错误率。


附:几个正则的公式

Lasso:使用L1-norm正则
J ( θ ) = 1 2 ∑ i m ( y ( i ) − θ T x ( i ) ) 2 + λ ∑ j n ∣ θ j ∣ J(\theta)=\frac{1}{2} \sum_{i}^{m}\left(y^{(i)}-\theta^{T} x^{(i)}\right)^{2}+\lambda \sum_{j}^{n}\left|\theta_{j}\right| J(θ)=21im(y(i)θTx(i))2+λjnθj

Ridge:使用L2-norm正则
J ( θ ) = 1 2 ∑ i m ( y ( i ) − θ T x ( i ) ) 2 + λ ∑ j n θ j 2 J(\theta)=\frac{1}{2} \sum_{i}^{m}\left(y^{(i)}-\theta^{T} x^{(i)}\right)^{2}+\lambda \sum_{j}^{n} \theta_{j}^{2} J(θ)=21im(y(i)θTx(i))2+λjnθj2

ElasticNet:结合l1-norm、l2-norm进行正则
J ( θ ) = 1 2 ∑ i m ( y ( i ) − θ T x ( i ) ) 2 + λ ( ρ ∑ j n ∣ θ j ∣ + ( 1 − ρ ) ∑ j n θ j 2 ) J(\theta)=\frac{1}{2} \sum_{i}^{m}\left(y^{(i)}-\theta^{T} x^{(i)}\right)^{2}+\lambda\left(\rho \sum_{j}^{n}\left|\theta_{j}\right|+(1-\rho) \sum_{j}^{n} \theta_{j}^{2}\right) J(θ)=21im(y(i)θTx(i))2+λ(ρjnθj+(1ρ)jnθj2)


然而, 如果我们不在乎我们的错误具体有多少,只要它们在可接受的范围内,我们的模型该怎么设置?

以房价为例。 如果我们对预测在一定的金额之内(比如 5,000 美元)的误差不在乎,我们该怎么修改模型呢? 然后,只要误差在该范围内,我们就可以给我们的模型一些灵活的设置来查找预测值。

2. 现在开始说SVR

SVR给了我们这个灵活的设置来定义模型中多大的误差是可接受的,同时我们将得到一条曲线(或者说是一条高维超平面)去拟合数据

与 OLS 相比,SVR 的目标函数是最小化系数——更具体地说,是系数向量的 l2 范数——而不是平方误差。 关于为啥目标函数是这个,可以回看SVM的资料

相反,误差项约束中处理,我们将绝对误差设置为小于或等于指定的边距,称为最大误差, ϵ \epsilon ϵ(epsilon)。

我们可以调整 epsilon 以获得模型所需的精度。

我们新的目标函数和约束如下:

目标函数:
min ⁡ 1 2 ∥ w ∥ 2 \min \frac{1}{2}\|w\|^{2} min21w2

约束:
∣ y i − w i x i ∣ ≤ ε \left|y_{i}-w_{i} x_{i}\right| \leq \varepsilon yiwixiε

图例:
在这里插入图片描述

让我们在数据集上尝试简单的 SVR。下图显示了已经训练过的 SVR 模型在波士顿房价数据上的结果。 红线代表最佳拟合线,黑线代表误差范围 ε,我们将其设置为 5(5,000 美元)。

在这里插入图片描述

您可能很快意识到该算法不适用于所有数据点。该算法尽可能地解决了目标函数,但一些点仍然落在margin之外。 因此,我们需要考虑数据点的误差大于 ϵ \epsilon ϵ的可能性。 类似SVM中的松弛变量,我们可以用来松弛变量做到这一点。

3. 来给我们的模型添加一些松弛

松弛变量的想法很简单:允许任何变量都可以落在margin之外(由 ϵ \epsilon ϵ指定),我们可以将其与边距的偏差表示为 ξ \xi ξ

尽管我们允许这些松弛存在,允许他们在 ϵ \epsilon ϵ之外,但是我们仍就希望减少他们。因此,我们需要将松弛变量也添加到目标函数中

则目标函数:
min ⁡ 1 2 ∥ w ∥ 2 + C ∑ i = 1 n ∣ ξ i ∣ \min \frac{1}{2} \| w \|^2 + C\sum_{i=1}^n | \xi_i | min21w2+Ci=1nξi

约束:
∣ y i − w i x i ∣ ≤ ϵ + ∣ ξ i ∣ |y_i - w_i x_i | \le \epsilon + |\xi_i| yiwixiϵ+ξi

松弛SVR的图例
在这里插入图片描述
我们现在有一个额外的超参数 C,我们可以对其进行调整。 随着 C 的增加,我们对 ε 之外的点的容忍度也会增加。 当 C 接近 0 时,容差接近 0,等式坍缩为简化的(尽管有时不可行)的。

让我们设置 C=1.0 并重新训练上面的模型。 结果绘制如下:

在这里插入图片描述
ϵ = 5 , C = 1.0 \epsilon=5, C=1.0 ϵ=5,C=1.0时,SVR的结果图

4. 找到 C 的最佳值

上述 soft 模型似乎更适合数据。我们可以更进一步,在参数 C 上进行网格搜索以获得更好的解决方案。让我们定义一个评分指标% within Epsilon

该指标衡量我们的测试集中有多少数据点落在我们的误差范围内。

我们还可以查看平均绝对误差 (MAE) 如何随 C 变化。

下面是网格搜索结果的图,x 轴上为 C 值,% within Epsilon值在左,MAE 值在右。

在这里插入图片描述

正如我们所看到的,MAE 通常随着 C 的增加而减小。 但是,指标% within Epsilon我们需要寻找最大值。 由于我们这个模型的最初目标是在我们的误差范围内(5,000 美元)最大化预测,我们希望找到% within Epsilon最大时的 C 值。 因此,C=6.13。

让我们用最终的超参数 ϵ \epsilon ϵ=5, C=6.13 构建最后一个模型。

在这里插入图片描述
ϵ \epsilon ϵ=5, C=6.13 时波士顿房价的 SVR 预测图

上图显示,正如预期的那样,该模型再次有了提升。

结论

SVR 是一种强大的算法,它允许我们选择对错误的容忍度,(通过修改 ϵ \epsilon ϵ 以及 松弛)。

本文的代码在这里:
https://github.com/DrRyanHuang/SVR

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值