这是分类中一个有趣且非常常见的问题——不仅在决策树中,而且在几乎所有分类算法中。
正如您根据经验发现的那样,由来自任一类的不同数量的代表组成的训练集可能会导致分类器偏向于多数类。当应用于类似不平衡的测试集时,该分类器会产生乐观的准确度估计。在极端情况下,分类器可能会将每个测试用例分配给多数类,从而达到与属于多数类的测试用例的比例相等的准确度。这是二元分类中众所周知的现象(它自然地扩展到多类设置)。
这是一个重要的问题,因为不平衡的数据集可能会导致性能估计膨胀。反过来,这可能会导致关于算法表现优于偶然性的重要性的错误结论。
关于这个主题的机器学习文献基本上已经开发了三种解决方案策略。
您可以通过对大类进行欠采样或对小类进行过采样来恢复训练集的平衡,以防止出现偏差。
或者,您可以修改错误分类的成本,如之前的回复中所述,再次防止偏差。
另一个保障是用所谓的平衡精度代替精度。它被定义为类特定精度的算术平均值,其中和分别表示在正例和负例上获得的准确度。如果分类器在任一类上的表现都一样好,则该术语会降低到常规准确度(即,正确预测的数量除以预测的总数)。相反,如果仅因为分类器利用了不平衡的测试集,传统的准确度高于偶然性,那么平衡的准确度将酌情下降到偶然性(见下图)。ϕ:=12(π++π−),π+π−
我建议至少结合考虑上述两种方法。例如,您可以对少数类进行过采样,以防止您的分类器偏向多数类。在此之后,在评估分类器的性能时,您可以用平衡的准确度代替准确度。这两种方法是互补的。当一起应用时,它们应该可以帮助您防止最初的问题并避免由此得出的错误结论。
如果您想对此进行跟进,我很乐意发布一些额外的文献参考。