秋招知识点记录(二)——XGBoost,GBDT与RF
Random Forest和GBDT区别如下:
- RF的基分类器可以是分类树也可以是回归树,GBDT只能是回归树。
- RF不同基分类器可以并行,GBDT只能串行。
- RF最终结果采用的策略是多数投票、一票否决、加权投票等,而GBDT是将所有结果(加权)累加起来。
- RF对异常值不敏感,GBDT对异常值敏感
- RF对训练集一视同仁,GBDT基于Boosting思想,基于权值,分类器越弱,权值越小
- RF主要减少模型方差,所以在噪声较大的数据上容易过拟合,而GBDT主要较少模型偏差。
- RF随机选择样本,GBDT使用所有样本。
Xgboost就是GBDT的一种,所以Xgboost和RF的区别和GBDT一样。
GBDT和Xgboost的区别如下:
- 基分类器的选择: 传统GBDT以CART作为基分类器,XGBoost还支持线性分类器,这个时候XGBoost相当于带L1和L2正则化项的逻辑斯蒂回归(分类问题)或者线性回归(回归问题)。
- 梯度信息: 传统GBDT只引入了一阶导数信息,Xgboost引入了一阶导数和二阶导数信息,其对目标函数引入了二阶近似,求得解析解, 用解析解作为Gain来建立决策树, 使得目标函数最优(Gain求到的是解析解)。另外,XGBoost工具支持自定义损失函数,只要函数可一阶和二阶求导。
- 正则项: Xgboost引入了正则项部分,这是传统GBDT中没有的。加入正则项可以控制模型的复杂度,防止过拟合。
- 特征采样: Xgboost引入了特征子采样,像随机森林那样,既可以降低过拟合,也可以减少计算。
节点分裂方式:GBDT是用的基尼系数,XGBoost是经过优化推导后的。 - 并行化: 传统GBDT由于树之间的强依赖关系是无法实现并行处理的,但是Xgboost支持并行处理,XGBoost的并行不是在模型上的并行,而是在特征上的并行,将特征列排序后以block的形式存储在内存中,在后面的迭代中重复使用这个结构。这个block也使得并行化成为了可能,其次在进行节点分裂时,计算每个特征的增益,最终选择增益最大的那个特征去做分割,那么各个特征的增益计算就可以开多线程进行。
- 除此之外,Xgboost实现了分裂点寻找近似算法、缺失值处理、列抽样(降低过拟合,还能减少计算)等包括一些工程上的优化,LightGBM是Xgboost的更高效实现。
Reference:
[1]原文链接:https://blog.csdn.net/quiet_girl/article/details/88756843