xgboost中的`tree_method ='exact'是否真的意味着精确的贪婪算法?

时间:2019-03-10 06:39:32

标签: xgboost

xgboost中的tree_method ='exact'真的意味着使用精确的贪婪算法进行拆分查找吗? 我问这个问题是因为xgboost运行得很快。这是我用于运行测试的脚本 从xgboost导入XGBRegressor作为rr 将numpy导入为np 从sklearn.model_selection导入train_test_split 进口泡菜 导入系统 从进口时间开始 t1 =时间() 数据= sys.argv [1] 使用open(data,'rb')作为源:     数据= pickle.load(源) np.random.shuffle(数据) x = [数据中项目的[item [0]] y = [针对数据中项目的[item [1]] x_train,x_val,y_train,y_val = train_test_split(x,y,test_size = 0.2,random_state = 100) eval_set = [(x_train,y_train),(x_val,y_val)] #确切的型号 model_exact = rr(max_depth = 5,                  n_estimators = 1,                  slient = False,                  min_child_weight = 0,                  tree_method ='精确') model_exact.fit(x_train,                 y_train,                 eval_set = eval_set,                 eval_metric =“ mae”,                 early_stopping_rounds = 30) t2 =时间() print(f“使用时间:{t2-t1}”) 用于测试的腌制数据已在此处上传。 每个实例中有96个功能部件,总共11450个实例。 xgboost通过在单核(1.3 GHz Intel Core i5)上运行找到了0.9804270267486572s中的第一个拆分。如果xgboost实际上对所有可能的分割都进行了贪婪搜索,则意味着xgboost仅在0.9804270267486572s中就可以计算11450 x 96 = 1099200个分割! xgboost真的那么强大吗?还是我误会了tree_method =确切?

0 个答案:

没有答案