🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎
📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
📣系列专栏 - 机器学习【ML】 自然语言处理【NLP】 深度学习【DL】
🖍foreword
✔说明⇢本人讲解主要包括Python、机器学习(ML)、深度学习(DL)、自然语言处理(NLP)等内容。
如果你对这个系列感兴趣的话,可以关注订阅哟👋
文章目录
简而言之,它们是 将梯度提升 应用于 决策树集成的机器学习算法。这是一个非常丰富的声明,所以让我们稍微解压一下。
决策树 集成 是所有构建在同一数据集上的决策树的集合。 梯度提升 是一种以逐步方式将弱学习器(即预测比随机猜测好不了多少的模型)的集合转换为强学习器的方法。
决策树是如何构建的以及梯度提升是如何工作的是单独文章的主题。现在,只要知道虽然 XGBoost 和 LightGBM 源于相同的想法,但它们以不同的方式实现这一目标就足够了。
XGBoost
XGBoost,即 Extreme Gradient Boosting,最初由Tianqi Chen撰写 。为了构建树,它使用了两种算法:加权分位数草图和稀疏感知拆分查找。这两种方法都是寻找分裂的方法,即分裂数据的决策。在拆分之前,数据必须根据特征值进行预排序,通常是升序排列。
加权分位数草图是一种在数据中均匀分布潜在分割的方法,可以说明给定数据点的权重或重要性。 这将连续数据分箱, 创建直方图;这意味着只需要为每个 bin 创建拆分,而不是为每个特征值创建拆分。稀疏感知拆分查找通过在每个树节点定义默认方向来处理丢失的数据;根据特征的不同,缺失值将引导决策沿左路径或右路径进行。实际上,这意味着 XGBoost 将跳过包含缺失数据的行。
与任何机器学习算法一样,XGBoost 正在优化损失函数,这是模型中误差的度量。 它通过对损失函数执行梯度下降来实现 ,这意味着它可以最小化函数的斜率。由于它适用于函数的梯度(或斜率),因此 XGBoost 可以利用任何可微分的损失函数。
在高层次上,XGBoost 首先创建一个初始树。为树迭代计算损失函数的梯度。随后的树会适应这些梯度,从而最小化这些树的梯度。这个过程是迭代的,通常受用户定义的要构建的树的数量限制。
LightGBM
LightGBM,或 Light Gradient Boosting Machine,由 Microsoft 创建。很像XGBoost,它是一种梯度提升的决策树集成算法;但是,它的实施方式却大不相同,而且在许多方面效率更高。它用于处理创建拆分的两种技术存在主要差异:基于梯度的单侧采样 (GOSS) 和独占特征捆绑 (EFB)。
GOSS 认为具有较大梯度的数据点对于寻找分裂更重要。在高层次上,想法是梯度较小的数据点已经 最小化,因此应将重点放在梯度较大的那些点上。这与信息增益的概念有关:哪些拆分最能区分数据?重要的是要注意小梯度点不会被丢弃;GOSS 将对它们进行随机抽样,并用一个常数值对它们进行加权,这样,在关注大梯度点的同时,大部分保留了原始数据分布。
EFB 是 LightGBM 处理稀疏数据的手段。 它的工作原理是考虑到特征通常是 排他性的,这意味着它们很少同时采用非零值( 有关简单示例,请参见独热编码。)这些特征可以安全地捆绑或组合,从而减少数据集中的宽度(即列数)。
在构建和评分集成方面,LightGBM 的工作方式与 XGBoost 类似——迭代构建决策树,计算它们的梯度,然后将新树拟合到这些梯度以最小化它们。该过程通常受用户定义的要构建的树数的限制。
这是什么意思呢?
这些算法之间存在一些关键差异。由于 XGBoost 使用的拆分方法——需要在拆分之前对数据进行预排序和装箱——它的内存效率不是很高,而且大型数据集可能会导致内存不足的问题。此外,因为它构建树的 深度优先 (即沿着树的层级向下),所以可能需要更长的时间才能找到错误率较低的树。另外值得注意的是,XGBoost 无法原生处理分类变量;在训练之前对这些进行编码取决于你。
相比之下,LightGBM 往往具有更高的 CPU 和内存效率,并且适用于大型数据集。它通过其拆分方法实现了这一点:GOSS 强调为拆分提供最多信息的特征,从而在不影响准确性的情况下减少数据大小。 LightGBM 还以最佳优先方式构建树 (即,遍历树的叶子)。LightGBM 可以原生处理分类变量。但是,该算法确实会根据数据做出一些可能影响准确性的近似值;例如,高效的特征捆绑是 NP-hard(计算上难以处理),因此它必须容忍非零值之间的重叠以实现性能。
你应该选择哪个?
XGBoost 和 LightGBM 都是非常强大和灵活的机器学习算法。他们可以在分类和回归问题上实现高精度。而且,他们可以在广泛的数据范围内实现这种准确性。
从这个Kaggle 内核中可以看出 ,这两种算法的最新实现相互比较非常好。XGBoost 现在实现了 与 LightGBM 非常相似的特征分箱 ,以更好地处理稀疏数据。 此外,XGBoost 可以以类似于 LightGBM 的最佳优先方式生成决策树 。
最后,您选择的那个将取决于您的数据以及您碰巧最熟悉的算法。每个都有大量参数用于调整以挤出最后一点性能和准确性。但是,这种调整既困难又费时。
简而言之,它们是 将 梯度提升决策树应用于 集成的机器学习算法。这是一个非常丰富的声明,所以让我们稍微解压一下。
决策树 集成 是所有构建在同一数据集上的决策树的集合。 梯度提升 是一种以逐步方式将弱学习器(即预测比随机猜测好不了多少的模型)的集合转换为强学习器的方法。
决策树是如何构建的以及梯度提升是如何工作的是单独文章的主题。现在,只要知道虽然 XGBoost 和 LightGBM 源于相同的想法,但它们以不同的方式实现这一目标就足够了。