数据集按照时间线划分为训练集和测试集。
模型训练后R2能够达到1,但是测试集的R2很低,会出现负值,误差命中率也很低。
有什么解决方法
可能是你的训练集和测试集分布不一致,而你的model在训练集上又学得很充分(有点overfitting了)
你可以试着把训练集和测试混到一起shuffle一下,再split切分
另外不要使用复杂度过高的模型或者参数。
不要按时间线划分训练集和测试集。建议按时间线等比例采样或随机采样划分训练集和测试集。
例如,简单地,时间线为 t=1,2,...10000,训练集 66.7%/测试集33.3%
(1)不要:将 t=1,...6667划分为训练集,t=6668,...10000划分为测试集;
(2)而是:将 t=1,2,4,5,7,8,...,9997,9998,10000划分为训练集,将 t=3,6,9,...,9999划分为测试集;
(3)或者:将序列 R=[1,10000] 随机排列,将 t=r1,...r6667划分为训练集,t=r6668,...r10000划分为测试集.