Skip to content

Commit

Permalink
xgboost部分补充
Browse files Browse the repository at this point in the history
  • Loading branch information
shataowei committed Nov 20, 2019
1 parent 8af8d46 commit 4c3a38d
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 24 deletions.
39 changes: 19 additions & 20 deletions .idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 13 additions & 4 deletions 机器学习/集成学习/Xgboost.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,19 @@
- 实现做了面向体系结构的优化,针对cache和内存做了性能优化

# xgboost和gbdt的区别?
- gbdt用的是cart回归树作为基模型,xgboost还可以用线性模型,加上天生的正则项,就是带L1和L2逻辑回归(分类)和线性回归(回归)
- gbdt对loss是泰勒一阶展开,xgboost是泰勒二阶展开
- gbdt没有在loss中带入结点个数和预测值的正则项
- xgboost在对特征进行了分block预排序,使得在做特征分裂的时候,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行
- 模型优化上:
- 基模型的优化:
- - gbdt用的是cart回归树作为基模型,xgboost还可以用线性模型,加上天生的正则项,就是带L1和L2逻辑回归(分类)和线性回归(回归)
- 损失函数上的优化:
- gbdt对loss是泰勒一阶展开,xgboost是泰勒二阶展开
- gbdt没有在loss中带入结点个数和预测值的正则项
- 特征选择上的优化:
- 实现了一种分裂节点寻找的近似算法,用于加速和减小内存消耗,而不是gbdt的暴力搜索
- 节点分裂算法解决了缺失值方向的问题,gbdt则是沿用了cart的方法进行加权
- 工程优化上:
- xgboost在对特征进行了分block预排序,使得在做特征分裂的时候,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行
- cache-aware, out-of-core computation
- 支持分布式计算可以运行在MPI,YARN上,得益于底层支持容错的分布式通信框架rabit

# xgboost优化目标/损失函数改变成什么样?
- 原始:![](https://tva1.sinaimg.cn/large/006y8mN6gy1g94mjezeisj307401fmx0.jpg)
Expand Down

0 comments on commit 4c3a38d

Please sign in to comment.