RandomizedSearchCV

Python 中的模型验证

Kasey Jones

Data Scientist

网格搜索超参数

在为多个超参数选值时,所有可能的组合构成网格,即超参数空间。

Python 中的模型验证

网格搜索(续)

优点:

  • 测试所有组合

缺点:

  • 超参数越多,训练时间呈指数增长
Python 中的模型验证

更优方法

Python 中的模型验证

随机搜索

from sklearn.model_selection import RandomizedSearchCV

random_search = RandomizedSearchCV()

参数分布:

param_dist = {"max_depth": [4, 6, 8, None],
              "max_features": range(2, 11),
              "min_samples_split": range(2, 11)}
Python 中的模型验证

随机搜索参数

参数:

  • estimator:要使用的模型
  • param_distributions:包含超参数及其取值的字典
  • n_iter:迭代次数
  • scoring:评分方法
Python 中的模型验证

设置 RandomizedSearchCV 参数

param_dist = {"max_depth": [4, 6, 8, None],
              "max_features": range(2, 11),
              "min_samples_split": range(2, 11)}
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import make_scorer, mean_absolute_error

rfr = RandomForestRegressor(n_estimators=20, random_state=1111)
scorer = make_scorer(mean_absolute_error)
Python 中的模型验证

实现 RandomizedSearchCV

设置随机搜索:

random_search =\
    RandomizedSearchCV(estimator=rfr,
                       param_distributions=param_dist,
                       n_iter=40,
                       cv=5)
  • 不理解模型验证就无法进行超参数调优
  • 模型验证可比较多个模型与参数集
Python 中的模型验证

实现 RandomizedSearchCV

设置随机搜索:

random_search =\
    RandomizedSearchCV(estimator=rfr,
                       param_distributions=param_dist,
                       n_iter=40,
                       cv=5)

完成随机搜索:

random_search.fit(X, y)
Python 中的模型验证

让我们看看一些示例!

Python 中的模型验证

Preparing Video For Download...