Python3机器学习实践:集成学习之CatBoost

作者 : 开心源码 本文共1748个字,预计阅读时间需要5分钟 发布时间: 2022-05-12 共150人阅读

catboost.png

CatBoost是俄罗斯的搜索巨头Yandex在2017年开源的机器学习库,是Gradient Boosting(梯度提升) + Categorical Features(类别型特征),也是基于梯度提升决策树的机器学习框架。

image

一、CatBoost技术详情

1,类别型特征的解决

CatBoost采用了一种有效的策略,降低过拟合的同时也保证了一律数据集都可用于学习。也就是对数据集进行随机排列,计算相同类别值的样本的平均标签值时,只是将这个样本之前的样本的标签值归入计算。

2,特征组合

为当前树构造新的分割点时,CatBoost会采用贪婪的策略考虑组合。对于树的第一次分割,不考虑任何组合。对于下一个分割,CatBoost将当前树的所有组合、类别型特征与数据集中的所有类别型特征相结合。组合被动态地转换为数字。CatBoost还通过以下方式生成数值型特征和类别型特征的组合:树选择的所有分割点都被视为具备两个值的类别型特征,并且组合方式和类别型特征一样。

3,克服梯度偏差

CatBoost,和所有标准梯度提升算法一样,都是通过构建新树来拟合当前模型的梯度。然而,所有经典的提升算法都存在由有偏的点态梯度预计引起的过拟合问题。许多利用GBDT技术的算法(例如,XGBoost、LightGBM),构建一棵树分为两个阶段:选择树结构和在树结构固定后计算叶子节点的值。为了选择最佳的树结构,算法通过枚举不同的分割,用这些分割构建树,对得到的叶子节点中计算值,而后对得到的树计算评分,最后选择最佳的分割。两个阶段叶子节点的值都是被当做梯度[8]或者牛顿步长的近似值来计算。CatBoost第一阶段采用梯度步长的无偏预计,第二阶段使用传统的GBDT方案执行。

4,快速评分

CatBoost使用oblivious树作为基本预测器,这种树是平衡的,不太容易过拟合。oblivious树中,每个叶子节点的索引可以被编码为长度等于树深度的二进制向量。CatBoost首先将所有浮点特征、统计信息和独热编码特征进行二值化,而后使用二进制特征来计算模型预测值。

5,基于GPU实现快速学习

5.1 密集的数值特征
任何GBDT算法,对于密集的数值特征数据集来说,搜索最佳分割是建立决策树时的主要计算负担。CatBoost利用oblivious决策树作为基础模型,并将特征离散化到固定数量的箱子中以减少内存使用。就GPU内存使用而言,CatBoost至少与LightGBM一样有效。主要改进之处就是利用了一种不依赖于原子操作的直方图计算方法。

5.2 类别型特征
CatBoost使用完美哈希来存储类别特征的值,以减少内存使用。因为GPU内存的限制,在CPU RAM中存储按位压缩的完美哈希,以及要求的数据流、重叠计算和内存等操作。通过哈希来分组观察。在每个组中,我们需要计算少量统计量的前缀和。该统计量的计算使用分段扫描GPU图元实现。

5.3 多GPU支持
CatBoost中的GPU实现可支持多个GPU。分布式树学习可以通过数据或者特征进行并行化。CatBoost采用多个学习数据集排列的计算方案,在训练期间计算分类特征的统计数据。

image

二、CatBoost的优点

性能卓越:在性能方面可以匹敌任何先进的机器学习算法;
鲁棒性/强健性:它减少了对很多超参数调优的需求,并降低了过度拟合的机会,这也使得模型变得更加具备通用性;
易于使用:提供与scikit集成的Python接口,以及R和命令行界面;
实用:可以解决类别型、数值型特征;可扩展:支持自己设置损失函数;

image

三、CatBoost实例

1,北京市Pm2.5预测

1.1 最优参数组合图

image

1.2 预测结果比照图

image

2,成年人收入分类

2.1 最优参数组合图

image

2.2 预测数据集结果展现

image

本文内容主要翻译自论文《CatBoost: gradient boosting with categorical features support》,英文原文以及全篇翻译点击。欢迎Fork,感谢Star!!!

实例代码:CatBoost,扫描下方二维码或者者微信公众号直接搜索”Python范儿“,关注微信公众号pythonfan, 获取更多实例和代码。

pythonfan.jpg

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Python3机器学习实践:集成学习之CatBoost

发表回复