使用 mlr3

问题描述

最近有人建议我将机器学习框架更改为 mlr3。但我发现过渡比我一开始想象的要困难一些。在我当前的项目中,我正在处理高度不平衡的数据,我想在训练模型之前对其进行平衡。我发现了这个教程,它解释了如何通过管道和图学习器处理不平衡:

https://mlr3gallery.mlr-org.com/posts/2020-03-30-imbalanced-data/

恐怕这种方法也会通过新数据预测来执行类平衡。为什么我要这样做并减少我的测试样本?

所以出现的两个问题:

  1. 在测试数据中不平衡类是否正确?
  2. 如果是这样,有没有办法在 mlr3 中做到这一点?

当然,我可以手动对训练数据进行子集化并自己处理不平衡,但这不再有趣了! :)

无论如何,感谢您的回答,
干杯!

解决方法

回答您的问题:

恐怕这种方法也会通过新数据预测来实现类平衡。

这不正确,你从哪里得到的?

在测试数据中不平衡类是否正确?

类平衡通常通过添加或删除行(或调整权重)来实现。在预测步骤中不应应用所有这些步骤,因为我们希望数据中的每一行都只有一个预测值。另一方面,权重通常在预测阶段没有影响。 你的假设是正确的。

如果是这样,有没有办法在 mlr3 中做到这一点?

只需按照博文中的说明使用 PipeOp。 在训练过程中,它会做指定的过采样或欠采样,而在预测过程中什么也不做。

干杯,