在 R 中按 ID 分类

Posted

技术标签:

【中文标题】在 R 中按 ID 分类【英文标题】:Classification in R by ID 【发布时间】: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")

但是,似乎没有什么能很好地发挥作用,有时会降低单个项目的准确性。我考虑过分层预测,使用第一个结果作为算法第二次迭代的模型,但我真的不知道如何到达那里。

我是否应该放弃使用随机森林进行分类,而完全尝试其他算法? nneth2o 可以为我工作吗?我对数据挖掘和预测算法完全陌生,所以请多多包涵。

【问题讨论】:

【参考方案1】:

经过大量研究,我想我找到了我需要的东西。

我使用了reshape 包来为我的data.frame 建模并将一些变量转换为行。如果其他人需要,这些是我遵循的材料:

http://had.co.nz/reshape/introduction.pdf

https://www.r-statistics.com/2012/01/aggregation-and-restructuring-data-from-r-in-action/

在研究了这些材料和google了一些之后,我想出了以下代码:

library(reshape)

aux <- melt(myData, id=c('y','ID','x1'))

myData <- as.data.frame(cast(aux, ... ~ variable+value, function(x)  length(x) != 0))

结果是以下重塑的 data.frame:

y    ID    x1    x2_BB    x2_FF    x3_CC    x3_DD    x3_EE    ...

X    01    AA    TRUE     TRUE    TRUE      TRUE     TRUE     ...
Y    02    AA    TRUE     FALSE   TRUE      FALSE    TRUE     ...
Z    03    AA    FALSE    TRUE    TRUE      FALSE    TRUE     ...
...  ...   ...   ...      ...     ...       ...      ...      ...

【讨论】:

以上是关于在 R 中按 ID 分类的主要内容,如果未能解决你的问题,请参考以下文章

创建无限极分类树型结构

如何在 Pandas 中按月计算分类列?

为啥在图像分类的预处理步骤中按样本在 -1 和 1 之间缩放像素

如何在SAS中按十年分类日期

编写一个 R 函数,它只在声明时子集

解析决策树(来自 WEKA 分类器)以在 R 中绘图?