DeTechn Blog

为什么xgboost训练会那么快,主要优化点是什么?

当数据集大的时候使用近似算法:在特征分裂时,根据特征k的分布确定个候选切分点。根据这些切分点把相应的样本放入对应的桶中,对每个桶的进行累加,最后通过遍历所有的候选分裂点来找到最佳分裂点。我们对这么多个桶进行分支判断,显然比起对n个样本找分裂节点更快捷。
Block与并行。分块并行,针对的是寻找最优切分点的过程中的排序部分。
CPU cache 命中优化。对于exact greedy算法中, 使用缓存预取。具体来说,对每个线程分配一个连续的buffer,读取梯度信息并存入Buffer中(这样就实现了非连续到连续的转化),然后再统计梯度信息。
Block预取、Block压缩、Block Sharding等

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »