您当前的位置:首页 > 电脑百科 > 人工智能

深度学习框架 CatBoost 介绍

时间:2020-09-18 10:42:47  来源:  作者:

我翻阅了CatBoost的文档之后,我被这个强大的框架震惊了。CatBoost不仅在你提供给它的任何数据集上构建了一个最精确的模型,其中只需要最少的数据准备。它还提供了迄今为止最好的开源解释工具,以及快速生成模型的方法。

CatBoost引发了机器学习革命。学习使用它会提高你的技能。但更有趣的是,CatBoost对数据科学家(比如我自己)的现状构成了威胁,因为我认为在给定数据集的情况下,建立一个高精度的模型是很乏味的。但是CatBoost正在改变这种状况。它使得每个人都可以使用高度精确的模型。

深度学习框架 CatBoost 介绍

 

以极快的速度建立高精度模型

安装

你试过在笔记本电脑上安装XGBoost吗?那你肯定知道有多麻烦。但是在另一端安装运行CatBoost却是小菜一碟。

pip install catboost

这样就安装好了。

数据准备

与目前大多数可用的机器学习模型不同,CatBoost只需要最少的数据准备。它能处理:

  • 数值变量的缺失值
  • 没有编码的分类变量 注意:对于分类变量,必须事先处理缺失值。替换为新类别“missing”或最其他常用的类别。
  • 对于GPU用户,它也能处理文本变量。

不幸的是,我无法测试这个功能,因为我正在一台没有GPU的笔记本电脑上工作。

构建模型

与XGBoost一样,你拥有熟悉的sklearn语法和一些特定于CatBoost的附加功能。

from catboost import CatBoostClassifier # 或者 CatBoostRegressor
model_cb = CatBoostClassifier()
model_cb.fit(X_train, y_train)

或者,如果你想要一个关于模型如何学习以及是否开始过拟合的可视化界面,请使用plot=True并在eval_set参数中插入测试集:

from catboost import CatBoostClassifier # 或者 CatBoostRegressor
model_cb = CatBoostClassifier()
model_cb.fit(X_train, y_train, plot=True, eval_set=(X_test, y_test))
深度学习框架 CatBoost 介绍

 

注意,你可以同时显示多个度量,甚至更人性化的度量,如准确度或精确度。此处列出了支持的指标:https://catboost.ai/docs/concepts/loss-functions-classification.html

请参见下面的示例:

深度学习框架 CatBoost 介绍

 

你甚至可以使用交叉验证,在不同的分割上观察模型准确度的平均和标准偏差:

深度学习框架 CatBoost 介绍

 

微调

CatBoost与XGBoost非常相似。要对模型进行适当的微调,首先将early_stopping_rounds进行设置(如10或50),然后开始调整模型的参数。

训练速度

无GPU

从他们的基准测试中,你可以看到CatBoost比XGBoost更快,并且与LightGBM相对类似。众所周知,LightGBM的训练速度很快。

有GPU

不过,说到GPU,真正的魔力就来了。

深度学习框架 CatBoost 介绍

 

即使使用相对较老的GPU,如K40(2013年发布),训练时间也将被至少快4倍,而其他更新的CPU最多能快40倍。

模型的解释

CatBoost的作者们明白的一件事是,这不仅仅是一个玩精确度的游戏。为什么在XGBoost和LightGBM可用时要使用CatBoost呢。所以,在可解释性方面,CatBoost提供了开箱即用的函数。

特征重要性

CatBoost提供了3种不同的方法:PredictionValuesChange、LossFunctionChange和InternalFeatureImportance。这里有详细的文档:https://catboost.ai/docs/concepts/fstr.html

局部可理解性

对于局部可理解性,CatBoost附带SHAP,SHAP通常被认为是唯一可靠的方法。

shap_values = model.get_feature_importance(Pool(X, y), type='ShapValues')

官方也提供了教程:https://github.com/catboost/tutorials/blob/master/model_analysis/shap_values_tutorial.ipynb。你可以使用进行局部可理解性操作以及获取特征重要性。

深度学习框架 CatBoost 介绍

 

边际效应

到目前为止,这是我最喜欢的东西。随着高精度的商品化(特别是随着AutoML的兴起),当今从更深层次上了解这些高精度模型变得越来越重要。

根据经验,以下图表已成为模型分析的标准。CatBoos在它的包中直接提供它。

深度学习框架 CatBoost 介绍

 

在这个图标上你观察到

  1. 绿色的是数据分布
  2. 蓝色的是每个箱子的平均目标值
  3. 橙色的是每个箱子的平均预测值
  4. 红色的是部分依赖图( Partial Dependence

在生产中使用CatBoost模型

在生产中实现你的模型变得非常容易。下面是如何导出CatBoost模型。

使用.save_model()方法可以获得以下帮助文档:

深度学习框架 CatBoost 介绍

 

Python和C++的导出

model_cb.save_model(‘model_CatBoost.py’, format=’python’, pool=X_train)

执行后在你的repo中会有一个生成好的.py文件,如下所示:

深度学习框架 CatBoost 介绍

 

这时候模型已经准备好生产了!而且你不需要在机器上设置一个特定的环境来获得新的分数。只需要Python 3就可以了!

二进制文件输出

二进制显然是获得新数据的最快选择。代码中改成输出.cbm文件。

载入时使用以下代码重新加载模型:

from catboost import CatBoost
model = CatBoost()model.load_model('filename', format='cbm')

其他有用的提示

Verbose = 50

大多数模型中通常都有详细的输入,以便查看你过程的进展情况。CatBoost也有,但比其他的稍好一点。例如,使用verbose=50将每50次迭代显示一次训练错误,而不是每次迭代显示一次,因为如果有许多次迭代,这可能会很烦人。

深度学习框架 CatBoost 介绍

 

使用verbose=10训练同一模型。检查起来好多了。

深度学习框架 CatBoost 介绍

 

注意,剩余时间也会显示出来。

模型比较

微调模型需要时间。通常,你可能有几个好的参数列表。为了将其提升结果你甚至可以使用不同的参数集学习模型来比较,以便帮助你对要选择的参数的最终列表做出决定。

深度学习框架 CatBoost 介绍

 

训练时保存模型

你有一个大数据集,你害怕训练太久?你可以随时保存模型,这样你过程中的任何中断都不必意味着对模型进行重新拟合!以下是相关文档:https://catboost.ai/docs/features/snapshots.html#snapshots

学习资料

Catboost的文档非常有用,即使你认为你对很多模型了如指掌,他们的文档也可以帮助你。



Tags:深度学习   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
现如今,谈起人工智能我们都会想到的是“深度学习”(deep learning),无论是战胜李世石的AlphaGo,还是能够随意写出人类水平文章的GPT-3,它们的背后都依托的是这套算法。 它具有很好...【详细内容】
2021-09-14  Tags: 深度学习  点击:(104)  评论:(0)  加入收藏
0 前言大家好,欢迎来到“自由技艺”的知识小馆。今天我们来探讨下深度学习中的 Attention 机制,中文名为“注意力”。本文内容结构组织如下:1 为什么需要引入 Attention 机制?2...【详细内容】
2021-06-09  Tags: 深度学习  点击:(149)  评论:(0)  加入收藏
微信正用着的深度学习框架,现在你也可以上手试一试了。 就在最近,腾讯把这个名叫deepx_core的深度学习基础库正式对外开源。 相比于PyTorch、TensorFlow等流行深度学习框架,这位选手不仅具有通用性,还针对高维稀疏数据...【详细内容】
2021-04-06  Tags: 深度学习  点击:(205)  评论:(0)  加入收藏
为深度学习项目建立一个良好的环境不是一件容易的任务。因为需要处理的事情太多了:库必须匹配特定的版本,整个环境需要可以复制到其他机器上,所有东西都需要能够机器中的所有...【详细内容】
2021-03-05  Tags: 深度学习  点击:(96)  评论:(0)  加入收藏
深度学习是机器学习的一个子领域,它采用了一个特定的模型:一族通过某种方式连接起来的简单函数。由于这类模型的结构是受到人类大脑结构的启发而创造出来的...【详细内容】
2021-02-26  Tags: 深度学习  点击:(269)  评论:(0)  加入收藏
基于人工智能和深度学习方法的现代计算机视觉技术在过去10年里取得了显著进展。如今,它被用于图像分类、人脸识别、图像中物体的识别、视频分析和分类以及机器人和自动驾驶车辆的图像处理等应用上。...【详细内容】
2021-01-07  Tags: 深度学习  点击:(87)  评论:(0)  加入收藏
什么是深度学习深度学习有如下一些众所周知且被广泛接受的定义。(1)深度学习是机器学习的子集。(2)深度学习使用级联的多层(非线性)处理单元,称为人工神经网络(ANN),以及受大脑结构和...【详细内容】
2020-12-07  Tags: 深度学习  点击:(184)  评论:(0)  加入收藏
本文将介绍在 Windows 计算机上配置深度学习环境的全过程,其中涉及安装所需的工具和驱动软件。出人意料的是,即便只是配置深度学习环境,任务也不轻松。你很有可能在这个过程中犯错。我个人已经很多次从头开始配置深度学...【详细内容】
2020-12-02  Tags: 深度学习  点击:(97)  评论:(0)  加入收藏
一代深度学习框架研究于璠华为技术有限公司摘要:从人工智能的历史出发,简述深度学习发展历程以及目前的挑战,通过介绍新一代深度学习框架的特点,分析总体框架,阐述自动并行、自动...【详细内容】
2020-11-10  Tags: 深度学习  点击:(94)  评论:(0)  加入收藏
HelloGitHub 推出的《讲解开源项目》 系列。这一期是由亚马逊工程师:Keerthan Vasist,为我们讲解 DJL(完全由 Java 构建的深度学习平台)系列的第 4 篇。...【详细内容】
2020-11-03  Tags: 深度学习  点击:(86)  评论:(0)  加入收藏
▌简易百科推荐
作为数据科学家或机器学习从业者,将可解释性集成到机器学习模型中可以帮助决策者和其他利益相关者有更多的可见性并可以让他们理解模型输出决策的解释。在本文中,我将介绍两个...【详细内容】
2021-12-17  deephub    Tags:AI   点击:(15)  评论:(0)  加入收藏
基于算法的业务或者说AI的应用在这几年发展得很快。但是,在实际应用的场景中,我们经常会遇到一些非常奇怪的偏差现象。例如,Facebook将黑人标记为灵长类动物、城市图像识别系统...【详细内容】
2021-11-08  数据学习DataLearner    Tags:机器学习   点击:(32)  评论:(0)  加入收藏
11月2日召开的世界顶尖科学家数字未来论坛上,2013年诺贝尔化学奖得主迈克尔·莱维特、2014年诺贝尔生理学或医学奖得主爱德华·莫索尔、2007年图灵奖得主约瑟夫·斯发斯基、1986年图灵奖得主约翰·霍普克罗夫特、2002...【详细内容】
2021-11-03  张淑贤  证券时报  Tags:人工智能   点击:(39)  评论:(0)  加入收藏
鉴于物联网设备广泛部署、5G快速无线技术闪亮登场,把计算、存储和分析放在靠近数据生成的地方来处理,让边缘计算有了用武之地。 边缘计算正在改变全球数百万个设备处理和传输...【详细内容】
2021-10-26    计算机世界  Tags:边缘计算   点击:(45)  评论:(0)  加入收藏
这是几位机器学习权威专家汇总的725个机器学习术语表,非常全面了,值得收藏! 英文术语 中文翻译 0-1 Loss Function 0-1损失函数 Accept-Reject Samplin...【详细内容】
2021-10-21  Python部落    Tags:机器学习   点击:(43)  评论:(0)  加入收藏
要开始为开源项目做贡献,有一些先决条件:1. 学习一门编程语言:由于在开源贡献中你需要编写代码才能参与开发,你需要学习任意一门编程语言。根据项目的需要,在后期学习另一种语言...【详细内容】
2021-10-20  TSINGSEE青犀视频    Tags:机器学习   点击:(37)  评论:(0)  加入收藏
SimpleAI.人工智能、机器学习、深度学习还是遥不可及?来这里看看吧~ 从基本的概念、原理、公式,到用生动形象的例子去理解,到动手做实验去感知,到著名案例的学习,到用所学来实现...【详细内容】
2021-10-19  憨昊昊    Tags:神经网络   点击:(47)  评论:(0)  加入收藏
语言是人类思维的基础,当计算机具备了处理自然语言的能力,才具有真正智能的想象。自然语言处理(Natural Language Processing, NLP)作为人工智能(Artificial Intelligence, AI)的核心技术之一,是用计算机来处理、理解以及运...【详细内容】
2021-10-11    36氪  Tags:NLP   点击:(48)  评论:(0)  加入收藏
边缘计算是什么?近年来,物联网设备数量呈线性增长趋势。根据艾瑞测算, 2020年,中国物联网设备的数量达74亿,预计2025年突破150亿个。同时,设备本身也变得越来越智能化,AI与互联网在...【详细内容】
2021-09-22  汉智兴科技    Tags:   点击:(54)  评论:(0)  加入收藏
说起人工智能,大家总把它和科幻电影中的机器人联系起来,而实际上这些科幻场景与现如今的人工智能没什么太大关系。人工智能确实跟人类大脑很相似,但它们的显著差异在于人工智能...【详细内容】
2021-09-17  异步社区    Tags:人工智能   点击:(57)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条