t屠龙刀--XGBoost
XGBoost作为一款经过优化的分布式梯度提升(Gradient Boosting)库,具有高效,灵活和高可移植性的特点。基于梯度提升框架,XGBoost实现了并行方式的决策树提升(Tree Boosting),从而能够快速准确地解决各种数据科学问题。XGBoost不仅支持各种单机操作系统(如:Windows,Linus和OS X),而且支持集群分布式计算(如:AWS,GCE,Azure和Yarn)和云数据流系统(如:Flink和Spark)。
XGBoost是由华盛顿大学(University of Washington)的陈天奇作为 Distributed (Deep) Machine Learning Community (DMLC) 组员所开发的一个研究项目。在陈天奇与队友一起赢得了Higgs Machine Learning Challenge后,许多的数据科学竞赛队伍使用XGBoost并获得了冠军,促进了该工具在数据科学应用中的广泛使用。
倚天剑——LightGBM
LightGBM(Light Gradient Boosting Machine)同样是一款基于决策树算法的分布式梯度提升框架。为了满足工业界缩短模型计算时间的需求,LightGBM的设计思路主要是两点:1. 减小数据对内存的使用,保证单个机器在不牺牲速度的情况下,尽可能地用上更多的数据;2. 减小通信的代价,提升多机并行时的效率,实现在计算上的线性加速。由此可见,LightGBM的设计初衷就是提供一个快速高效、低内存占用、高准确度、支持并行和大规模数据处理的数据科学工具。
LightGBM是微软旗下的Distributed Machine Learning Toolkit (DMKT)的一个项目,由2014年首届阿里巴巴大数据竞赛获胜者之一柯国霖主持开发。虽然其开源时间才仅仅2个月,但是其快速高效的特点已经在数据科学竞赛中崭露头角。Allstate Claims Severity竞赛中的冠军解决方案里就使用了LightGBM,并对其大嘉赞赏。
屠龙刀VS倚天剑
首先谈谈他们的相同之处。简单来说,XGBoost和LightGBM都是基于决策树提升(Tree Boosting)的工具,都拥有对输入要求不敏感、计算复杂度不高和效果好的特点,适合在工业界中进行大量的应用。
其不同之处在于:XGBoost作为屠龙刀,刚劲有力,无坚不摧;LightGBM作为倚天剑,剑如飞风,唯快不破。
XGBoost使用的是pre-sorted算法,能够更精确的找到数据分隔点;LightGBM使用的是histogram算法,占用的内存更低,数据分隔的复杂度更低。
XGBoost采用的是level(depth)-wise生长策略,如Figure 1所示,能够同时分裂同一层的叶子,从而进行多线程优化,不容易过拟合;但不加区分的对待同一层的叶子,带来了很多没必要的开销。
XGBoost 使用示例
Light GBM 使用示例