首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

梯度提升树,分手快乐

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

输出的结果:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190502A0E91K00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券