xgboost, lightgbm, catboost, 谁才是预言之战的最终赢家?

本文对比了XGBoost、LightGBM和CatBoost这三大机器学习工具,探讨了它们的背景、工作原理、特点和应用场景。XGBoost基于GBDT,使用贪心算法优化目标函数,适用于回归或分类问题。LightGBM通过GOSS和EFB算法提升效率,减少了内存占用。CatBoost则擅长处理类别特征,采用对称树结构,防止过拟合。三者各有优势,适用场景不同。
摘要由CSDN通过智能技术生成

引子:
xgboost,lightgbm和catboost都是非常好用的工具,它们将多个弱分类器集成为一个强分类器。在此对他们使用的框架背景和不同之处做简单的总结。

背景:boosting,CART & GBDT

单纯讲定义实在是有些晦涩难懂,所以下面基本用简单的例子来描述。(这部分不讲公式,只讲简单原理)

boosting

boosting是集成学习的其中一种框架。定义说boosting通过组合弱学习器来产生强学习器,通俗来说,就是三个臭皮匠,顶个诸葛亮。boosting的基本思想,是先赋予每个训练样本相同的概率,然后进行多次迭代,每次迭代后,对分类错误的样本加重weight,这样在下一次的迭代中就会更加关注这个样本。
原理示意图如下(源自刘建平)
在这里插入图片描述boosting最流行的两种算法是adaboost算法和GBDT。

CART

CART(全称为Classification And Regression Tree),即分类回归树算法。CART算法构成二叉树,即使一个特征有多个取值,也只是将数据分为两部分。其建树过程主要分为两步,一是将样本递归划分进行建树,而是用验证数据进行剪枝。

  • 怎样才能判断样本的划分是好是坏?有三类指数可以衡量,分别是gini、举一个简单的例子,比如预测病人的患癌概率,提供的训练集中包含年龄、性别等多个特征,每个特征有大量的离散值,以及预测的target,即病人是否患癌。
  • 最开始,可以按年龄是否大于60岁,性别是男是女,骨钙质密度是否大于10(这里纯瞎胡诌的)等划分,这样划分后,总体内包含了很多类别,比如年龄大于60、骨钙质密度大于10是有3个男性和5个女性,年龄大于60、骨钙质面密度小于10有2个男性和4个女性,这两个总体包含的类别杂乱程度不一样(可以用熵来理解),这个杂乱程度用GINI指数(基尼指数)来表示。如果我们使用性别是否为男女来划分的话,可以得到一个GINI增益,而gini增益最小的划分就是最好的划分。
  • 如果上面按照性别划分良好,在性别下再接着进行划分就可以产生分类回归树,什么时候停止分类呢?需要计算Xsquare,当计算出来的值很小时,节点停止分裂。
  • 另外,划分太细的话,会导致过拟合的问题。所以需要进行剪枝(此处类似于线性回归的正则化)。那如何判断是否达到剪枝条件呢?上面的Xsquare算是一种前剪枝,它直接判断了这个节点不进行分裂,而后剪枝是先生成原始的决策树,然后生成各种剪枝效果的决策树,接着用交叉验证来检验剪枝后的预测能力,选择预测能力最好的作为最终的CART树。(简而言之两步:生成子树+交叉验证)

GBDT

  • 全称为gradient boost decision tree,即提升决策树。GBDT基于boosting的原理,使用CART树。
  • 比如现在预测二手车的价格,训练集中的真实价格为2k,而基于训练集的第一个模型的预测价格为1.9k,这时预测价格和真实价格之间的差值为100,即残差为100。
  • 在此基础上,再次根据当前的训练集构建第二个模型,这时模型不再预测车的价格,而是对刚刚第一个模型的残差进行预测。在规定的迭代次数内,以此类推不断的新建模型,降低残差,使得最终的模型的精度达到最高。
  • 拟合思路这里不展开细讲,有时间再看刘建平的文章。

三者的简介

XGBoost

一. 简介:
xgboost基于gradient boost decision tree(GBDT),可以解决监督式学习的问题。

二. 预测原理:
xgboost从零建立模型后,每次会在原有模型的基础上新增函数(即增加树)以修复上一棵树(即上一个函数)的不足,通过贪心算法,在树的建构过程中优化并提升目标函数。当面临大的训练集时,xgboost使用近似贪心算法、并行学习和加权分位数草图(应对数据缺失的情况)。如果训练集小的话,就使用贪心算法。

三. 简单版文字表达式:
初始预测值 + 学习率(ε) * 树(λ和γ) --> 新的预测值 + 学习率 * 树 --&

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值