今日必看|调整超参数:决定模型是“金子”仍是“垃圾”!( 三 )


"min_child_weight": stats.uniform(0.1,10.0-0.1), # 介于0.6到1的值
}
# 定义lightgbm和网格搜索
reg = LGBMRegressor(learning_rate=0.1, n_estimators=1000, random_state=1000)
reg_randsearch = RandomizedSearchCV(reg, randParams, cv=5, n_iter=20, scoring="r2", n_jobs=-1, random_state=2222)
# 练习模型
reg_randsearch.fit(X_train, y_train, early_stopping_rounds=100, eval_set=(X_val,y_val))
## Final l2 was l2: 0.0212662.
# 返回最佳参数
reg_randsearch.best_params_
代码参考:https://gist.githubusercontent.com/daydreamersjp/d3e60e613f51bd223f8f153dca2ccb12/raw/8a2f28858a07e0f3e5878d2d3375780a63a80df4/gistfile2019120802.py
2.4 贝叶斯搜索
贝叶斯搜索又名贝叶斯优化 。 它是基于贝叶斯规则(如下图所示) , 贝叶斯搜索是从随机搜索开始 , 基于贝叶斯理论逐渐缩小搜索空间 , 即通过随机搜索将可能超参数的先验分布更新为后验分布 。 在考虑已知信息下匡助缩小“好的”超参数组合的搜索空间 。相较随机搜索而言 , 贝叶斯搜索会花费更多时间 , 但仍比网格搜索花费更多时间 。 原理详见如下链接 。
今日必看|调整超参数:决定模型是“金子”仍是“垃圾”!
本文插图
图片来源:luminousmen
贝叶斯搜索的上风:
搜索的效率较高 。贝叶斯搜索的劣势:
可能会落入最优化陷阱 。scikit-learn不提供贝叶斯随机搜索的模块 , 因此 , 此处代码略 。


推荐阅读