XGBoost算法
XGBoost在sklearn包中没有,需要下载.whl文件安装。但sklearn为XGBoost提供了封装接口。
具体的参数介绍:http://xgboost.readthedocs.io/en/latest/python/python_api.html#module-xgboost.sklearn
回归XGBRegressor和分类XGBClassifier两种
重要的参数如下:(两种中共有的)
1.n_estimators:弱学习器个数,默认100
2.learning_rate:学习速率,默认是0.1,一般范围是[0.01-0.2]
3.max_depth:树的最大深度,默认3,一般是[3-10]
4.min_child_weight:最小叶子节点样本权重和,当对节点进行划分后得到的叶子节点所有样本权重的和小于该值,则不进行划分。当它的值较大时,可以避免模型学习到局部的特殊样本,防止过拟合。但太大也会导致欠拟合。默认是1
5.subsample:构建单个树时采样的百分比,默认是1,表示所有样本都用于采样,调参范围一般在[0.5,1]之间。
6.colsample_bytree:相当于max_feature,表示选取多少比例的特征参与树构建过程中的特征选择,调参范围一般在[0.5,1]之间。
7.gamma:如果分裂能够使损失函数减小的值大于gamma,则这个节点才分裂。gamma设置了这个减小的最低阈值。如果gamma设置为0,表示只要使得损失函数减少,就分裂。默认是0,一般在0附近,较小
8.lambda:L2正则项系数,防止过拟合。由于gamma函数提供了一种更加有效地降低过拟合的方法,大部分人很少会用到这个参数
9.alpha:L1正则化项,L1和L2都是为了降低模型复杂度
10.objective:定义学习任务及相应的学习目标,“binary:logistic” –二分类的逻辑回归问题,输出为概率。
11.seed:随机种子
调参的顺序:
①n_estimators和learning_rate
②max_depth和min_child_weight
③gamma
④subsample和colsample_bytree
⑤lambda和alpha