xgboost 算法
目前集成学习方法大致可分为两大类:
第一类是个体学习器之间存在强依赖关系、必须串行生成的序列化方法,这种方法的代表是“Boosting”;
第二类是个体学习器间不存在强依赖关系、可同时生成的并行化方法,它的代表是“Bagging”和“RandomForest”
boosting:提升方法是一个迭代的过程,通过改变样本分布,使得分类器聚集在那些很难分的样本上,对那些容易错分的数据加强学习,增加错分数据的权重,这样错分的数据再下一轮的迭代就有更大的作用(对错分数据进行惩罚)。数据的权重有两个作用,一方面我们可以使用这些权值作为抽样分布,进行对数据的抽样,另一方面分类器可以使用权值学习有利于高权重样本的分类器。
xgboost中的 XGBClassifier 方法:
XGBClassifier(max_depth, learning_rate, n_estimators, silent, objective, booster, n_jobs,
nthread, gamma, min_child_weight, max_delta_step, subsample, colsample_bytree,
colsample_bylevel, reg_alpha, reg_lambda, scale_pos_weight, base_score, random_state,
seed, missing)
3.参数解释:
- max_depth :每棵二叉树的最大深度,默认是6; 值越大,越容易过拟合,越小,容易欠拟合
- learning_rate (原来是eta):学习率,控制每次迭代更新权重的步长,默认0.3,值越小,训练越慢。常用:0.01-0.2
- n_esitimator: 决策树的棵树,即总共迭代的次数
- silent: silent=0,为输出中间过程;1 为不输出中间过程,IDE会输出运行状态。默认是0, 输出运行状态,方便理解。其实设置为 1 时,还是会打印输出。
- objective 目标函数(可自定义目标函数):使用方法: objective = 'reg:linear'
回归任务
- reg:linear (默认)
- reg:logistic
二分类
- binary:logistic 概率
- binary:logitraw 类别
多分类
- multi:softmax num_class=n 返回类别
- multi:softprob num_class=n 返回概率
rank:pairwise
- booster : 设置基分类器: booster = gbtree 以树模型为基分类器; gblinear 以线性模型为基分类器
- gamma: 惩罚系数
- min_child_weight:最小叶子结点权重
- max_delta_step:
- subsample:随机选择 多少样本建立决策树 ,float 型,如:0.8 取80 % 的样本
- colsample_bytree:随机选择多少样本特征建立决策树
- reg_alpha:L1 正则化系数 float
- reg_lambda:L2 正则化系数
- scale_pos_weight:解决样本个数不平衡问题,设置正样本的权重。当正负样本比例为1::10时,scale_pos_weight=10
- random_state, seed: 随机种子,使用random_state
XGBClassifier().fit() 参数
fit(self, X, y, sample_weight=None, eval_set=None, eval_metric=None, early_stopping_rounds=None, verbose=True, xgb_model=None, sample_weight_eval_set=None)
参数解释:
- sample_weight: 样本权重
- eval_set: list 型,如:eval_set = [(X_test, y_test)],。 设置自定义样本,将使用列表的样本作为验证集,当迭代几次分数没提高,则终止。与 4 相关。
- eval_metric: 评估标准。 使用方法: eval_metric = 'error'
- 回归任务(默认rmse)
- rmse--均方根误差
- mae--平均绝对误差
- 分类任务(默认error)
- auc--roc曲线下面积
- error--错误率(二分类)
- merror--错误率(多分类)
- logloss--负对数似然函数(二分类)
- mlogloss--负对数似然函数(多分类)
- early_stopping_rounds: int 型,当连续迭代几次时,分数没有提高后,提前终止训练。
- sample_weight_eval_set: list 型, 每个特征样本作为验证集的权重。