原理
- boost思想,“三个臭皮匠顶一个诸葛亮”
- cart回归树,树的生成过程
- 最小化均方差,找到特征下的划分点
- 叶子节点的平均值,作为预测输出
- 一颗树迭代后的残差作为下一颗树的输入,再进行树的构造
- 预测时
- 新数据映射成特征后,经过多颗训练好的cart回归树
- 将叶子节点的预测值,累加起来,作为最终的预测值
mac上安装xgboost
依赖
- brew install llvm
- 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)
参数解释
- n_estimators
- n_estimators 这个参数叫迭代次数,也就是说生成树的个数
- learning_rate
- eta [缺省值=0.3,别名:learning_rate]
更新中减少的步长来防止过拟合。在每次boosting之后,可以直接获得新的特征权值,这样可以使得boosting更加鲁棒。
- 范围: [0,1]
- gamma
- gamma [缺省值=0,别名: min_split_loss](分裂最小loss)在节点分裂时,只有分裂后损失函数的值下降了,才会分裂这个节点。Gamma指定了节点分裂所需的最小损失函数下降值。 这个参数的值越大,算法越保守。这个参数的值和损失函数息息相关,所以是需要调整的。
- 范围: [0,∞]
- subsample
- subsample [缺省值=1]
这个参数控制对于每棵树,随机采样的比例。 减小这个参数的值,算法会更加保守,避免过拟合。但是,如果这个值设置得过小,它可能会导致欠拟合。 典型值:0.5-1,0.5代表平均采样,防止过拟合.
- 范围: (0,1]
- colsample_bylevel
- colsample_bytree [缺省值=1]
用来控制每棵随机采样的列数的占比(每一列是一个特征)。 典型值:0.5-1
- 范围: (0,1]
- max_depth
- max_depth [缺省值=6]
这个值为树的最大深度。 这个值也是用来避免过拟合的。max_depth越大,模型会学到更具体更局部的样本。设置为0代表没有限制
- 范围: [0,∞]
参考
- https://blog.csdn.net/u012328159/article/details/94616127
- https://blog.csdn.net/seasongirl/article/details/100178083
xgboost学习
原文:https://www.cnblogs.com/syw-home/p/12359698.html