【51CTO.com快译】互联网的算法有很多应用场景,包括推荐系统、计算广告和金融反欺诈等。许多互联网的机器学习和数据挖掘问题都可以转化为分类问题。在处理这一类分类问题的时候,最常用的方法包括逻辑回归、GBDT和深度学习等。其中逻辑回归因为算法效率高,能有效处理大规模的数据,在深度学习还没有流行之前就被广泛的应用于大型的互联网公司。

深度学习是自 2012 年由百度首先成立深度学习实验室之后在国内掀起的人工智能大潮。然而由于深度学习目前还处于蓬勃发展的阶段,并且处理大规模数据时对于机器的经费的要求都比较高,因此在很多应用场景下大家选择的并不是机器学习。GBDT 自问世以来便在诸多机器学习问题上取得了良好的效果,不仅在工业界,而且在 Kaggle 比赛上取得了非常优秀的成绩。

针对 GBDT 算法,在学术界和工业界有许多开源的算法包。著名的包括 University of Washington 的陈天奇开发的 XGBoost ,微软的 LightGBM ,还有 Yandex 公司开发的 CatBoost 。XGBoost 被广泛的应用于工业界,LightGBM 有效的提升了 GBDT的计算效率, 而 Yandex 的 CatBoost 号称是比 XGBoost 和 LightGBM 在算法准确率等方面表现更为优秀的算法。本文主要通过介绍 Yandex 2017 年发表的一篇题为 CatBoost: Unbiased Boosting with Categorical Features 的论文给大家介绍 CatBoost 算法。

CatBoost 算法的设计初衷是为了更好的处理 GBDT 特征中的 categorical features 。在处理 GBDT 特征中的 categorical features 的时候,最简单的方法是用 categorical feature 对应的标签的平均值来替换。在决策树中,标签平均值将作为节点分裂的标准。这种方法被称为 Greedy Target-based Statistics , 简称 Greedy TBS,用公式来表达就是:

这种方法有一个显而易见的缺陷,就是通常特征比标签包含更多的信息,如果强行用标签的平均值来表示特征的话,当训练数据集和测试数据集数据结构和分布不一样的时候会出问题(条件偏移问题)。

一个标准的改进 Greedy TBS的方式是添加先验分布项,这样可以减少噪声和低频率数据对于数据分布的影响:

其中 P 是添加的先验项,a 通常是大于 0 的权重系数。

为了解决条件迁移问题,常用的方法例如可以将数据集合分为两部分,在***个部分上对数据的特征进行类似 Greedy TBS 的处理,而在第二个数据集合上进行训练。CatBoost 参考了在线学习的方法,首先对训练书进行了随机的重排列,然后选择   作为训练样本,而整个的数据集合做为测试样本。

类似的,在GBDT的模型训练阶段,同样会因为训练数据与测试数据分布不同的问题产生预测偏移(Prediction Shift)和残差偏移(Residual Shift)的问题。为了解决相应的问题,CatBoost 作者采用了排序提升(Ordered Boosting)的方式,首先对所有的数据进行随机排列,然后在计算第 i 步残差时候的模型只利用了随机排列中前 i-1 个样本。

CatBoost 针对于原始 GBDT 的各种偏移问题进行改进之后的算法伪代码如下:

CatBoost 和 XGBoost 以及 LightGBM 在一些知名的数据集合上的测试效果如下表所示,评测指标为 Logloss 和 Zero-one Loss 。

CatBoost 的基本原理是解决原始 GBDT 中的各种数据偏移问题。在一些开源的机器学习和数据挖掘的算法包里有现成的模块可以调用。CatBoost 自从 2017 年被 Yandex ***提出以来得到了广泛的关注。希望本文的介绍能给大家带来帮助。

汪昊,恒昌利通大数据部负责人/资深架构师,美国犹他大学本科/硕士,对外经贸大学在职MBA。曾在百度,新浪,网易,豆瓣等公司有多年的研发和技术管理经验,擅长机器学习,大数据,推荐系统,社交网络分析等技术。在 TVCG 和 ASONAM 等国际会议和期刊发表论文 8 篇。本科毕业论文获国际会议 IEEE SMI 2008 ***论文奖。

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

【编辑推荐】

【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0

catboost和xgboost_CatBoost:比XGBoost更优秀的GBDT算法相关推荐

  1. catboost和xgboost_Catboost:超越Lightgbm和XGBoost的又一个boost算法神器

    原标题:Catboost:超越Lightgbm和XGBoost的又一个boost算法神器 机器学习AI算法工程 公众号:datayx 今天介绍一个超级简单并且又极其实用的boosting算法包Catb ...

  2. 成为更优秀的开发人员:第一步-“制造”粉丝

    编者按:原文作者罗布·沃林(Rob Walling)从事Web应用开发10年之久,担任过业内顾问.自由开发人员和全球最大的信用卡预付公司City of Pasadena的开发经理.现居住于加州中部城市 ...

  3. 自适应xib比代码frame布局更优秀

    2019独角兽企业重金招聘Python工程师标准>>> 自适应xib比代码frame布局更优秀 转载于:https://my.oschina.net/u/2457458/blog/7 ...

  4. 屏幕自动亮度不停的变_LCD最后的荣耀?卢伟冰:我们的屏幕比iPhone11更优秀

    在OLED屏幕盛行的今天,除了旗舰机之外,很多中端手机也都舍弃了LCD,投身OLED的怀抱."LCD永不为奴",很多用户其实依然不习惯低亮度会频闪的OLED屏,而对LCD情有独钟. ...

  5. 寻找性能更优秀的不可变小字典

    Dictionary 是一个很常用的键值对管理数据结构.但是在性能要求严苛的情况下,字典的查找速度并不高.所以,我们需要更快的方案. 需求说明 这里,我们需要一个 PropertyInfo 和委托对应 ...

  6. 成为更优秀的程序员:退后一步看问题

    转载自   成为更优秀的程序员:退后一步看问题 一天,在工作中- Bug #3890 来自客户: 有个程序出现了错误,程序提示说"SpeedCalculator::compute()里出现了 ...

  7. 成为更优秀的开发人员:第二步-知道你的核心竞争力

    编者按:原文作者罗布·沃林(Rob Walling)从事Web应用开发10年之久,担任过业内顾问.自由开发人员和全球最大的信用卡预付公司City of Pasadena的开发经理.现居住于加州中部城市 ...

  8. 怎样成为一名更优秀的程序员?我总结出 7 条建议,希望对你们有帮助!

    有几个人在 React 大会上向我请教一个问题--如何成为一名更优秀的程序员.人们将我视为一名非常资深的程序员,因此值得听听我的建议.我觉得可以分享一下,自己多年来在编程方面的"思维模式&q ...

  9. 怎样成为一名更优秀的程序员?我总结出 7 条建议

    有几个人在 React 大会上向我请教一个问题--如何成为一名更优秀的程序员.人们将我视为一名非常资深的程序员,因此值得听听我的建议.我觉得可以分享一下,自己多年来在编程方面的"思维模式&q ...

最新文章

  1. 天水师范学院计算机科学与技术专业代码,计算机科学与技术-天水师范学院IPv6专题网站.doc...
  2. java linkedlist 方法_Java LinkedList getFirst()方法与示例
  3. apche 禁止运行php,学习猿地-apache如何禁止执行php
  4. vue 方法获取返回值_vue中子组件怎么获取父组件中的方法的返回值
  5. APP提示框设计模板|UI设计师灵感好帮手
  6. 『转』图解硬件特性!
  7. JAVA基础(2/17)-基本语法_数据类型
  8. qu32调音台说明书_Qu-32 数字调音台
  9. OBS 电脑推流直播指南
  10. HTML导航条和翻页栏
  11. HTML+CSS打造简单的横向时间轴
  12. 华硕部分飞行堡垒系列安装ubuntu16.04(uefi+gpt+win10环境)
  13. 算法笔记.胡凡 第五章 数学问题
  14. 电脑网线连接树莓派并登录
  15. matlab patch 六面体,《有限元基础教程》_【MATLAB算例】4.8.2(1) 基于8节点六面体单元的空间块体分析(Hexahedral3D8Node)...
  16. binlog_do_db 与 binlog_ignore_db
  17. Redis缓存知识-穿透、击穿、雪崩
  18. JDK1.8的安装方式
  19. Ubuntu上让Firefox使用Chrome最新版PepperFlash插件
  20. 计算机乡村少年宫教案,少年宫计算机组教案 (精选可编辑)

热门文章

  1. micropython控制板,MicroPython动手做(22)——掌控板之无线广播
  2. 推荐一款串口TCP协议调试利器-小平TCP串口调试特工
  3. PLU大师的九十句经典名言!
  4. JZOJ 4740 【雅礼联考GDOI2017模拟9.2】Zjr506的捕猫计划
  5. 削履适足-途牛旅游网敏捷开发流程再造
  6. 国内SRC奖励计划下的漏洞奖励与现状
  7. html5圆的中心点,HTML5 clearRect()清除圆形区域
  8. uniapp中app接入高德地图实现标点定位
  9. 矩阵的范数和条件数(Norms and Condition Numbers)
  10. “FOR loop contains no keywords”问题解决