1 项目简介
GBDT 的全称是 Gradient Boosting Decision Tree,梯度提升树,在传统机器学习算法中,GBDT 算的上 TOP3 的算法。
本开源项目完整讲解了梯度提升树的算法原理,剖析了 GBDT 的重要组件:决策树和梯度提升,包括 GBDT 算法的公式推导。本来试图将这些讲解完全编辑到公众号中,由于目前公众号对公式的支持很不友好,尽管花费了1个多小时,但公式的排版、格式依然混乱。Freemanzxp将其发布在博客中,地址如下:
将重点转向作者实现的完整代码和例子阐述中 。利用 python 实现 GBDT 算法的回归、二分类以及多分类,代码完整,注释详细,并带有例子及其可视化,帮助大家庖丁解牛地理解 GBDT.这个项目开源在了 Github 中,欢迎 star
https://github.com/Freemanzxp/GBDT_Simple_Tutorial
2 数据介绍
如下表所示:一组数据,特征为年龄、体重,身高为标签值。共有 5 条数据,前四条为训练样本,最后一条为要预测的样本。
3 完整代码
3.1 依赖环境
操作系统:Windows/Linux
编程语言:Python3
Python库:pandas、PIL、pydotplus,
其中pydotplus库会自动调用Graphviz,所以需要去Graphviz官网下载,先安装,再将安装目录下的添加到系统环境变量,此时如果再报错可以重启计算机。详细过程不再描述,网上很多解答。
3.2 文件结构
example.py 回归/二分类/多分类测试文件
GBDT 主模块文件夹
gbdt.py 梯度提升算法主框架
decision_tree.py 单颗树生成,包括节点划分和叶子结点生成
loss_function.py 损失函数
tree_plot.py 树的可视化
项目模块图
3.3 运行指南
回归测试:
二分类测试:
多分类测试:
其他可配置参数:-- 学习率,-- 构建的决策树数量即迭代次数,
-- 决策树的深度,-- 决策树节点分裂的最小数据数量,
-- 是否打印树的生成过程,-- 是否可视化树的结构.
结果文件: 运行后会生成文件夹,里面包含了每棵树的内部结构和生成日志
3.4 完整代码
列举项目的其中两个核心模块 gbdt.py 和 decision_tree.py 的完整代码:
decision_tree.py
输出的结果:
领取专属 10元无门槛券
私享最新 技术干货