mlxtend中StackingClassifier函数中的元分类器是什么?

时间:2018-09-10 01:39:02

标签: python machine-learning ensemble-learning mlxtend

在mlxtend库中,有一个用于集成的集成学习元分类器,称为“ StackingClassifier”。

以下是StackingClassifier函数调用的示例:

sclf = StackingClassifier(classifiers=[clf1, clf2, clf3], 
                          meta_classifier=lr)

这里的meta_classifier是什么?它是做什么用的?

3 个答案:

答案 0 :(得分:0)

什么是堆叠?

  

堆栈是一种集成学习技术,可通过元分类器组合多个分类模型。根据完整的训练集对各个分类模型进行训练;然后,根据集合中各个分类模型的输出-元特征-拟合元分类器。

来源:StackingClassifier-mlxtend

因此meta_classifier参数帮助我们选择classifier以适合各个模型的输出。

示例

假设您使用了3个二元分类模型,例如LogisticRegression, DT & KNN进行堆叠。假设0, 0, 1是模型预测的类。现在我们需要一个classifier,它将对预测值进行多数表决。该分类器为meta_classifier。在此示例中,它将选择0作为预测类。

您也可以将其扩展为prob个值。

有关更多信息,请参考mlxtend-API

答案 1 :(得分:0)

元分类器是一种可以吸收模型所有预测值的分类器。在您的示例中,您有三个分类器clf1,clf2,clf3,比如说clf1是朴素贝叶斯,clf2是随机森林,clf3是svm。现在,对于数据集中的每个数据点x_i,所有三个模型都将运行h_1(x_i),h_2(x_i),h_3(x_i),其中h_1,h_2,h_3对应于clf1,clf2,clf3的功能。现在,这三个模型将给出三个预测的y_i值,并且所有这些将并行运行。现在,有了这些预测值,就可以训练一个称为元分类器的模型,在您的情况下就是逻辑回归。

因此,对于新的查询点(x_q),它将被计算为h ^'(h_1(x_q),h_2(x_q),h_3(x_q)),其中h ^'(h破折号)是计算y_q的函数。

元分类器或集成模型的优势在于,假设您的clf1的准确度为90%,clf2的准确度为92%,clf3的准确度为93%。因此,最终模型将提供大于93%的精度,该精度是使用元分类器进行训练的。这些堆叠分类器广泛用于kaggle完成中。

答案 2 :(得分:0)

meta_classifier 是简单的分类器,它通过将所有预测作为特征在所有预测中做出最终预测。因此,它将采用各种分类器预测的类,并根据需要选择最后一个。

这是StackingClassifier的一个很好的简单展示:

StackingClassifier