kaggle教程--6--XGBoost

 

XGBoost是处理表格类数据(区别于图像,视频)的优秀模型

XGBoost是梯度模型决策树(Gradient Boosted Decision Trees)算法的实现

xgboost的原理:https://www.jianshu.com/p/7467e616f227

 

XGBoost参数调教:

n_estimators:表示经历几圈上面的循环,次数越多,越靠近过拟合,次数越低,越靠近欠拟合。一般范围在100-1000,很大程度取决于参数learning rate

early_stopping_rounds:当验证分数(validation score)不再提高时,停止循环迭代,即使没达到n_estimators指定的圈数

一般情况下,n_estimators设置一个较高的值,然后用early_stopping_rounds来找到更优的停止迭代时间

一般设置early_stopping_rounds = 5,这样在连续5个循环的验证分数(validation score)不再提高时,结束循环

使用early_stopping_rounds参数时,需要把训练数据分2部分为训练集和验证集。如果用全部训练数据做训练集,再把n_estimators 设置为之前找出的最佳圈数

my_model = XGBRegressor(n_estimators=1000)
my_model.fit(train_X, train_y, early_stopping_rounds=5,
eval_set=[(test_X, test_y)], verbose=False)

 

learning_rate:在每个预测模型产生的结果前乘以learning_rate,再把各个预测模型的结果相加,使每棵树的预测结果对最终结果的影响更小,这会减小过拟合的几率

一般的,我们可以设置一个高n_estimators,再设置一个learning_rate,这个会导致模型训练时间延长,但是模型准确率会提高

 

n_jobs:设置成和CPU核心数量一样的值,可以并行运算,加快fit步骤时间

 

xgboost 调参经验:

https://blog.csdn.net/u010414589/article/details/51153310

 

fit_transform和transform

#fit_transform是先找到train_X中的均值,这个步骤是fit,然后插值,这个步骤是transform

#transform是已经找到了均值,使用train_X的均值,插入到test_X中空值的位置
my_imputer = Imputer()
train_X = my_imputer.fit_transform(train_X)
test_X = my_imputer.transform(test_X)

 

 

#xgboost使用例子

from xgboost import XGBRegressor
#my_model = XGBRegressor(n_estimators=1000)
my_model = XGBRegressor(n_estimators=1000, learning_rate=0.02)
# Add silent=True to avoid printing out updates with each cycle
my_model.fit(train_X, train_y,verbose=True)
my_model.fit(train_X, train_y, early_stopping_rounds=10,
eval_set=[(val_X, val_y)],verbose=False)
print("best_iteration:"+str(my_model.get_booster().best_iteration))
# make predictions
predictions = my_model.predict(val_X)
xgb_val_mae = mean_absolute_error(predictions, val_y)
print("Validation MAE for XGBoost Model: {:,.0f}".format(xgb_val_mae))

my_model2 = XGBRegressor(n_estimators=1000, learning_rate=0.05)
my_model2.fit(final_train_data, y,verbose=False)
test_preds = my_model.predict(final_test_data)
print("finish")

posted on 2019-03-07 13:53  wangzhonghan  阅读(410)  评论(0)    收藏  举报

导航