XGBoost
伽罗瓦群
I like writing codes.
展开
-
XGBoost (1) 从调用谈起
咕嘟辕马 — XGBoost (1)XGBoost 是华盛顿大学陈天奇于 2016年主创的算法(看上去 Carlos Guestrin 是他的导师),在各类数据科学比赛(Kaggle)中有着广泛应用(2016年左右是这个算法比较红的年份),并且取得了良好的成绩。许多跟随者“站在巨人的肩膀上”,进一步开发新的算法(知名的算法至少有微软的 LightGBM,这个算法我目前还不大懂,TODO)。无论如...原创 2019-02-15 14:50:38 · 1064 阅读 · 1 评论 -
XGBoost (2) Python 训练模型接口源码分析
回顾上一回,我们举了一个 XGBoost 的应用实例,用以 “判断野生蘑菇在什么情况下可以吃?”。现在我们打算挑战一下,看看算法是如何工作的。这不是一件很容易的事情,因为一个算法需要排除很多意外情形、还要会用 python 调用 C++ 的动态库,这都无形中给算法披上了一层又一层的外衣。在这篇文章中,我们不涉及 C++ 动态库的实现,先关注 python 层的逻辑关系。我们先来回顾一下代码:...原创 2019-02-16 14:52:06 · 800 阅读 · 1 评论 -
XGBoost (5) C++ 命令行训练源码分析
回顾与本文目标前一篇文章(第 4 篇)中,我们在命令行接口模式下运行 XGBoost 成功。在第 3 篇中,我们在 Python 接口下运行了 XGBoost,并且分析了其中的 PredictRaw 函数。但这里的代码读得有点乱。本文从头开始,一个一个函数解释代码是如何运行的。起点 main() @ src/cli_main.ccint main(int argc, char *argv[...原创 2019-02-21 21:55:40 · 2024 阅读 · 0 评论 -
XGBoost (3) C++ 训练模型源码分析之一 ——求预测值
回顾与本文目标还记得上一篇博文中,我们回顾了 python 的训练接口,本文我们深挖 XGBoost 的 C++ 源代码。从训练迭代内核 XGBoosterUpdateOneIter() 函数开始讨论。争取对训练过程再有更多感性认识。进行一步迭代 XGBoosterUpdateOneIter()我们在 c_api.cc 中找到了 XGBoosterUpdateOneIter() 的源代码。不...原创 2019-02-17 14:48:24 · 1936 阅读 · 0 评论 -
XGBoost (4) C++ 训练模型源码分析之二 —— 调试源代码
回顾与本文目标前一篇文章基本上是在通过人肉的方式试图去做编译器应该做的事情。看上去不是一个聪明的办法(居然现在才想起来,我也是醉了)。换一个思路。我们现在试图用编译、运行的方式来理解 XGBoost 库。注意到 源代码有 cli_main.cc 这样的文件存在。意味着我们可以使用命令行调用库。基本思路与过程为此,我们下载了 JetBrains 的 CLion 作为 IDE (免费试用 30 ...原创 2019-02-19 15:55:35 · 992 阅读 · 0 评论