前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Catboost:超越Lightgbm和XGBoost的又一个boost算法神器

Catboost:超越Lightgbm和XGBoost的又一个boost算法神器

作者头像
机器学习AI算法工程
发布2019-10-28 20:32:33
2K0
发布2019-10-28 20:32:33
举报

今天介绍一个超级简单并且又极其实用的boosting算法包Catboost,据开发者所说这一boosting算法是超越Lightgbm和XGBoost的又一个神器。

论文链接

https://arxiv.org/pdf/1706.09516.pdf

它可以很容易地与谷歌的TensorFlow和苹果的核心ML等深度学习框架集成。它可以处理各种数据类型,如音频、文本、图像(包括历史数据)。帮助解决当今企业面临的各种问题。最重要的是,它提供了强大的准确性。

它在两方面特别强大:

它不需要其他机器学习方法通常需要的大量数据培训,就能得到最先进的结果

为伴随许多业务问题而来的更具描述性的数据格式提供强大的支持

CatBoost名称来源于“Category”和“boost”两个单词。其中“Boost”来源于梯度增强机器学习算法,因为这个库是基于梯度增强库的。梯度增强是一种功能强大的机器学习算法,广泛应用于欺诈检测、推荐项、预测等多种类型的业务挑战,具有良好的性能。它还可以以相对较少的数据返回非常好的结果,不像DL模型需要从大量数据中学习。

一、 CatBoost库的优点

性能:CatBoost提供最先进的结果,在性能方面与任何领先的机器学习算法相比都具有竞争力。

自动处理分类特征:CatBoost无需对数据特征进行任何显式的预处理就可以将类别转换为数字。CatBoost使用关于分类特征组合以及分类和数字特征组合的各种统计信息将分类值转换为数字。

鲁棒性:它减少了对广泛的超参数优化的需要,并降低了过拟合的机会,这也会导致更一般化的模型。CatBoost的参数包括树的数量、学习率、正则化、树的深度、折叠尺寸、装袋温度等。

易于使用:您可以从命令行使用CatBoost为Python和R用户提供方便的API。

二、CatBoost与其他boost库进行比较

我们有多个boost库,如XGBoost、H2O和LightGBM,它们都能很好地解决各种问题。CatBoost在标准ML数据集上与竞争对手进行了性能对比:

上面的对比显示了测试数据的log-loss值,在大多数情况下CatBoost的log-loss值是最低的。它清楚地表明,CatBoost在调优和默认模型上的性能都更好。除此之外,CatBoost不需要将数据集转换为任何特定格式。

Python安装:

pip install catboost

四、使用CatBoost解决ML挑战

CatBoost库既可以解决分类问题,也可以解决回归问题。对于分类,您可以使用“CatBoostClassifier”和“CatBoostRegressor”进行回归。

在本文中,我将使用CatBoost解决“Big Mart Sales”实践问题。这是一个回归的挑战,所以我们将使用CatBoostRegressor。

完整代码

案例一

AI项目体验地址 https://loveai.tech

案例二

这里我们可以观察一下数据的特征列,这里有很多列特征比如广告的宽高,是否可以下载,是否会跳转等一些特征,而且特征的数据类型各不一样,有数值型(creative_height),布尔型(creative_is_js)等不同类型的特征。

下图我们对所有特征做了一个统计,发现整个训练数据集一共有34列,除去标签列,整个数据集一共有33个特征,其中6个为布尔型特征,2个为浮点型特征,18个整型特征,还有8个对象型特征。

如果按照正常的算法,此时应该将非数值型特征通过各种数据预处理手段,各种编码方式转化为数值型特征。而在catboost中你根本不用费心干这些,你只需要告诉算法,哪些特征属于类别特征,它会自动帮你处理。代码如下所示:

最后就是将数据喂给算法,训练走起来。

将plot = ture 打开后,catboot包还提供了非常炫酷的训练可视化功能,从下图可以看到我的Logloss正在不停的下降。

训练结束后,通过model.feature_importances_属性,我们可以拿到这些特征的重要程度数据,特征的重要性程度可以帮助我们分析出一些有用的信息。

执行上方代码,我们可以拿到特征重要程度的可视化结构,从下图我们发现campaign_id是用户是否点击这个广告的最关键的影响因子。

至此整个catboot的优点和使用方法都介绍完了,是不是觉得十分简单易用,而且功能强大。深度学习,神经网络减弱了我们对特征工程的依赖,catboost也在朝着这方面努力。所以有时候碰到需要特别多的前期数据处理和特征数值化的任务时,可以尝试用一下catboost

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习AI算法工程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档