【发布时间】:2017-09-27 13:24:19
【问题描述】:
为了性能,我一直在尝试使用 RandomForestSRC 包在 R 中进行一些分类。
在这种特殊情况下,我有以下示例 data.frame,其中 Y 是分类因子 c("X","Y","Z"),ID 表示项目在同一个包中分组在一起,他们还有其他变量可以告诉我结果应该是 X、Y 还是 Z:
y ID x1 x2 x3 ...
X 01 AA BB CC ...
X 01 AA BB DD ...
X 01 AA FF EE ...
Y 02 AA BB CC ...
Y 02 AA BB EE ...
Z 03 AA FF CC ...
Z 03 AA FF EE ...
... ... ... ... ... ...
在训练算法后,它成功地为我提供了以下结果,每个项目的准确率都很高,但没有按包 ID 对项目进行分组:
y ID x1 x2 x3 ...
Y 01 AA BB CC ...
X 01 AA BB DD ...
Z 01 AA FF EE ...
Y 02 AA BB CC ...
Y 02 AA BB EE ...
Z 03 AA FF CC ...
Z 03 AA FF EE ...
... ... ... ... ... ...
包裹分类规则如下:
如果至少有一项物品被归类为X,则整个包裹应为X;
如果同一个包中只有Y和Z,则该包应归类为Y;
如果包裹中只有Z个物品,那么整个包裹都应该归类为Z。
因此,出于分类目的,包装上的重量应为 X > Y > Z。
我试过摆弄给算法的公式,使用类似的东西:
rf <- rfsrc(y ~ ., data = model, method = "class")
rf <- rfsrc(y ~ ID %in% (x1+x2+x3+...), data = model, method = "class")
rf <- rfsrc(y ~ (x1+x2+x3+...) / ID, data = model, method = "class")
但是,似乎没有什么能很好地发挥作用,有时会降低单个项目的准确性。我考虑过分层预测,使用第一个结果作为算法第二次迭代的模型,但我真的不知道如何到达那里。
我是否应该放弃使用随机森林进行分类,而完全尝试其他算法? nnet 或 h2o 可以为我工作吗?我对数据挖掘和预测算法完全陌生,所以请多多包涵。
【问题讨论】:
标签: r algorithm classification random-forest prediction