使用主题 id 在 mlr 中阻止交叉验证

Blocking in cross validation in mlr with subject id

我有一个包含参与者多次观察的数据集。参与者用 id 表示。为了在交叉验证过程中考虑到这一点,我将 blocking = factor(id) 添加到 makeClassifTask() 并将 blocking.cv = TRUE 添加到 makeResampleDesc()。但是,如果我在数据集中保留 id,它将用作预测变量。我的问题是:如何正确使用阻塞?我的做法是创建一个新变量,例如participant.id(数据集外),然后从原始数据集中删除 id,然后使用 blocking = factor(participant.id),但我不确定这是否是处理阻塞的正确方法。

无需为 blocking 提供变量,您可以提供一个自定义因子向量来指定属于一起的观察值。这也显示在 tutorial 中。

这样您就不需要在数据集中包含变量 "participant.id"。

还要确保您确实要使用 "blocking"。您已经看过 "grouping" 了吗?两者之间的区别也在链接的教程部分中进行了描述。