首页 > 解决方案 > gridSearch 性能测量效果

问题描述

我有一个任务,它要求我:

通过超参数调整提高上一步模型的性能,并使用基于您选择的指标(或指标)的网格搜索来选择最终的最优模型。为给定任务选择最佳模型(比较特定域上的多个回归器)需要选择性能度量,例如 R2(确定系数)和/或 RMSE(均方根误差)来比较模型性能。

我使用此代码进行超参数调整:

model_example = GradientBoostingRegressor()
parameters = {'learning_rate': [0.1, 1], 
              'max_depth': [5,10]}

model_best = GridSearchCV(model_example,
                          param_grid=parameters,
                          cv=2,scoring='r2').fit(X_train_new,y_train_new)
model_best.best_estimator_

我发现我选择了学习率=0.1 和 max_dept=5scoring='r3'作为性能衡量标准,但是当我使用此代码提供我的最佳模型时,它对我的​​模型准确性没有任何影响:

my_best_model = GradientBoostingRegressor(learning_rate=0.1,
                                          max_depth=5).fit(X_train_new,y_train_new)
my_best_model.score(X_train_new,y_train_new)

你知道我的工作出了什么问题吗?

标签: pythonregressionhyperparameters

解决方案


尝试将 a 设置random_stateGradientBoostingRegressor(). 例如,GradientBoostingRegressor(random_state=1)

然后,该模型将对相同的数据产生相同的结果。如果没有该参数,则存在随机性元素,难以比较不同的模型拟合。

在 train-test-split 上设置随机状态也将对此有所帮助。


推荐阅读