Skip to content

Latest commit

 

History

History
152 lines (84 loc) · 8.27 KB

boosting-and-adaboost-for-machine-learning.md

File metadata and controls

152 lines (84 loc) · 8.27 KB

机器学习的提升和 AdaBoost

原文: https://machinelearningmastery.com/boosting-and-adaboost-for-machine-learning/

Boosting 是一种集合技术,试图从许多弱分类器中创建一个强分类器。

在这篇文章中,您将发现用于机器学习的 AdaBoost Ensemble 方法。阅读这篇文章后,你会知道:

  • 增强集合方法是什么以及它的工作原理。
  • 如何学习使用 AdaBoost 算法提升决策树。
  • 如何使用学习过的 AdaBoost 模型做出预测。
  • 如何最好地准备数据以与 AdaBoost 算法一起使用

这篇文章是为开发人员编写的,并没有统计或数学方面的背景。该文章重点介绍了算法的工作原理以及如何将其用于预测性建模问题。如果您有任何疑问,请发表评论,我会尽力回答。

让我们开始吧。

Boosting and AdaBoost for Machine Learning

用于机器学习的提升和 AdaBoost 照片由 KatieThebeau 拍摄,保留一些权利。

提升集合方法

Boosting 是一种通用的集合方法,可以从许多弱分类器中创建一个强分类器。

这是通过从训练数据构建模型,然后创建第二个模型来尝试从第一个模型中纠正错误来完成的。添加模型直到完美预测训练集或添加最大数量的模型。

AdaBoost 是第一个为二分类开发的真正成功的增强算法。这是理解助力的最佳起点。

现代助推方法建立在 AdaBoost 上,最着名的是随机梯度增强机

获取免费算法思维导图

Machine Learning Algorithms Mind Map

方便的机器学习算法思维导图的样本。

我已经创建了一个由类型组织的 60 多种算法的方便思维导图。

下载,打印并使用它。

从数据中学习 AdaBoost 模型

AdaBoost 最适合用于提高决策树在二分类问题上的表现。

AdaBoost 最初被 Freund 和 Schapire 技术的作者称为 AdaBoost.M1。最近,它可能被称为离散 AdaBoost,因为它用于分类而不是回归。

AdaBoost 可用于提高任何机器学习算法的表现。它最适合弱学习器使用。这些模型在分类问题上实现了高于随机机会的准确率。

与 AdaBoost 一起使用的最适合且因此最常见的算法是具有一个级别的决策树。因为这些树很短,只包含一个分类决策,所以它们通常被称为决策树桩。

训练数据集中的每个实例都是加权的。初始权重设置为:

重量(xi)= 1 / n

其中 xi 是第 i 个训练实例,n 是训练实例的数量。

如何训练一个模型

使用加权样本在训练数据上准备弱分类器(决策残余)。仅支持二进制(两类)分类问题,因此每个决策树桩对一个输入变量做出一个决策,并为第一个或第二个类值输出+1.0 或-1.0 值。

针对训练的模型计算错误分类率。传统上,这计算如下:

错误=(正确 - N)/ N.

如果错误是错误分类率,则正确的是模型正确预测的训练实例的数量,N 是训练实例的总数。例如,如果模型正确预测了 100 个训练实例中的 78 个,则错误或错误分类率将为(78-100)/ 100 或 0.22。

这被修改为使用训练实例的权重:

error = sum(w(i)* terror(i))/ sum(w)

这是错误分类率的加权和,其中 w 是训练实例 i 的权重,而恐怖是训练实例 i 的预测误差,如果错误分类则为 1,如果正确分类则为 0。

例如,如果我们有 3 个训练实例,权重为 0.01,0.5 和 0.2。预测值为-1,-1 和-1,实例中的实际输出变量为-1,1 和-1,然后误差为 0,1 和 0.误分类率计算如下:

误差=(0.01 * 0 + 0.5 * 1 + 0.2 * 0)/(0.01 + 0.5 + 0.2)

要么

错误= 0.704

为训练模型计算阶段值,该阶段值为模型所做的任何预测提供加权。训练模型的阶段值计算如下:

stage = ln((1-error)/ error)

其中 stage 是用于对模型进行加权预测的阶段值,ln()是自然对数,而错误是模型的错误分类错误。阶段权重的影响是更准确的模型对最终预测具有更大的权重或贡献。

更新训练权重,为错误预测的实例提供更多权重,对正确预测的实例权重更小。

例如,使用以下内容更新一个训练实例(w)的权重:

w = w * exp(阶段*恐怖)

其中 w 是特定训练实例的权重,exp()是数字常数 e 或欧拉数提升到幂,阶段是弱分类器的误分类率,恐怖是弱分类器预测输出变量的误差训练实例,评估为:

恐怖= 0 如果(y == p),否则为 1

其中 y 是训练实例的输出变量,p 是来自弱学习器的预测。

如果训练实例被正确分类并且如果弱学习器错误地分类实例则使重量稍大,则这具有不改变重量的效果。

AdaBoost Ensemble

按顺序添加弱模型,使用加权训练数据进行训练。

该过程一直持续到创建了预先设定数量的弱学习器(用户参数)或者不能对训练数据集进行进一步改进。

完成后,您将留下一群弱势学习器,每个学习器都有一个舞台值。

使用 AdaBoost 做出预测

通过计算弱分类器的加权平均值来做出预测。

对于新的输入实例,每个弱学习器计算预测值为+1.0 或-1.0。预测值由每个弱学习器阶段值加权。集合模型的预测被视为加权预测的总和。如果总和为正,则预测第一类,如果为负,则预测第二类。

例如,5 个弱分类器可以预测值 1.0,1.0,-1.0,1.0,-1.0。从大多数投票来看,模型看起来预测值为 1.0 或第一类。这些相同的 5 个弱分类器可以分别具有阶段值 0.2,0.5,0.8,0.2 和 0.9。计算这些预测的加权和导致输出为-0.8,这将是-1.0 或第二类的集合预测。

AdaBoost 的数据准备

本节列出了为 AdaBoost 准备最佳数据的一些启发式方法。

  • 质量数据:由于整体方法继续尝试纠正训练数据中的错误分类,因此您需要注意训练数据是高质量的。
  • 异常值:异常值会迫使合奏团在兔子洞中努力工作以纠正不切实际的情况。这些可以从训练数据集中删除。
  • 噪声数据:噪声数据,特别是输出变量中的噪声可能会有问题。如果可能,尝试从训练数据集中隔离和清除这些内容。

进一步阅读

以下是一些从机器学习角度描述 AdaBoost 的机器学习文本。

下面是一些关于该方法的开创性和良好的概述研究文章,如果您希望深入研究该方法的理论基础,可能会有用:

摘要

在这篇文章中,您发现了用于机器学习的 Boosting 集合方法。你了解到:

  • 提升以及它如何成为一种通用技术,不断增加弱学习器的正确分类错误。
  • AdaBoost 是第一个成功的二分类问题的提升算法。
  • 通过加权训练实例和弱学习器自己来学习 AdaBoost 模型。
  • 通过加权来自弱学习器的预测来预测 AdaBoost。
  • 在哪里寻找有关 AdaBoost 算法的更多理论背景。

如果您对此帖子或 Boosting 或 AdaBoost 算法有任何疑问,请在评论中提出,我会尽力回答。