我正在做一个回归项目。但是由于时间延迟,我面临着特征协变量变化的问题。测试数据是在一年后收集的,因此分布发生了一些变化。我正在撰写的研究论文也提到了特征值的这种转变,但没有提到任何关于纠正它的事情。
我发现了这个,但它谈到了改变训练集的分布。我需要的是一种使测试数据分布更接近训练数据的方法,或者我可以控制它的其他方式。
我正在使用sklearnandElastic-net进行回归。
我正在做一个回归项目。但是由于时间延迟,我面临着特征协变量变化的问题。测试数据是在一年后收集的,因此分布发生了一些变化。我正在撰写的研究论文也提到了特征值的这种转变,但没有提到任何关于纠正它的事情。
我发现了这个,但它谈到了改变训练集的分布。我需要的是一种使测试数据分布更接近训练数据的方法,或者我可以控制它的其他方式。
我正在使用sklearnandElastic-net进行回归。
有几种选择:
更改训练数据集
使用一些测试数据作为训练数据。这是最好的选择,因为它可以更好地模拟您要解决的问题。
由于它会随着时间的推移而发生,因此只使用最新的数据进行训练。
手动设计功能。如果您了解测试数据特征值的不同之处,则将这些知识明确地放入模型中。
增加正则化。对于 scikit-learn 的 ElasticNet,增加 alpha 超参数。除非您的验证数据集与您的测试数据相似,否则您将没有证据表明这会改进建模。
将算法切换到更擅长泛化的算法。可能,随机森林可能比正则化线性回归更好。