在Python中使用XGboost_Regressor会产生很好的训练效果,但预测效果很差

我学习

我一直在尝试在python中使用XGBregressor。这是迄今为止我使用过的最好的机器学习技术之一,但是在某些数据集中,我对R平方的训练非常高,但是在预测或测试方面却表现不佳。我尝试使用伽玛,深度和二次采样来降低模型的复杂性,或确保模型不过度拟合,但训练和测试之间仍然存在巨大差异。我想知道是否有人可以帮助我:

以下是我正在使用的代码:

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30,random_state=100)

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaler.fit(X_train)


xgb = xgboost.XGBRegressor(colsample_bytree=0.7,
                 gamma=0,                 
                 learning_rate=0.01,
                 max_depth=1,
                 min_child_weight=1.5,
                 n_estimators=100000,                                                                    
                 reg_alpha=0.75,
                 reg_lambda=0.45,
                 subsample=0.8,
                 seed=1000) 

这是训练与测试的表现:

训练:MAE:0.10 R ^ 2:0.99

测试:MAE:1.47 R ^ 2:-0.89

Rishi Bansal

这里的问题是过度拟合。您需要调整一些参数(Source)。

  • 如果数据大小很大(大约为十万),请将n_estimators设置为80-200,如果中等大小则将n_estimators设置为80-1200
  • learning_rate:介于0.1和0.01之间
  • 子样本:介于0.8和1之间
  • colsample_bytree:每棵树使用的列数。如果特征向量或列很多,则值为0.3到0.8;如果特征向量或列很少,则值为0.8到1。
  • 伽玛:0、1或5

由于max_depth已经很低,因此可以尝试调整以上参数。另外,如果您的数据集非常小,则预期训练和测试会有所不同。您需要检查训练和测试数据中是否存在良好的数据分割。例如,在测试数据中,输出列的“是”和“否”的百分比是否几乎相等。

您需要尝试各种选择。当然,xgboost和随机森林将为数据量较少提供过拟合模型。你可以试试:-

1,朴素的贝叶斯 它对于较少的数据集是有好处的,但是它认为所有特征向量的加权相同。

Logistic回归-尝试调整正则化参数,并查看召回得分最高。此中的其他内容是重量=平衡。

带有交叉验证的逻辑回归-这同样适用于小数据。我之前也告诉过的最后一件事,请检查您的数据,看看它是否偏向一种结果。就像在70个案例中有50个案例的结果是“是”一样,它存在很大的偏差,您可能无法获得很高的准确性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用纯JavaScript产生fadeOut效果

使用lsof的脚本在shell上效果很好,而不在cron上效果很好

在减少操作中使用StringBuilder(...)作为标识值会产生不可预测的结果

使用CSS对页面加载产生淡入效果

使用较短的间隔时,为什么更改CSS宽度会产生奇怪的效果?

使用lme4建模从固定效果值进行预测

在R中使用XGBoost预测类变量

在python中训练randomforest时,哪个dtype效果更好?

在python中使用keras + tensorflow进行训练并在C / C ++中进行预测

XGBoost提取训练预测

在dropboxlist中使用PHP,效果不佳

在样式化的组件中使用道具时,效果很好,但显示警告(警告:非布尔属性“ cen”收到“ true”)

无法使用Graph创建草稿,但直接发送邮件效果很好

在R中使用Xgboost进行训练和预测

TypeError:在Cartopy中使用时,字符串索引必须是整数,但正常打印效果很好

在React中使用超时添加悬停效果

在UISlider中使拇指产生眨眼效果-Swift

尽管打印效果很好,但Python无法写入文件

jQuery动画在FF中效果很好,但在所有其他浏览器中效果很差

使用JavaScript标尺产生怪异效果

使用jQuery对横幅动画产生多种效果

如何使用CSS3产生阴影淡入的效果?

jQuery hide()效果很好

使用动感结构在iPhone 7上产生视场效果

使用Bootstrap Well类产生悬停效果

在 catch 中使用 await 的效果

Keras Val_acc 很好,但对相同数据的预测很差

在 keras 中实现 MLP 模型进行时间序列预测,但该模型训练效果不佳

在 self.__init__() 方法中使用 getpass() 失败,但在功能上使用时效果很好。为什么是这样?