这些天我开始使用集成方法,专注于堆叠。我想知道我们是否将每个模型类概率(中的实数)或分类本身(在二进制情况下为中的整数)作为输入。
在我看来,概率更自然,因为如果我分类为,因为概率是或因为它是,并且如果我直接在类上应用集成算法,我会完全丢失这些信息。
通常的做法是什么?是否有关于如何使用堆叠构建集成分类器的参考?
PS:集成梯度提升模型和 logit 模型我使用分类得到的结果比概率略好 - 但我认为是这种情况,因为概率主要累积在左右,因此差异并不重要。
这些天我开始使用集成方法,专注于堆叠。我想知道我们是否将每个模型类概率(中的实数)或分类本身(在二进制情况下为中的整数)作为输入。
在我看来,概率更自然,因为如果我分类为,因为概率是或因为它是,并且如果我直接在类上应用集成算法,我会完全丢失这些信息。
通常的做法是什么?是否有关于如何使用堆叠构建集成分类器的参考?
PS:集成梯度提升模型和 logit 模型我使用分类得到的结果比概率略好 - 但我认为是这种情况,因为概率主要累积在左右,因此差异并不重要。
您要问的是投票(使用分类)和平均(使用概率)之间的区别,就事情而言,这取决于偏好和/或性能。两者都试一下,看看哪种效果最好,如果没有显着差异,请选择你感觉更好的一种。
我现在试着解释一下感觉更好的部分。
正如您所说,投票可能听起来有点不自然,因为它忽略了概率是 0.1 还是 0.49 - 但是以这个例子为例。
梯度提升树 (GBT) 模型确实容易过度拟合。这就是为什么所有参数都需要仔细调整以及为什么一个小的变化会带来更好的泛化性能(查看 kaggle 以获取参考)。
在这种情况下,过度拟合可能意味着 GBT 模型对于的实例将非常确定。但是,两个不同的、更简单的模型并不确定,它们将分别输出和。
平均值为,样本根据 GBT 模型分类,尽管 2/3 的模型不同意这一点。如果您使用投票,分类显然会有所不同。
那么,这里的结论是什么?如果您的某些分类器容易过度拟合并为错误分类的样本提供大概率错误(您可以使用各种损失度量进行测试)但在其他方面表现良好,也许您应该使用投票来让其他分类器修复错误。
如果错误分类样本的概率误差在合理范围内,那么使用概率可能会更好,因为没有信息丢失,这通常是一件好事。
总的来说,我怀疑是否有绝对正确的方法可以做到这一点,而且它肯定会因任务和集合而异。
mttk的答案非常好。我将补充一点,您还可以提取概率并将它们用作元分类器的输入,例如简单的逻辑回归。这将自动调整分类器产生概率估计的方式的差异(即分类器 A 几乎只产生范围 [0.4, 0.6] 的概率,而分类器 B 几乎只产生接近 0 或 1 的概率)。