我有一个我正在处理的数据集,它在训练集和测试集之间有一些协变量变化。我正在尝试使用训练集建立一个预测模型来预测结果。到目前为止,我最好的模型是随机森林。
如何处理训练集与测试集中的偏移分布?我遇到了我自己能够实现的两种可能的解决方案:
- 删除移位的变量。这是次优的,但有助于防止我的模型过度拟合训练集。
- 使用逻辑回归来预测给定的观察值是否来自测试集(在平衡类之后),预测训练集的“测试集概率”,然后使用抽样概率对训练集进行自举抽样。然后在新的训练集上拟合最终模型。
1 和 2 都很容易实现,但没有一个让我满意,因为 #1 省略了可能相关的变量,而 #2 使用逻辑回归,而我的最终模型是基于树的。此外,#2 需要几段自定义代码,我担心我的实现可能不正确。
处理协变量偏移的标准方法是什么?R(或其他语言)中是否有任何实现这些方法的包?
/edit:似乎“内核均值匹配”是我可以采取的另一种方法。我发现了很多关于这个主题的学术论文,但似乎没有人发布任何代码。我将尝试自己实现这一点,并在我这样做时发布代码作为这个问题的答案。