作者 | 台运鹏
几乎每个机器学习从业者都知道回归,其中一些人可能认为这没什么大不了的,只是从参数之间的切 换罢了。本文将阐明每种回归算法的细节,以及确切的区别。包括 :
OLS
Weighted Least Squares
Lasso
Ridge
Polynomial Regression
Logistic regression
Support Vector Regression
Elastic Net
Bayesian Regression
RANSAC
Theil Sen
Huber Regression
Decision Tree Regression
1. 介绍
我们的数据: , 我们打算从我们的数据集中训练一个模型,并 在未知的测试集中测试它。算法性能良好的标准是错误低(从预测值到实际值的距离)。当涉及回归任务 时,我们第一时间就会想到线性回归。
这个模型是线性的并且易于实现(图 1)。 被叫做斜率并且 被叫做截距。 解释了当 改变的时 候 改变的程度。 意味着随机错误(白色噪音),一般说来都会被省略。
2. OLS
在机器学习中,我们经常通过优化目标函数来找出最好的模型。OLS(Ordinary Least Squares) 充当 了一个很有效果的损失函数只要模型满足六个 OLS 的必要假设。那么它就能通过优化如下的函数来找到 具有最小方差的无偏差模型。
2.1 首要的假设
• 线性
换句话说,只有直线是可以的。如果 和 之间的关系是非线性的,比如 ,那么整个模型 就会烂掉。对付这种情况一般采用特征转换。 和 之间的关系会永远被改变如果采用这种方法。因此我们必须把 和 之间的 correlation 纳入考虑范围。我们可以通过计算 (决策系数)来 判断 correlation. 代表着我们能从 预测出 的能力。 的那一列,括号里是原来未经改变的 值(表 1),对于 也一样。注意我用 来生成了 10000 个随机点。 代表的是噪音并且它的范围是从 0 到 1。 遵循随机均匀分布。如果要更进一步实施特征转换, 多项式回归是一个不错的选择。
图1. 普通回归模型
表1. 改变结果
如表 1 所示,应用特征变换时
多项式回归用多项式替换原始的
如果特征维度是 2 维
-
-
图2. 可视化改变结果
-
• 常量误差方差这意味着残差是均匀分布的,在统计上称为无异方差当我们应用模型时,通过观察
我将 X2 house age 设为
上面第2个式子表示标准正态分布,
在弄清楚异方差性之后,我们不知不觉会想到一个问题,即异方差如何影响我们的模型以及如何对 其进行改进。最常见的方法是尝试特征转换,例如 Log。如图 4 所示,它可以在某种程度上使我们 的残差更加稳定。它始终是尝试的一种选择,但不是解决问题的有效方法。
Weighted Least Squares 的性能比 OLS 好得多。相对而言,当
注意,我为前 20 个权重选择了不同的值,其他权重值始终为 1。不同的权重等同于噪声的异常分 布。如表 2 所示,模型仍为无偏见的,也就是说,截距始终为正确的。但是,斜率的标准偏差会急 剧变化。因此,我们无法使用它来得出推论并检验关于斜率的假设。
如图 5 所示,图(a)表示权重 =1 时 OLS 是 MLS 的特例,而图(b)和图(c)表示权重变化时, 截距几乎保持不变。
图3. 正态与非正态
表2. 斜率和截距
而且,我们可以应用 Box Cox 特征转换,它可以使数据更接近正态分布。可以从这里下载数据:https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-white.csv。我选择 total sulfur dioxide 作为 X,quality 作为 y. 因此,它可以减轻异方差(图 6)。请注意,并 非总是如此一个很好的解决方案。但是我们可以在 WLS 之前尝试使用它们。有时候,情况可能更 糟(图 7)。
• 错误独立分布(无自相关)。例如,您要预测股票市场中的市场份额。但错误是相关的,而它们本 应为
表3. Durbin Watson Test
自相关会影响标准差,但不太可能影响模型的系数和截距。
有两种常见的解决方法。第一种方法是添加被忽律的变量。例如,您想按时间预测股票表现。无疑, 该模型具有很高的自相关性。但是,我们可以添加 S & P 500。希望它可以减轻自相关。第二种方 法是改变模型函数。您可以将线性模型转换为平方模型。另外,也别忘了多项式回归。
无多重共线性。如果自变量彼此相关,则数据中存在多重共线性。我们可以使用方差膨胀因子(VIF) 进行检测(
图4. Log 和残差之间的关系
我们回归模型的目标是通过找到合适的系数来找出自变量(
• 无外生性。如果我们选择的
3. Lasso Regression
3.1 Background
在机器学习中,我们采用我们的模型通过对大量数据进行训练来预测值。但是,对过多数据进行训练 会产生一个副产品,即机器可能会记住所有训练数据。当涉及到新的测试数据时,我们的机器无法对其进 行正确的估算,这称为过拟合。实际上,我们不知道到底需要多少数据。如果缩减数据量,则可能会导致 textbf 欠拟合。因此,我们必须更改模型。
3.2 稀疏方法
在这里,我们使用均方误差。最初,我们需要使模型的误差尽可能小,这可能会导致复杂的模型(太多系数)。通常,如果我们的模型是太复杂了,它的泛化能力很低。为了解决这个问题,出现了正则化。
3.3 震荡
梯度下降在使目标函数最小化中起着关键作用。在优化过程中,L1 总是减去常数。因此,当数据值 很小时,L1 尤为重要。L1 执行特征选择,不稳定并可能导致震荡。
图5. 中间那条显示 OLS 和 MLS 拟合情况数据,其他是两个算法的预测值范围
4. Ridge Regression
4.1 背景
尽管 Lasso 能够处理过拟合,但它缺乏稳定性。因此,Ridge 是 Lasso 的替代方案。
4.2 稳定性
为什么 Ridge 比 Lasso 更稳定?例如,通过最小二乘法得到模型
4.3 更好的选择
同样,它使用梯度下降。但是 Lasso 和 Ridge 之间的区别是 Ridge 不是减去常数而是系数向量。假 设我们在一座山顶上,Lasso 所做的只是往前挪了一小步,而 Ridge 就看哪个方向比较陡,就直接迈出一 大步,因此,Ridge 比 Lasso 更快。当值很大时,Ridge 应该是比 Lasso 更好的选择。总而言之,从稳定 性和速度的角度来看,Ridge 比 Lasso 来得好,如图 8。
图6. Box Cox 改变可能有帮助
5. Elastic Net Regression
Elastic Net 是 Ridge 回归和 Lasso 回归之间的中间地带。它将 Lasso 的损失函数与 Ridge 的损失函数混合在一起。它的参数
6. Robust Regression
6.1 Background
数据并不总是很好,可能包括一些异常值。因为机器不知道存在异常值,所以它仍然给予它们同样的 关注。因此,异常值可能会破坏模型。这就是 Robust Regression 被提出的原因。
6.2 RANSAC
图7. Box Cox 改变可能更糟糕
随机抽样一致是鲁棒回归模型之一。通过不断重新估计,RANSC 使用共识集(Inliers Set)的所有 成员来提高准确性。
6.3 Theil-Sen Regression
这是一种无参数方法,这意味着它无需对数据的分布进行任何假设。它还具有一个临界情况(通常为 29.3 % ),表明它只能容忍异常值分布的最大值为 29.3 %。
6.4 Huber Regression
当值很大时,Huber 会将其损失函数转换为线性损失,以最大程度地减少对模型的影响。
7. Bayesian Regression
7.1 Bayesian Theorem
例如,我们将采用一个模型来区分电子邮件是正常的还是垃圾邮件。因此,我们的模型所面对的是它必须对未知电子邮件进行预测。我们的数据包含 100 封电子邮件,其中 10% 是垃圾邮件。因此,垃圾邮 件的百分比为 10 。但这绝对不是全部。在贝叶斯中,它称为前验概率,这代表着分布的基础假设,同时 这也是贝叶斯开始的地方。在算法开始时,贝叶斯是有偏见的,所以该模型很容易受到一开始的数据分布的影响。例如,如果我们只有 10 封普通电子邮件,我们未来是不可能不收到一封垃圾邮件的。换句话 说,如果我们的数据量很小,就不太建议实施贝叶斯算法。但是,不断进行数据训练,我们最终应该会获 得理想的结果。下面的等式,P(B)是归一化项,P(A)是前验概率。
7.2 MLE
一般来说,我们的目标是找出真正的数据分布,这几乎是不可能的。因此,我们需要一个与问题域的 数据分布更接近的数据分布。MLE(最大似然法)。它表示我们希望最大化从假设分布采样出真正分布在数据集中的数据的概率。(图 9)
图8. Lasso VS Ridge
7.3 MAP
通常,我们可以使用 MAP 最大化后验概率)替换 MLE。它基于贝叶斯定理。MAP 是 贝叶斯回归 (下式)的基础。贝叶斯回归不像其他算法,它不会生成单个值,而是生成可能的分布范围。在大多数 情况下,MLE 和 MAP 可能会得到相同的结果。但是,当 MAP 的假设为与 MLE 不同,它们无法获得相 同的结果。当先验概率服从均匀分布时,它们可以获得相同结果。从另一个角度来看,如果我们对数据 有精确的理解,则贝叶斯回归为一个很好的选择,因为它可以作为先验概率,或者我们可以像 Weighted Least Errors 一样给每个不同的选择不同的权重。有趣的是,前验分布可以看作是正则化或模型的偏见, 因为前验分布可以是改为 L2 范数,这种模型也被称为贝叶斯岭回归。下式表示给定模型 m,输 出 y 的概率。以及
8. Support Vector Regression
8.1 最大化边际
支持向量机最初是为分类问题发明的。与其他算法不同,SVM 不仅需要正确分类所有数据,还需要 数据到超平面的距离最大。如果我们的
图9. 贝叶斯回归
8.2 对偶问题
通常,我们可以通过拉格朗日乘子法
然后我们将 w,b 替换为确切的值。当
我们可以将其用于目标函数。注意,对偶问题与原问题所求相反。
8.3 核技巧
在大多数情况下,数据在 2D 中是不可分离的。在多项式回归中,我们将数据映射到高维。类似地, 核函数可以用来解决这种问题,这里我们用
但是在大多数情况下,映射后的维度太大,以致于我们无法计算
表4. 常见核函数
我们打算最大化边界,并尽可能减少错误。最初,我们采用 0-1 损失。
然后我们的目标函数如下所示。C 是一个常数,描述了损失函数的重要性。如果 C 趋于正无穷大,则 意味着不允许发生训练数据上的错误。但是,问题是我们无法用梯度下降解决
在这里,我们采用 Hinge Loss 来代替。
另外,Hard Margin 总是很烂。Soft Margin允许少量错误发生。
8.4 Regularization
简而言之,
8.5 SVR
在常见的回归任务中,如果预测完全等于标签,则损失等于 0。有趣的是,支持向量回归可以容忍
9. Logistic Regression
9.1 Sigmoid 函数
如果输入为正,则输出大于 0.5; 如果输入为负,则输出小于 0.5。Sigmoid 函数能够将所有数据映射 到 (0, 1)。我们可以将输出视为概率。请注意,逻辑回归不用于回归任务,而是用于分类问题。其输出表 示每个可能的标签可能性。在二元逻辑回归中,
9.2 损失函数
图10. SVR
这里我们将对数损失作为损失函数。我们可以得出一个结论:如果我们的标签为 1,则我们的预测趋 向于更趋近于 1,损失很可能减少,而我们的预测趋于于趋近于 0,则损失将急剧增加。
但是,如果损失函数看起来像这样,就不可能在其上实现梯度下降。注意这里
10. 结论
10.1 了解你的模型
许多模型不是即插即用的。它有一些约束,只有满足他们的假设,它们才能表现良好。因此,了解模型背后的内容比盲目地应用模型更重要。此外,当面临难题时,您应该对可以尝试的算法有一个完整的了 解。
10.2 数据第一位
机器学习问题不是获取数据和应用模型。给模型提供什么样的数据对模型的最佳性能起关键作用。如果对模型了解得很少,就无法理解什么样的数据正是您的模型需求,您无法进一步预处理数据。最终,您 将永远不会让模型的性能产生任何提升。这是浪费时间。
推荐阅读
(点击标题可跳转阅读)
重磅!
AI有道年度技术文章电子版PDF来啦!
扫描下方二维码,添加 AI有道小助手微信,可申请入群,并获得2020完整技术文章合集PDF(一定要备注:入群 + 地点 + 学校/公司。例如:入群+上海+复旦。
长按扫码,申请入群
(添加人数较多,请耐心等待)
感谢你的分享,点赞,在看三连