xgboost参数及调参

常规参数General Parameters

  1. booster[default=gbtree]:选择基分类器,可以是:gbtree,gblinear或者dart。gbtree和draf基于树模型,而gblinear基于线性模型。
  2. slient[default=0]:是否有运行信息输出,设置为1则没有运行信息输出。
  3. nthread[default to maximum number of threads available if not set]:线程数,默认使用能使用的最大线程数。

模型参数Booster Parameters

  1. eta[default=0.3]:收缩参数,也即学习率。用于更新叶节点权重时,乘该系数,避免步长过大。参数值越大,越可能无法收敛。把eta设置的小一些,小的学习率可以使后面的学习更加仔细。
  2. min_child_weight[default=1]:每个叶子里面的h的和至少是多少,这个参数非常影响结果,控制叶子节点中二阶导的和的最小值,该参数越小,越容易过拟合。
  3. max_depth[default=6]:每棵树的最大深度,该参数设置越大,越容易过拟合。
  4. max_leafnodes:最大叶节点数,和maxdepth类似。
  5. gamma[default=0]:后剪枝时,用于控制是否后剪枝。
  6. max_delta_step[default=0]:该参数可以使得更新更加平缓,如果取0表示没有约束,如果取正值则使得更新步骤更加保守,防止更新时迈的步子太大。
  7. subsample[default=1]:样本随机样本,该参数越大,越容易过拟合,但设置过大也会造成过拟合。
  8. colsample_bytree[default=1]:列采样,对每棵树生成时用的特征进行列采样,一般设置为0.5-1
  9. lambda[default=1]:模型的L2正则化参数,参数越大,越不容易过拟合。
  10. alpha[default=0]:模型的L1正则化参数,参数越大,越不容易过拟合。
  11. scale_pos_weight[default=1]:如果取值大于0,在类别样本偏斜时,有助于快速收敛。

学习任务参数(Learning Task Parameters)

  1. objective[default=reg:linear]:定义最小化损失函数类型,常用参数:
    • binary:logistic –二元分类的逻辑回归模型,返回预测概率(p(y=1|x,w))
    • multi:softmax –使用softmax objective的多类分类模型,返回预测的分类。这里需要设置一个额外的num_class参数,表示类的个数。
    • multi:softprob –与softmax相同,但是返回每个数据点属于每个类的预测概率。
  2. eval_metric[default according to objective]:用于衡量验证数据的参数,即是各评价标准,常用参数如下:
    • rmse – root mean square error
    • mae – mean absolute error
    • logloss – negative log-likelihood
    • error – Binary classification error rate (0.5 threshold)
    • merror – Multiclass classification error rate
    • mlogloss – Multiclass logloss
    • auc: Area under the curve
  3. seed[default=0]:随机种子,用于产生可复现的结果。
    这里,xgboost与sklearn的命名风格有点区别,如:
    • eta->learning_rate
    • lambda->reg_lambda
    • alpha->reg_alpha

参数调优

  1. import必要的库

    #Import libraries:
    import pandas as pd
    import numpy as np
    import xgboost as xgb
    from xgboost.sklearn import XGBClassifier
    from sklearn import cross_validation, metrics   #Additional     scklearn functions
    from sklearn.grid_search import GridSearchCV   #Perforing grid search
    
    
    import matplotlib.pylab as plt
    %matplotlib inline
    from matplotlib.pylab import rcParams
    rcParams['figure.figsize'] = 12, 4
    
    
    train = pd.read_csv('train_modified.csv')
    target = 'Disbursed'
    IDcol = 'ID'
    

注意,这里import两种XGBoost: - xgb-直接引用xgboost,接下来会用到其中的‘cv’函数。 - XGBClassifier-是xgboost的sklearn包。这个包允许我们使用Grid Search和并行处理。 参考链接:http://blog.csdn.net/u010657489/article/details/51952785