RF:一个级别的OOB精度高,另一个级别的精度非常低,具有大的不平衡性

use*_*770 4 r classification machine-learning random-forest

我是随机森林分类器的新手.我用它来分类有两个类的数据集. - 功能数量为512. - 数据比例为1:4.即,75%的数据来自第一类,25%来自第二类. - 我正在使用500棵树.

分类器产生的袋外误差为21.52%.第一类的每类错误(由训练数据的75%表示)为0.0059.虽然第二类的分类错误非常高:0.965.

我正在寻找这种行为的解释,如果你有建议提高第二类的准确性.

我期待着你的帮助.

谢谢

忘了说我正在使用R并且我在上面的测试中使用了1000的nodesize.

在这里,我只用10棵树重复训练,nodesize = 1(只是为了给出一个想法),下面是R中的函数调用和混淆矩阵:

  • randomForest(formula = Label~.,data = chData30PixG12,ntree = 10,importance = TRUE,nodesize = 1,keep.forest = FALSE,do.trace = 50)
  • 随机森林类型:分类

  • 树木数量:10

  • 每次拆分时尝试的变量数量:22

  • OOB估计错误率:24.46%

  • 混淆矩阵:

  • 不相关,相关,class.error

  • 不相关37954,4510,0.1062076
  • 相关8775,3068,0.7409440

jor*_*ran 10

我同意@usr一般来说,当你看到一个随机森林只是将每个观察分类(几乎)作为多数类时,这意味着你的特征没有提供太多信息来区分这两个类.

一种选择是运行随机森林,以便从少数类中过度采样观察(而不是从整个数据集中替换采样).因此,您可以指定每个树都建立在大小为N的样本上,您可以强制N/2个观察来自每个类(或您选择的其他比例).

虽然这可能对某些人有所帮助,但它绝不是万灵药.你可能更有可能获得更多的里程数来找到更好的功能,这些功能可以很好地区分类,而不是调整RF设置.


Ale*_*ams 5

我很惊讶没人提到使用'classwt'参数.加权随机森林(WRF)专门用于解决此类问题.

请参阅此处:Stack Exchange问​​题#1

在这里:Stack Exchange问​​题#2

关于加权随机森林的文章:PDF