我使用了以下分类器及其准确性:
- 随机森林 - 85 %
- 支持向量机 - 78 %
- Adaboost - 82%
- 逻辑回归 - 80%
当我使用上述分类器的投票进行最终分类时,我得到的准确率低于单独使用随机森林的情况。
这怎么可能?所有分类器在单独使用时都提供或多或少相同的精度,那么随机森林如何优于它们的组合结果?
我使用了以下分类器及其准确性:
当我使用上述分类器的投票进行最终分类时,我得到的准确率低于单独使用随机森林的情况。
这怎么可能?所有分类器在单独使用时都提供或多或少相同的精度,那么随机森林如何优于它们的组合结果?
您正在考虑的方法类似于多类 SVM 或one-vs-the-rest方法。
这就是我描述这个问题的方式。例如,支持向量机基本上是一个二分类器。
然而,在实践中,我们经常需要解决涉及 K > 2 个类的问题。因此,已经提出了各种方法来组合多个二类 SVM,以构建多类分类器。
一种常用的方法 (Vapnik, 1998) 是构建 K 个单独的支持向量机,其中第 k 个模型 y_k(x) 使用来自 C_k 类的数据作为正例和来自剩余 K-1 个类的数据作为负例进行训练例子。这被称为一对一的方法,其中:
y(x) = max_k y_k(x)
不幸的是,这种启发式方法存在不同分类器在不同任务上训练的问题,并且不能保证不同分类器的实值量 y_k(x) 将具有适当的尺度。
one-vers-the-rest 方法的另一个问题是训练集不平衡。例如,如果我们有 10 个类,每个类都有相同数量的训练数据点,那么各个分类器在包含 90% 负样本和只有 10% 正样本的数据集上进行训练,原始问题的对称性就会丢失。
因此,您的准确性很差。
PS:在大多数情况下, 准确度并不是评估分类器模型的好方法。
参考 :
简单地通过投票组合一些分类器自然可以给出袋子结果。考虑一个玩具示例,例如拥有一组数据实例。假设你有分类器。先来说说实例所有分类器完美匹配。比下一个第一个分类器好,其他分类器不好,在下一个,第二个好,其他不好,最后一个第三个很好,其他都不好。所有三个模型都继续准确性。投票将导致.
还有一些其他潜在的困难,例如基础学习者的未缩放分数(如果 SVM 没有通过逻辑或其他方式进行缩放,则通常会发生这种情况)。另一个原因是不同学习者提供的模型族。Bagging(或例如在 RF 中使用的引导聚合)之所以起作用,仅仅是因为它们假设模型来自同一个家族(它是同一个树模型,或者从统计上讲,它是一个区域的多数类),并且只有样本是随机抽取的。因此,需要独立且相同分布的子样本的自举在您的情况下不起作用,因为您的模型(可以被认为是样本上的函数)不是相同分布的。
然而,这个问题有一些解决方案,其中之一是堆叠泛化(或简单堆叠)。最简单的方法是与逻辑回归量叠加。这个想法是训练一些基本分类器(你已经拥有),并将它们的结果作为逻辑回归的输入变量。顶级逻辑回归将能够在预测之间找到“适当的平衡”,并且通常您可以获得一些提高的准确性作为其他好处。
如需更多参考资料,请参阅:Wikipedia page on ensemble learning。在 Google 上搜索“堆叠泛化”。论文从David Wolpert - Stacked Generalization - 1992的开创性论文开始,该论文开始了有关该主题的所有讨论。