结合机器学习模型


20

我是数据挖掘/机器学习/等方面的新手。并且一直在阅读有关将多个模型和同一模型的运行组合起来以改善预测的几种方法。

通过阅读几篇论文(在理论和希腊字母上通常很有趣并且很出色,但是在代码和实际示例上却很短),我的印象是它应该像这样:

我采用一个模型(knnRF等),并获得0到1之间的分类器列表。我的问题是如何合并这些分类器列表中的每一个?我是否在训练集中运行相同的模型,以使进入最终模型的列数相同或还有其他技巧?

如果有任何建议/示例包含R代码,那就太好了。

注意:这是针对训练集中有100k行,测试集中有70k和10列的数据集。

Answers:


21

它实际上归结为“ 3B”技术之一:装袋,增强或混合。

在装袋中,您在对象的不同子集上训练了许多分类器,并平均组合答案以进行回归,并投票进行分类(对于更复杂的情况,还有其他一些选择,但我将跳过)。投票比例/方差可以解释为误差近似值,因为通常将各个分类器视为独立分类器。RF实际上是一个套袋合奏。

Boosting是一个更广泛的方法系列,但是它们的重点是您可以在前一个分类器的残差基础上构建下一个分类器,从而(通过理论上)通过突出越来越多的微妙的相互作用来逐渐提高准确性。因此,通常通过对预测求和来进行组合,就像通过对x的泰勒级数元素的值求和来计算x中的函数值一样。
最受欢迎的版本是(随机的)Gradient Boosting(具有良好的数学基础)和AdaBoost(众所周知的,实际上是GB的特定情况)。从整体角度来看,决策树是琐碎的枢轴分类器的提倡。

混合是嵌套分类器的一种思想,即在一个由其他分类器的预测组成的信息系统上运行一个分类器。因此,这是一个非常可变的方法,当然不是定义的算法。可能需要很多对象(在大多数情况下,“混合器”分类器必须针对一组不用于构建部分分类器的对象进行训练,以避免尴尬的过度拟合)。
通过将部分分类器的预测融合到一个由搅拌器预测的信息系统中,显然可以将它们组合在一起。



2

在上述答案的帮助下四处寻找后,我意识到了我的问题所在。我一直试图在与用于预测的模型相同的模型中使用其他模型的预测。换句话说,如果我在运行kNN模型时有5个变量,那么我将在模型的预测中添加一个新变量,kNN并在运行随机Forest模型时创建一个包含6个变量的模型。我发现,应该对模型的结果进行分段,并将其作为单独的模型运行。所以,我想创建各种模型(预测knnRFsvd,等),那么仅使用预测的变量和分类作为什么预测运行一个单独的合并/混合/堆叠模式。

我认为我的一些问题是,将预测与其他变量结合在一起时,可能存在一些过拟合或多重共线性,但我不确定。其他人也许可以更好地权衡我做错了什么。无论如何,感谢大家的帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.