【问题标题】:GridSearchCV with LGBMRegressor can't find best parameters带有 LGBMRegressor 的 GridSearchCV 找不到最佳参数
【发布时间】:2020-12-01 00:37:22
【问题描述】:

我有 2 个回归器:

import lightgbm as lgb
from sklearn.model_selection import GridSearchCV

params = {
    'num_leaves': [7, 14, 21, 28, 31, 50],
    'learning_rate': [0.1, 0.03, 0.003],
    'max_depth': [-1, 3, 5],
    'n_estimators': [50, 100, 200, 500],
}

grid = GridSearchCV(lgb.LGBMRegressor(random_state=0), params, scoring='r2', cv=5)
grid.fit(X_train, y_train)

reg = lgb.LGBMRegressor(random_state=0)

如您所见,我为两个回归器定义了一个random_stateGridSearchCV 必须为估算器找到最佳参数以增加其 scroring。但是

r2_score(y_train, grid.predict(X_train)) # output is 0.69
r2_score(y_train, reg.predict(X_train))  # output is 0.84

那么,如何找到LGBMRegressor 的最佳参数?

【问题讨论】:

  • 我猜这是一个概念问题。您正在使用相同的数据集进行训练和预测。我会说你有一个有偏见的分类器,交叉验证可以消除这种偏见。
  • R2 相当高。为什么会有偏见?
  • 任何模型评估都应该在不同于用于训练的集合中进行。在这里你可以找到一个有趣的讨论:stats.stackexchange.com/questions/130985/…
  • 我没有尝试评估模型。 GridSeachCV 应该为最高分找到最佳参数。它没有找到他们。这就是问题

标签: python scikit-learn regression linear-regression lightgbm


【解决方案1】:

基于grid.fit() 之后的documentaion,您可以在此处找到最佳估算器(现成模型)和参数:

grid.best_estimator_
grid.best_params_

仅供参考:random_state 仅适用于随机情况(例如洗牌时)。
在您的情况下,模型的参数不同,因此您的指标 R2 的结果也不同。

【讨论】:

    【解决方案2】:

    所以,我相信您必须编写如下脚本:

    params = {
        'num_leaves': [7, 14, 21, 28, 31, 50],
        'learning_rate': [0.1, 0.03, 0.003],
        'max_depth': [-1, 3, 5],
        'n_estimators': [50, 100, 200, 500],
    }
    
    grid = GridSearchCV(lgb.LGBMRegressor(random_state=0), params, scoring='r2', cv=5)
    grid.fit(X_train, y_train)
    
    reg = lgb.LGBMRegressor(random_state=0)
    reg.fit(X_train,y_train)
    
    lgbm_tuned = grid.best_estimator_
    
    r2_tuned = grid.best_params_
    r2_regular = r2_score(y_train, reg.predict(X_train))
    

    当 r2_tuned 是使用网格搜索找到的最佳分数时,lgbm_tuned 是使用最佳参数定义的模型,而 r2_regular 是使用默认参数定义的分数。

    在 gridsearch 之后找到最差的结果是很奇怪的,特别是当 gridsearch 的参数包含 LightGBM 的默认参数时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-28
      • 2020-10-10
      • 2017-05-19
      • 2021-11-24
      • 2018-10-15
      • 2019-09-30
      • 2019-07-24
      • 2020-04-30
      相关资源
      最近更新 更多