我的学习数据由约 45k 个样本组成,每个样本有 21 个特征。我正在尝试在此数据上训练一个随机森林分类器,该分类器被标记为 3 个类(-1、0 和 1)。这些类的大小或多或少相等。
我的随机森林分类器模型使用gini
它作为分割质量标准,树的数量是 10,并且我没有限制树的深度。
大多数特征的重要性可以忽略不计——平均值约为 5%,其中三分之一的重要性为 0,其中三分之一的重要性高于平均值。
然而,也许最引人注目的事实是 oob(out-of-bag)分数:略低于 1%。这让我觉得模型失败了,事实上,在一个新的、大小约为 40k 的独立集合上测试模型,我得到了 63% 的分数(到目前为止听起来不错),但对混淆矩阵的更深入检查表明,模型仅对 0 类成功,在大约 50% 的情况下在 1 和 -1 之间做出决定时失败。
附上 Python 的输出:
array([[ 7732, 185, 6259],
[ 390, 11506, 256],
[ 7442, 161, 6378]])
这自然是因为 0 类具有使其更容易预测的特殊属性。但是,我查到的oob分数是不是已经是模型不好的标志了?随机森林的 oob 分数是多少?是否有一些经验法则可以帮助确定模型是否“好”,单独使用 oob 分数,还是结合模型的其他一些结果?
编辑:删除不良数据(大约三分之一的数据)后,0 的标签或多或少为 2%,-1/+1 的标签分别为 49%。oob 得分为 0.011,测试数据得分为 0.49,混淆矩阵几乎不偏向第 1 类(约 3/4 的预测)。