我正在寻找一个能够满足这些要求的回归模型:
- 我的目标变量遵循指数分布,所以据我了解,我应该使用伽马损失函数。我已经尝试过XGBoost、LightGBM、pyGAM和StatsModels GLM的这个功能,它们似乎都运行良好。
- 该模型应该能够至少对特征进行一些推断。在我的训练数据中,一个特征只有值 = 1、2、3...、10,我对 = 0 的预测非常感兴趣。线性模型似乎表现良好,但基于树的模型(XGBoost、LightGBM)在这方面非常糟糕。
- 一些非线性或其他类型的灵活性以适应输入变量之间的复杂关系。例如,使用 BayesianRidge,我在训练和测试集上获得了几乎相同的性能,这告诉我应该能够通过增加复杂性来构建更好的模型。
我的数据集包含大约一百万个样本,我使用了 10 个特征(离散的和连续的)。将来我可能会获得 10-20 个新功能。
这是我到目前为止的结果。因为我希望模型在关于输入 x 的外推上表现良好,所以我的测试集由 =1 的所有样本组成。
- 线性回归 softplus link 训练损失:0.949 测试损失:0.673
- 贝叶斯岭回归训练损失:0.931 测试损失:0.653
- 带有 softplus 链接的 Bayesin Ridge 训练损失:0.949 测试损失:0.673
- 弹性网络训练损失:0.930 测试损失:0.660
- 带有 softplus 链接的弹性网络 训练损失:0.946 测试损失:0.655
- Elastic Net CV 训练损失:0.931 测试损失:0.654
- 带有日志链接的 Elastic Net CV 训练损失:0.984 测试损失:0.688
- 带有 softplus 链接的 Elastic Net CV 训练损失:0.947 测试损失:0.664
- 具有日志链接和伽马损失的 GLM 训练损失:0.927 测试损失:0.657
- 具有日志链接伽马损失的 GAM 训练损失:0.927 测试损失:0.657
- LGBMRegressor (max_depth 3) 训练损失:0.899 测试损失:0.678
所有模型在测试集上的损失似乎都比训练集好得多。通常这表明过度拟合,但我认为原因是其他值处的值。
最初,我进行了完全随机的训练测试拆分。基于这些结果,LGBM 是插值模型,但现在很明显,其他模型在外插方面的表现优于它。基于这些结果,当前的模型都没有过拟合。我认为该模型应该只对具有线性或其他非常简单的依赖关系,但可能会增加模型在其他特征方面的复杂性。