机器学习的算法选择过程

263 阅读8分钟

我们将介绍现代算法中的两种强大机制:正则化集合。正如你将看到的,这些机制 "修复 "了旧方法中的一些致命缺陷,这导致了它们的流行。让我们开始吧!

如何挑选ML算法

在本课中,我们将介绍五种用于回归任务的有效机器学习算法。它们各自也有分类对应的算法。

是的,现在只有五种。 我们的目标不是给你一个长长的算法清单,而是解释一些基本概念(如正则化、合集、自动特征选择),教你为什么一些算法往往比其他算法表现更好。

在应用机器学习中,个别算法应该根据问题和数据集的最佳表现来交换使用。因此,我们将专注于直觉实际利益,而不是数学和理论。

为什么线性回归是有缺陷的

为了介绍一些高级算法的理由,让我们先讨论一下基本的线性回归。线性回归模型是非常常见的,但却有很大的缺陷。

Linear Regression

简单的线性回归模型适合一条 "直线"(技术上是一个超平面,取决于特征的数量,但这是同一个想法)。在实践中,它们很少表现良好。我们实际上建议在大多数机器学习问题上跳过它们。

它们的主要优点是容易解释和理解。然而,我们的目标不是研究数据和写一份研究报告。我们的目标是建立一个能够做出准确预测的模型。

在这方面,简单的线性回归有两个主要缺陷。

  1. 它容易对许多输入特征进行过度拟合。
  2. 它不能轻易表达非线性关系。

让我们来看看我们如何解决第一个缺陷。

机器学习中的正则化

这是提高模型性能的第一个 "高级 "战术。在许多ML课程中,它被认为是相当 "高级 "的,但它确实很容易理解和实施。

线性模型的第一个缺陷是,它们很容易被许多输入特征过度拟合。

The number of features is too damn high!

让我们举一个极端的例子来说明为什么会发生这种情况。

  • 假设你的训练数据集中有100个观察值。
  • 比方说,你也有100个特征。
  • 如果你用所有这100个特征拟合一个线性回归模型,你可以完美地 "记忆 "训练集。

每个系数将简单地记忆一个观察值。这个模型在训练数据上会有完美的准确性,但在未见过的数据上表现很差。它没有学到真正的基本模式;它只记住了训练数据中的噪音。

正则化是一种技术,用于通过人为地惩罚模型系数来防止过度拟合。

  • 它可以阻止大系数(通过抑制它们)。
  • 它还可以完全删除特征(通过将其系数设置为0)。
  • 惩罚的 "力度 "是可以调整的。(更多信息见模型训练指南)。

正则化回归算法

有3种常见的正则化线性回归算法。

LASSO Regression

拉索回归

Lasso,或LASSO,代表最小 绝对 收缩选择 操作。拉索回归对系数的绝对大小进行惩罚。实际上,这导致了系数可能正好为0。

因此,Lasso提供了自动特征选择,因为它可以完全删除一些特征。记住,惩罚的 "强度 "应该被调整。更强的惩罚会导致更多的 系数被推至零。

Ridge Regression

岭回归

Ridge指的是危险的葡萄柚吃法。岭回归对系数的平方大小进行惩罚。实际上,这导致了更小的系数,但它并不强迫它们为0。

换句话说,Ridge提供了特征缩减。同样,惩罚的 "力度 "应该被调整。较强的惩罚会导致系数被推到接近0的位置。

Elastic Net Regression

弹性网络(Elastic-Net

Elastic-Net是Lasso和Ridge之间的一个折衷方案。弹性网对绝对大小和平方大小进行混合惩罚。这两种惩罚类型的比例应该被调整。整体强度也应该被调整。

哦,如果你想知道,没有 "最佳 "的惩罚类型。这真的取决于数据集和问题。我们建议尝试不同的算法,使用一系列的惩罚强度作为调整过程的一部分。

决策树 Algos

太棒了,我们刚刚看到了3种可以保护线性回归不被过度拟合的算法。但如果你记得,线性回归有两个主要缺陷。

  1. 它很容易在许多输入特征下过度拟合。
  2. 它不能轻易表达非线性关系。

我们怎样才能解决第二个缺陷呢?

Linear Arrows Non-Linear Maze

非线性关系需要一个不同的策略。

为了给非线性关系建模,我们需要摆脱线性模型。我们需要引入一类新的算法,称为决策树

决策树将数据建模为一棵分层分支的 "树"。它们进行分支,直到达到代表预测的 "叶子"。

Decision Tree Algorithm

由于它们的分支结构,决策树可以很容易地模拟非线性关系。

  • 例如,让我们说,对于单一家庭住宅,较大的地段会有较高的价格。
  • 然而,让我们说,对于公寓,较小的地段价格较高(即,它是城市/农村的代表)。
  • 线性模型很难捕捉到这种相关性的逆转,除非你明确地添加一个交互项(即你可以提前预测到它)。
  • 另一方面,决策树可以自然地捕捉这种关系。

不幸的是,决策树也有一个重大缺陷。如果你允许它们无限制地增长,它们可以完全 "记住 "训练数据,仅仅是通过创造越来越多的分支。

因此,单个无约束的决策树很容易被过度拟合。

那么,我们如何才能利用决策树的灵活性,同时防止它们过度拟合训练数据?

树的集合体

合集是一种机器学习方法,用于结合多个独立模型的预测结果。有几种不同的合集方法,但最常见的两种是 "装袋 "和 "提升"。

装袋法试图减少复杂模型的过拟合机会。它并行地训练大量的 "强 "学习者(强学习者是一个相对不受约束的模型)。然后,Bagging将所有的强学习者结合在一起,以 "平滑 "他们的预测。

Boosting试图提高简单模型的预测灵活性。它依次训练大量的 "弱 "学习者(弱学习者是一个受约束的 模型,例如限制每个决策树的最大深度)。序列中的每一个都专注于从前面一个的错误中学习。然后,Boosting将所有的弱学习者组合成一个单一的强学习者。

虽然bagging和boosting都是集合方法,但它们从相反的方向来处理问题。

  • 布袋法使用复杂的基础模型,并试图 "平滑 "其预测结果。
  • 提升法使用简单的基础模型,并试图 "提升 "它们的总体复杂性。

集合是一个一般的术语,但是当基础模型是决策树时,它们有特殊的名称:随机森林和提升树!

Random Forest

随机森林

随机森林训练大量的 "强 "决策树,并通过装袋将它们的预测结果结合起来。此外,随机森林的 "随机性 "有两个来源。

  1. 每棵树只允许从随机的特征子集中选择分裂(导致特征选择)。
  2. 每棵树只在观察值的随机子集上进行训练(这个过程称为重采样)。

在实践中,随机森林往往开箱即用,表现非常好。它们往往能打败许多其他模型,而这些模型需要花费数周时间来开发。它们没有很多复杂的参数需要调整,这使得它们成为完美的"瑞士军刀 "算法,几乎总能得到好的结果。

Boosted Tree

提升树

提升树训练了一系列 "弱 "的、受限制的决策树,并通过提升将它们的预测结果结合起来。

  • 每棵树都被允许有一个最大深度,这个深度应该被调整。
  • 序列中的每一棵树都试图纠正之前那棵树的预测错误。

在实践中,提升树往往有最高的性能上限。在经过适当的调整后,它们往往能击败许多其他类型的模型,但它们的调整比随机森林更复杂。

主要启示: 最有效的算法通常提供正则化、自动特征选择、表达非线性关系的能力和/或集合的组合。这些算法包括

  1. 拉索回归
  2. 山脊回归
  3. 弹性网络
  4. 随机森林
  5. 提升树

机器学习工作流程中的算法选择步骤就到此结束了。