机器学习和数据科学工作远不是简单地将数据交给Python库进行处理和使用处理后的结果。本文将简要介绍一些使用Bootstrapping提高模型鲁棒性的方法。数据科学家需要真正理解数据以及如何处理数据才能实施成功的系统。一个重要的方法是了解模型何时可以从引导中受益。这是集成模型。集成模型的一些示例是AdaBoost和随机梯度提升。为什么要使用集成模型?它们能否帮助提高算法准确性或提高模型稳健性?集成学习是一种行之有效的方法吗?Boosting和Bagging是数据科学家和机器学习工程师必须了解的主题。特别是当你计划参加数据科学/机器学习面试时。本质上,集成学习是“集成”。集成学习使用相同算法的数百或数千个模型来找到正确的分类。集成学习的另一种认知是“盲人摸象”。每个盲人都发现了大象的一个特征,并认为大象是不同的东西。但是,在聚在一起讨论之后,他们可能会发现大象到底长什么样。使用Boosting和Bagging等技术可以提高统计模型的鲁棒性并减少方差。那么现在的问题是,这几个B开头的词(Bootstrapping/Bagging/Boosting)有什么区别呢?Bootstrapping首先我们来谈谈这个非常重要的概念Bootstrapping。很多数据科学家在直接讲解Boosting和Bagging的时候,偶尔会想起Bootstrapping,因为两者都需要Boosting和Bagging。图1在Bootstrapping机器学习中,Bootstrap方法指的是有放回的随机采样,这是一种重采样,可以让模型或算法更好地理解其中存在的偏差、方差和特征。数据采样允许重新采样以合并不同的偏差,然后将其作为一个整体包含在内。如图1所示,这些样本群体中的每一个都有不同的部分并且彼此不同。这会影响数据集的总体均值、标准差和其他描述性指标。反过来,它可以开发更强大的模型。Bootstrapping也适用于容易过拟合的小型数据集。事实上,我们将它推荐给了一家感兴趣的公司,其数据集远非“大数据”。Bootstrapping是这种情况的解决方案,因为使用bootstrapping的算法可以更健壮,并根据所选方法(Boosting或Bagging)处理新数据集。使用Bootstrap的原因是为了测试解决方案的稳定性。使用多个样本数据集测试多个模型可以提高稳健性。也许一个样本数据集的均值比其他数据集大,或者标准差不同。这样,可以识别过度拟合且未使用不同方差数据集进行测试的模型。自举变得越来越普遍的原因之一是计算能力的提高。有比以前更多的重排和重采样。Bagging和Boosting都使用了Bootstrapping,下面会详细介绍。BaggingBagging实际上是指BootstrapAggregator。大多数提到使用Bagging算法的论文或文章都会引用LeoBreiman,他曾经写过一篇论文《Bagging Predictors》(1996)。Leo这样描述Bagging:“Bagging预测器是一种生成多个版本的预测器,然后生成聚合预测器的方法。”Bagging的工作原理是减少仅在训练数据上准确的模型的方差——情况也是如此。称为过拟合。过度拟合是指函数过度拟合数据。通常原因是实际公式太复杂,无法解释每个数据点和异常值。图2.过度拟合另一种容易过度拟合的算法是决策树。使用决策树构建的模型需要非常简单的启发式方法。决策树由一系列按特定顺序排列的if-else语句组成。因此,如果将一个数据集更改为新的数据集,则新的数据集可能与先前的数据集在底层特征上存在一些偏差或差异。该模型不可能是准确的。原因是数据与数据拟合得不是很好(前向声明)。Bagging通过采样和替换数据在数据中创建自己的方差,同时测试多个假设(模型),从而规避了这个问题。通过使用多个样本来减少噪声,这些样本很可能由不同属性的数据组成。直到每个模型提出一个假设。这些模型使用投票进行分类,使用平均进行回归。这里“聚合”和“引导聚合”将发挥作用。每个假设被赋予相同的权重。这是Bagging和Boosting方法之间的区别之一。图3.Bagging基本上同时运行所有这些模型,然后投票选出最准确的假设。这有助于减少方差,即减少过度拟合。BoostingBoosting指的是一组算法,使用加权平均让弱的学习者变得更强。与bagging不同,每个模型都是独立运行的,输出结果是在不偏向任何模型的情况下聚合的。提升是一种“团队努力”。每个模型决定下一个模型要关注的特征。Boosting还需要Bootstrapping。但是,这里还有一个区别。与bagging不同,boosting对每个数据样本进行加权。这意味着某些样本比其他样本运行得更频繁。图4.Boosting当Boosting在模型上运行时,它会跟踪哪些数据样本成功,哪些不成功。输出错误分类最多的数据集被赋予更高的权重。也就是说,数据更复杂,需要更多迭代才能正确训练模型。在实际分类阶段,Boosting处理模型的方式也有所不同。提升跟踪模型错误率,因为更好的模型获得更好的权重。这样,当发生“投票”时,结果更好的模型更有可能最终主导输出。总结Boosting和Bagging可以有效降低方差。集成方法通常优于单个模型。这就是为什么这么多Kaggle获胜者使用集成方法的原因。然而,它们并不适用于所有问题,它们各有缺陷。Bagging可以在模型过拟合时有效降低方差,但Boosting可能是两者中更好的选择。Boosting更容易导致性能问题,但它在模型欠拟合时也能有效减少偏差。这需要经验和专业知识!让第一个模型成功运行可能更容易,但分析算法及其选择的所有特征很重要。例如,如果一棵决策树有某些叶子集,这是什么原因?如果你不能用其他数据点或图表来支持它,它可能不应该被实施。这不仅仅是在不同的数据集上尝试AdaBoost或随机森林。我们需要根据算法的倾向和支持度来决定最终使用的算法。
