我们将介绍现代算法中的两种强大机制:正则化和集合。正如你将看到的,这些机制 "修复 "了旧方法中的一些致命缺陷,这导致了它们的流行。让我们开始吧!
如何挑选ML算法
在本课中,我们将介绍五种用于回归任务的有效机器学习算法。它们各自也有分类对应的算法。
是的,现在只有五种。 我们的目标不是给你一个长长的算法清单,而是解释一些基本概念(如正则化、合集、自动特征选择),教你为什么一些算法往往比其他算法表现更好。
在应用机器学习中,个别算法应该根据问题和数据集的最佳表现来交换使用。因此,我们将专注于直觉和实际利益,而不是数学和理论。
为什么线性回归是有缺陷的
为了介绍一些高级算法的理由,让我们先讨论一下基本的线性回归。线性回归模型是非常常见的,但却有很大的缺陷。

简单的线性回归模型适合一条 "直线"(技术上是一个超平面,取决于特征的数量,但这是同一个想法)。在实践中,它们很少表现良好。我们实际上建议在大多数机器学习问题上跳过它们。
它们的主要优点是容易解释和理解。然而,我们的目标不是研究数据和写一份研究报告。我们的目标是建立一个能够做出准确预测的模型。
在这方面,简单的线性回归有两个主要缺陷。
- 它容易对许多输入特征进行过度拟合。
- 它不能轻易表达非线性关系。
让我们来看看我们如何解决第一个缺陷。
机器学习中的正则化
这是提高模型性能的第一个 "高级 "战术。在许多ML课程中,它被认为是相当 "高级 "的,但它确实很容易理解和实施。
线性模型的第一个缺陷是,它们很容易被许多输入特征过度拟合。

让我们举一个极端的例子来说明为什么会发生这种情况。
- 假设你的训练数据集中有100个观察值。
- 比方说,你也有100个特征。
- 如果你用所有这100个特征拟合一个线性回归模型,你可以完美地 "记忆 "训练集。
每个系数将简单地记忆一个观察值。这个模型在训练数据上会有完美的准确性,但在未见过的数据上表现很差。它没有学到真正的基本模式;它只记住了训练数据中的噪音。
正则化是一种技术,用于通过人为地惩罚模型系数来防止过度拟合。
- 它可以阻止大系数(通过抑制它们)。
- 它还可以完全删除特征(通过将其系数设置为0)。
- 惩罚的 "力度 "是可以调整的。(更多信息见模型训练指南)。
正则化回归算法
有3种常见的正则化线性回归算法。

拉索回归
Lasso,或LASSO,代表最小 绝对 收缩和选择 操作。拉索回归对系数的绝对大小进行惩罚。实际上,这导致了系数可能正好为0。
因此,Lasso提供了自动特征选择,因为它可以完全删除一些特征。记住,惩罚的 "强度 "应该被调整。更强的惩罚会导致更多的 系数被推至零。

岭回归
Ridge指的是危险的葡萄柚吃法。岭回归对系数的平方大小进行惩罚。实际上,这导致了更小的系数,但它并不强迫它们为0。
换句话说,Ridge提供了特征缩减。同样,惩罚的 "力度 "应该被调整。较强的惩罚会导致系数被推到接近0的位置。

弹性网络(Elastic-Net
Elastic-Net是Lasso和Ridge之间的一个折衷方案。弹性网对绝对大小和平方大小进行混合惩罚。这两种惩罚类型的比例应该被调整。整体强度也应该被调整。
哦,如果你想知道,没有 "最佳 "的惩罚类型。这真的取决于数据集和问题。我们建议尝试不同的算法,使用一系列的惩罚强度作为调整过程的一部分。
决策树 Algos
太棒了,我们刚刚看到了3种可以保护线性回归不被过度拟合的算法。但如果你记得,线性回归有两个主要缺陷。
- 它很容易在许多输入特征下过度拟合。
- 它不能轻易表达非线性关系。
我们怎样才能解决第二个缺陷呢?

非线性关系需要一个不同的策略。
为了给非线性关系建模,我们需要摆脱线性模型。我们需要引入一类新的算法,称为决策树。
决策树将数据建模为一棵分层分支的 "树"。它们进行分支,直到达到代表预测的 "叶子"。

由于它们的分支结构,决策树可以很容易地模拟非线性关系。
- 例如,让我们说,对于单一家庭住宅,较大的地段会有较高的价格。
- 然而,让我们说,对于公寓,较小的地段价格较高(即,它是城市/农村的代表)。
- 线性模型很难捕捉到这种相关性的逆转,除非你明确地添加一个交互项(即你可以提前预测到它)。
- 另一方面,决策树可以自然地捕捉这种关系。
不幸的是,决策树也有一个重大缺陷。如果你允许它们无限制地增长,它们可以完全 "记住 "训练数据,仅仅是通过创造越来越多的分支。
因此,单个无约束的决策树很容易被过度拟合。
那么,我们如何才能利用决策树的灵活性,同时防止它们过度拟合训练数据?
树的集合体
合集是一种机器学习方法,用于结合多个独立模型的预测结果。有几种不同的合集方法,但最常见的两种是 "装袋 "和 "提升"。
装袋法试图减少复杂模型的过拟合机会。它并行地训练大量的 "强 "学习者(强学习者是一个相对不受约束的模型)。然后,Bagging将所有的强学习者结合在一起,以 "平滑 "他们的预测。
Boosting试图提高简单模型的预测灵活性。它依次训练大量的 "弱 "学习者(弱学习者是一个受约束的 模型,例如限制每个决策树的最大深度)。序列中的每一个都专注于从前面一个的错误中学习。然后,Boosting将所有的弱学习者组合成一个单一的强学习者。
虽然bagging和boosting都是集合方法,但它们从相反的方向来处理问题。
- 布袋法使用复杂的基础模型,并试图 "平滑 "其预测结果。
- 提升法使用简单的基础模型,并试图 "提升 "它们的总体复杂性。
集合是一个一般的术语,但是当基础模型是决策树时,它们有特殊的名称:随机森林和提升树!

随机森林
随机森林训练大量的 "强 "决策树,并通过装袋将它们的预测结果结合起来。此外,随机森林的 "随机性 "有两个来源。
- 每棵树只允许从随机的特征子集中选择分裂(导致特征选择)。
- 每棵树只在观察值的随机子集上进行训练(这个过程称为重采样)。
在实践中,随机森林往往开箱即用,表现非常好。它们往往能打败许多其他模型,而这些模型需要花费数周时间来开发。它们没有很多复杂的参数需要调整,这使得它们成为完美的"瑞士军刀 "算法,几乎总能得到好的结果。

提升树
提升树训练了一系列 "弱 "的、受限制的决策树,并通过提升将它们的预测结果结合起来。
- 每棵树都被允许有一个最大深度,这个深度应该被调整。
- 序列中的每一棵树都试图纠正之前那棵树的预测错误。
在实践中,提升树往往有最高的性能上限。在经过适当的调整后,它们往往能击败许多其他类型的模型,但它们的调整比随机森林更复杂。
主要启示: 最有效的算法通常提供正则化、自动特征选择、表达非线性关系的能力和/或集合的组合。这些算法包括
- 拉索回归
- 山脊回归
- 弹性网络
- 随机森林
- 提升树
机器学习工作流程中的算法选择步骤就到此结束了。