xgboost学习

原理

  1. boost思想,“三个臭皮匠顶一个诸葛亮”
  2. cart回归树,树的生成过程
    1. 最小化均方差,找到特征下的划分点
    2. 叶子节点的平均值,作为预测输出
    3. 一颗树迭代后的残差作为下一颗树的输入,再进行树的构造
  3. 预测时
    1. 新数据映射成特征后,经过多颗训练好的cart回归树
    2. 将叶子节点的预测值,累加起来,作为最终的预测值 

mac上安装xgboost

依赖

  1. brew install llvm
  2. brew install libomp

python3 -m pip install xgboost

xgboost预测二手车交易价格任务(https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.12281978.0.0.6802593ayBt85D&postId=95422

 

xgr = xgb.XGBRegressor(n_estimators=120, learning_rate=0.1, gamma=0, subsample=0.8,
colsample_bylevel=0.9, max_depth=7)

 参数解释

  1. n_estimators
    1. n_estimators 这个参数叫迭代次数,也就是说生成树的个数
  2. learning_rate
    1. eta [缺省值=0.3,别名:learning_rate]
      更新中减少的步长来防止过拟合。在每次boosting之后,可以直接获得新的特征权值,这样可以使得boosting更加鲁棒。
    2. 范围: [0,1]
  3. gamma
    1. gamma [缺省值=0,别名: min_split_loss](分裂最小loss)在节点分裂时,只有分裂后损失函数的值下降了,才会分裂这个节点。Gamma指定了节点分裂所需的最小损失函数下降值。 这个参数的值越大,算法越保守。这个参数的值和损失函数息息相关,所以是需要调整的。
    2. 范围: [0,∞]
  4. subsample
    1. subsample [缺省值=1]
      这个参数控制对于每棵树,随机采样的比例。 减小这个参数的值,算法会更加保守,避免过拟合。但是,如果这个值设置得过小,它可能会导致欠拟合。 典型值:0.5-1,0.5代表平均采样,防止过拟合.
    2. 范围: (0,1]
  5. colsample_bylevel
    1. colsample_bytree [缺省值=1]
      用来控制每棵随机采样的列数的占比(每一列是一个特征)。 典型值:0.5-1
    2. 范围: (0,1]
  6. max_depth
    1. max_depth [缺省值=6]
      这个值为树的最大深度。 这个值也是用来避免过拟合的。max_depth越大,模型会学到更具体更局部的样本。设置为0代表没有限制
    2. 范围: [0,∞]

参考

  1. https://blog.csdn.net/u012328159/article/details/94616127
  2. https://blog.csdn.net/seasongirl/article/details/100178083
posted @ 2020-06-07 07:36  威威后花园  阅读(164)  评论(0编辑  收藏  举报