在 mlxtend 库中,有一个用于堆叠的集成学习元分类器,称为“StackingClassifier”。
这是 StackingClassifier 函数调用的示例:
sclf = StackingClassifier(classifiers=[clf1, clf2, clf3],
meta_classifier=lr)
这里的 meta_classifier 是什么?它是干什么用的?
在 mlxtend 库中,有一个用于堆叠的集成学习元分类器,称为“StackingClassifier”。
这是 StackingClassifier 函数调用的示例:
sclf = StackingClassifier(classifiers=[clf1, clf2, clf3],
meta_classifier=lr)
这里的 meta_classifier 是什么?它是干什么用的?
什么是堆叠?
Stacking 是一种集成学习技术,通过元分类器组合多个分类模型。单个分类模型基于完整的训练集进行训练;然后,元分类器根据集成中各个分类模型的输出——元特征——进行拟合。
所以meta_classifier
参数帮助我们选择classifier
适合各个模型的输出。
示例:
假设您已经使用了 3 个二进制分类模型LogisticRegression, DT & KNN
来进行堆叠。可以说0, 0, 1
是模型预测的类别。现在我们需要一个classifier
将对预测值进行多数投票的方法。那个分类器是meta_classifier
. 在此示例中,它将选择0
作为预测类别。
您也可以将其扩展为prob
值。
有关更多信息,请参阅mlxtend-API
元分类器是接受模型所有预测值的分类器。在您的示例中,您有三个分类器 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 完成。