洗牌数据会产生明显更差的性能

数据挖掘 分类 随机森林 数据清理 多标签分类
2022-02-21 11:11:55

编辑:我已经尝试了几次,在不同的步骤中对数据进行了洗牌。看来只要我重新启动python内核并重置数据帧索引,性能就不错了。如果我不做这些事情,我仍然不确定为什么模型会坦克

我正在尝试多标签分类问题。当我对数据运行 RandomForest 而不进行改组时,结果非常好,在某些情况下令人怀疑。

例子:

feat1    feat2 ...  label
chrom1   10    ...  [a, b]
chrom1   200   ...  [b]
...      ...   ...  ...
...      ...   ...  ...
chrom20  30    ...  [c]

值得注意的是,其中两个标签 b 和 c 是完全排序的。所有标记为 b 的样本都在数据集的开头,所有标记为 c 的样本都在末尾。b 和 c 是互斥的。此外,数据按两个特征(示例中的feat1 和feat2)排序。

在不打乱数据的情况下,标签 b 和 c 的预测几乎完美,其他标签也相当不错。

在对数据进行洗牌后,所有标签的性能都会显着下降。

我假设由于数据的顺序,信息会以某种方式泄漏。但是,我无法弄清楚如何。数据在拆分时是分层的,因此在训练集和测试集中标签的比率接近相等。

任何人之前遇到过类似的问题或看到我哪里出错了?

注意:这不是时间序列数据。此外,我在标记后和拆分为训练/测试、规范化、插补等之前对数据进行洗牌。

注2:不知何故,在杀死jupyter笔记本内核并再次通过管道运行之后,这次在标记数据之前进行了洗牌,现在性能又好了。我真的不明白这是怎么回事。随机森林不是从头开始吗?

0个回答
没有发现任何回复~