集成模型中各成员独立执行RandomizedSearchCV的Sklearn处理机制问询
Sklearn集成模型自调优估计器的拟合机制问题
场景复现:含独立参数搜索的集成模型构建
导入库与回归数据集
from sklearn.ensemble import VotingRegressor, StackingRegressor, RandomForestRegressor from sklearn.tree import DecisionTreeRegressor from sklearn.datasets import make_regression from sklearn.model_selection import RandomizedSearchCV X, y = make_regression()
定义自调优估计器并构建Stacking集成
rf_param_dist = dict(n_estimators=[1, 2, 3, 4, 5]) rf_searcher = RandomizedSearchCV(RandomForestRegressor(), rf_param_dist, n_iter=5, cv=3) dt_param_dist = dict(max_depth=[4, 5, 6, 7, 8]) dt_searcher = RandomizedSearchCV(DecisionTreeRegressor(), dt_param_dist, n_iter=5, cv=3) ensemble = StackingRegressor( [ ('rf', rf_searcher), ('dt', dt_searcher) ] ).fit(X, y)
技术问题
Q1:循环依赖的处理
集成模型中存在两个未拟合的并行估计器,需先拟合完成才能执行ensemble.predict(...),但拟合任一估计器又需要集成模型的预测结果,Sklearn如何处理这种循环依赖?
Q2:独立参数调优的合理性
由于两个估计器独立执行参数调优,是否会各自错误假设对方的参数固定,从而导致优化问题定义不清晰?
参考:集成模型参数联合优化的正确方式
# 联合优化 ensemble = VotingRegressor( [ ('rf', RandomForestRegressor()), ('dt', DecisionTreeRegressor()) ] ) jointsearch_param_dist = dict( rf__n_estimators=[1, 2, 3, 4, 5], dt__max_depth=[4, 5, 6, 7, 8] ) ensemble_jointsearch = RandomizedSearchCV(ensemble, jointsearch_param_dist)
内容的提问来源于stack exchange,提问作者MuhammedYunus
相关产品推荐
相关产品推荐

