2

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

这是 StackingClassifier 函数调用的示例:

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

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

4

3 回答 3

3

什么是堆叠?

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

来源:StackingClassifier-mlxtend

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

示例

假设您已经使用了 3 个二进制分类模型LogisticRegression, DT & KNN来进行堆叠。可以说0, 0, 1是模型预测的类别。现在我们需要一个classifier将对预测值进行多数投票的方法。那个分类器是meta_classifier. 在此示例中,它将选择0作为预测类别。

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

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

于 2018-09-10T02:07:13.450 回答
3

元分类器是接受模型所有预测值的分类器。在您的示例中,您有三个分类器 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 dash) 是计算 y_q 的函数。

元分类器或集成模型的优点是假设您的 clf1 给出了 90% 的准确度,clf2 给出了 92% 的准确度,clf3 给出了 93% 的准确度。因此,最终模型将给出大于 93% 的准确率,该准确率是使用元分类器训练的。这些堆叠分类器广泛用于 kaggle 完成。

于 2019-06-12T05:28:11.093 回答
0

meta_classifier只是一个分类器,它通过使用这些预测作为特征在所有预测中做出最终预测。因此,它采用各种分类器预测的类,并选择最后一个作为您需要的结果。

这是 StackingClassifier 的简单介绍:

堆叠分类器

于 2020-07-26T11:16:03.467 回答