类别

版本

叠加(RapidMiner Studio Core)

剧情简介

这个运算符是Stacking的一种实现,用于组合模型,而不是在模型中进行选择,因此通常会获得比任何一个训练过的模型更好的性能。

描述

堆叠泛化(或堆叠)是一种组合多个模型的方法,它引入了元学习器的概念。与装袋和提升不同,堆叠可以(通常是)用于组合不同类型的模型。步骤如下:将训练集分割为两个不相交的集合。对几个基础学习者进行第一部分的训练。第二部分测试基础学习者。使用步骤3中的预测作为输入,正确的反应作为输出,训练更高水平的学习者。请注意,步骤1到步骤3与交叉验证相同,但不是使用赢者通吃的方法,而是将基础学习器组合在一起,可能是非线性的。

科学方法背后的关键先验信念是,人们可以通过将一组模型与未用于创建任何模型的数据进行比较,从而在一组模型中做出判断。这种先验信念用于交叉验证技术,在基于单个数据集的一组模型中进行选择。这是通过将数据集划分为训练数据集和测试数据集来实现的;在训练数据上对模型进行训练;然后从这些训练过的模型中选择一个在测试数据上表现最好的。

堆叠进一步利用了这种先验信念。它通过使用测试数据的性能来组合模型,而不是在其中进行选择,从而通常获得比任何一个训练过的模型更好的性能。它已经成功地用于监督学习任务(如回归)和非监督学习(如密度估计)。

Stacking运算符是一个嵌套运算符。它有两个子流程:基础学习器子流程和堆叠模型学习器子流程。要应用此操作符,您需要对子流程有基本的了解。为了对子流程有基本的了解,请学习Subprocess操作符的文档。

堆叠是一种集成方法,因此本文对集成理论进行了概述。集成方法使用多个模型来获得比任何组成模型更好的预测性能。换句话说,集成是一种将许多弱学习器结合起来以产生一个强学习器的技术。评估集成的预测通常比评估单个模型的预测需要更多的计算,因此集成可以被认为是一种通过执行大量额外计算来补偿糟糕的学习算法的方法。

集成本身就是一种监督学习算法,因为它可以被训练,然后用于做出预测。因此,训练过的集合只代表一个假设。然而,这个假设不一定包含在构建它的模型的假设空间中。因此,集成可以在它们所能表示的函数中显示出更大的灵活性。理论上,这种灵活性可以使它们比单一模型更能过度拟合训练数据,但在实践中,一些集成技术(尤其是bagging)倾向于减少与训练数据过度拟合相关的问题。

从经验来看,当模型之间存在显著的多样性时,集成往往会产生更好的结果。因此,许多集成方法寻求促进它们所组合的模型之间的多样性。虽然可能不直观,但更随机的算法(如随机决策树)可以用来产生比非常深思熟虑的算法(如减少熵的决策树)更强大的集成。然而,使用各种强大的学习算法已经被证明比使用试图简化模型以促进多样性的技术更有效。

输入

  • 训练集(数据表)

    这个输入端口需要一个ExampleSet。它是所附示例流程中检索操作符的输出。其他运算符的输出也可以用作输入。

输出

  • 模型(叠加模型)

    堆叠模型从这个输出端口交付,可以应用于不可见的数据集。

参数

  • keep_all_attributes使用输入示例集的所有属性来训练堆叠模型。范围:布尔
  • keep_confidences使用基础学习器生成的置信度来训练堆叠模型。范围:布尔

教程的过程

堆叠简介

“Sonar”数据集使用Retrieve操作符加载。Split Validation操作符应用于它,用于训练和测试模型。堆叠操作符应用于分割验证操作符的训练子过程。堆叠操作符的Base Learner子进程中应用了三个学习器。这些学习器是:决策树,K-NN和线性回归算子。朴素贝叶斯算子应用于堆叠算子的堆叠模型学习子进程。朴素贝叶斯学习器被用作堆叠学习器,它使用前三个学习器的预测进行组合预测。Apply Model操作符用于Split Validation操作符的测试子流程,用于应用Stacking操作符生成的模型。结果标记的exampleeset被Performance操作符用于测量模型的性能。堆叠模型及其性能向量连接到输出,可以在Results Workspace中看到。