贝叶斯提高(RapidMiner工作室核心)
剧情简介
该算子是基于贝叶斯定理的boost算子。它实现了一个元算法,可以与许多其他学习算法一起使用,以提高它们的性能。描述
贝叶斯提升算子是一个嵌套算子,即它有一个子过程。子流程必须有一个学习者,即一个期望ExampleSet并生成模型的操作符。该算子尝试使用其子过程中提供的学习器来构建更好的模型。为了应用这个操作符,您需要对子流程有一个基本的了解。为了对子流程有基本的了解,请研究子流程操作符的文档。
该操作符为布尔目标属性训练分类器集合。在每一次迭代中,训练集都被重新加权,因此之前发现的模式和其他类型的先验知识都被“抽样剔除”。一个内部分类器(通常是一个规则或决策树归纳算法)被依次应用几次,并且这些模型被组合成一个单独的全局模型。要训练的模型的最大数量由迭代参数。
如果重新调节标签先验参数被设置为true,那么ExampleSet将被重新加权,这样所有的类都是相同的概率(或频率)。对于两类问题,这将拟合模型以最大化加权相对精度的问题变成更常见的分类器归纳任务。应用规则归纳算法作为内部学习者,可以进行子群发现。对于具有类倾斜的数据集,如果使用像decision stump这样非常弱的学习者,也建议使用此选项。如果重新调节标签先验参数未设置,则运算符根据概率估计执行提升。
如果允许边缘倾斜参数未设置,则根据公共基础模型预测定义的每个子集的支持在迭代过程中不会发生变化。类似地,类先验不改变。这是Scholz/2005b在子群发现上下文中最初描述的过程。设置允许边缘倾斜选项设置为true将导致一个过程,它将改变子集的边际权重/概率(如果这在提升上下文中是有益的),并将两个类分层为等可能性。对于AdaBoost,在这种情况下,总权值上界了训练误差。用贝叶斯提升算子可以更快地降低这个界限。
为了再现'Scholz/2005b'中用于子群发现的顺序抽样或基于知识的抽样,必须更改该操作符的两个默认参数设置:重新调节标签先验必须设置为true,和允许边缘倾斜必须设置为false。另外,必须使用布尔(二项)标签。
该操作符需要一个ExampleSet作为输入。为了提取不同形式的先验知识,可以提供另一个模型作为可选的附加输入。该模型的预测用于生成训练集的初始权重。该算子的输出是一个分类模型,适用于估计条件类概率或简单脆分类。它包含最多指定数量的内部基本模型。在可选初始模型的情况下,该模型也将存储在输出模型中,以便在模型应用期间产生相同的初始权重。
助推是一种集成方法,因此本文对集成理论进行了概述。集成方法使用多个模型,以获得比任何组成模型更好的预测性能。换句话说,集体学习是一种将许多较弱的学习者结合起来,试图产生一个较强的学习者的技术。评估一个集合的预测通常比评估一个单一模型的预测需要更多的计算,所以集合可以被认为是一种通过执行大量额外的计算来补偿糟糕的学习算法的方法。
集合本身就是一种监督学习算法,因为它可以被训练然后用来进行预测。因此,训练过的集合代表一个单一的假设。然而,这个假设并不一定包含在构建它的模型的假设空间中。因此,集成可以被证明在它们所能表示的函数中具有更大的灵活性。理论上,这种灵活性可以使它们比单一模型更能过拟合训练数据,但在实践中,一些集成技术(特别是bagging)倾向于减少与训练数据过拟合相关的问题。
从经验上讲,当模型之间存在显著的多样性时,集合往往会产生更好的结果。因此,许多集成方法试图促进它们所组合模型的多样性。虽然可能不是直观的,但更随机的算法(如随机决策树)可以用来产生比非常深思熟虑的算法(如减少熵的决策树)更强大的集合。然而,使用各种强学习算法已被证明比使用试图简化模型以促进多样性的技术更有效。
输入
- 训练集(数据表)
这个输入端口需要一个ExampleSet。它是附加的示例流程中的Retrieve操作符的输出。其他运算符的输出也可以用作输入。
- 模型(模型)
输入端口需要一个模型。这是一个可选端口。为了提取不同形式的先验知识,可以提供一个模型作为可选输入。该模型的预测用于生成训练集的初始权重。该算子的输出是一个分类模型,适用于估计条件类概率或简单脆分类。它包含最多指定数量的内部基本模型。在可选初始模型的情况下,该模型也将存储在输出模型中,以便在模型应用期间产生相同的初始权重。
输出
- 模型(Baysian提高模型)
元模型从这个输出端口交付,现在可以应用于不可见的数据集,以预测标签属性。
- 榜样(数据表)
通过此端口传递作为输入的ExampleSet而不更改为输出。这通常用于在进一步的操作符中重用相同的ExampleSet,或者在结果工作区中查看ExampleSet。
参数
- use_subset_for_training该参数指定用于训练的示例的比例,剩余的示例用于估计混淆矩阵。如果设置为1,则关闭测试集。范围:真正的
- 迭代该参数指定该算法的最大迭代次数。范围:整数
- rescale_label_priors该参数指定在第一次迭代之后,标签的比例是否应该相等。有关此参数的更多信息,请研究此操作符的描述。范围:布尔
- allow_marginal_skews此参数指定边际分布是否倾斜(P (x))应该允许在学习过程中。有关此参数的更多信息,请研究此操作符的描述。范围:布尔
- use_local_random_seed该参数表示a当地的随机种子应用于随机化。的相同值当地的随机种子会产生相同的样品。改变该参数的值将改变样本的随机化方式,因此样本将具有不同的值集。范围:布尔
- local_random_seed此参数指定当地的随机种子.该参数仅在使用本地随机种子参数设置为true。范围:整数
教程的过程
使用贝叶斯提升算子生成更好的决策树
'Sonar'数据集使用Retrieve操作符加载。应用分裂验证算子对分类模型进行训练和测试。在分割验证算子的训练子过程中应用了贝叶斯Boosting算子。在贝叶斯推进算子的子过程中应用了决策树算子。贝叶斯Boosting算子的迭代参数设置为10,因此它的子过程最多有10次迭代。在测试子流程中使用Apply Model操作符来应用贝叶斯Boosting操作符生成的模型。结果标记的ExampleSet由性能(分类)操作符用于度量模型的性能。分类模型及其性能向量连接到输出,可以在Results Workspace中看到。您可以看到贝叶斯Boosting算子在每次迭代中生成一个新模型。该模型的准确率约为67.74%。 If the same process is repeated without Bayesian Boosting operator i.e. only the Decision Tree operator is used in training subprocess. The accuracy of that model turns out to be around 66%. Thus Bayesian Boosting generated a combination of models that performed better than the original model.