我正在研究一个包含 9 个可能标签的多类问题,为此我有一个数据集,其中包含约 50.000 个示例和约 200 个特征。每个示例只能属于一个类。不同标签之间的数据相当平衡。
鉴于其稳健性和可扩展性,我决定使用随机森林(包含 1000 棵树的集合)作为学习方法。为了评估给定此数据集的模型的性能准确性,我使用了分层 5Fold 交叉验证(我使用的是 scikit-learn 0.18)。
由于随机森林本质上可以处理多类数据集,因此我直接在给定数据集上使用它并获得了 79.5 的准确度0.3。我也有兴趣知道哪些特征更重要,可以从scikit的RandomForestClassifier中的属性feature_importances_中轻松提取。然而,鉴于数据集平衡良好,并且正如预期的那样,200 个特征中几乎相同数量的特征对不同的类有贡献,我无法区分哪些特征对每个类的贡献最大。
因此,我采用了使用相同随机森林设置的一对多策略(顺便说一下,成本敏感,考虑到使用 oneVsAll 策略时数据的不平衡),这让我可以查看每个类与其余哪些功能更重要。我得到的结果是合理的。更重要的是,当查看使用这种策略的模型的性能时,我得到了 88.70.2 的准确率,这让我感到惊讶,因为我期望多类随机森林能够更好地分类,因为它具有多类性质。
我说得对吗?这样的准确性差异是否合理?此外,考虑到随机森林本身可以解决多类问题而无需任何“黑客”(例如 oneVsAll 策略),上述策略是否正确且公平?