从决策树到GBDT、随机森林

何为决策树

决策树(Decision Tree),它是一种以树形数据结构来展示决策规则和分类结果的模型,作为一种归纳学习算法,其重点是将看似无序、杂乱的已知数据,通过某种技术手段将它们转化成可以预测未知数据的树状模型,每一条从根结点(对最终分类结果贡献最大的属性)到叶子结点(最终分类结果)的路径都代表一条决策的规则

简单来说,它是一种常用的机器学习算法,主要用于分类和回归任务。它通过树形结构来展示决策规则和分类结果。每个节点代表一个特征,每个分支代表该特征的一个可能取值,而每个叶节点则对应一个分类或回归结果。

下面图片是一个小栗子,假设你是银行的柜员,正在做要不要向一个客户发放贷款的决策,有目前的条件信息:

在基本概念中,

根节点:树的起始点,包含所有数据。

内部节点:根据某个特征对数据进行划分。

(是否拥有房产、是否已婚等)

叶节点:最终的分类或回归结果。(能否偿还贷款)

优缺点

决策树详细解释:决策树原理详解(无基础的同样可以看懂)

由树的并行计算考虑方法

GBDT (Gradient Boosting Decision Tree)

梯度提升决策树

一个例子:想象你有一个团队,每个人都擅长解决问题,但每个人开始时只能解决问题的一小部分。这个团队的目标是一起解决一个复杂的问题。

第一步:团队中的第一个成员会给出他的答案,但可能不太准确,只是一个初步的尝试。

第二步:接下来,团队中的第二个人并不是直接给出自己的答案,而是去观察第一个人的错误,看看问题在哪里没有解决好,然后他会专注于纠正这些错误。

第三步:接着,第三个人会看第二个人的工作,继续纠正前面两个人没解决好的地方。

后续步骤:这样一轮接一轮,越来越多的人加入,每个人都专注于纠正前面人的错误,最终整个团队就能得到一个非常准确的答案。

在GBDT中,这些"团队成员"就是一棵棵决策树。每一棵树都试图改进前一棵树的错误预测。最终,通过累积多棵树的结果,模型能够变得非常强大和准确。

所以,GBDT的核心思想就是:"每次学习都试着改正之前的错误",这样一步步地提升模型的预测能力。

GBDT 是一种基于集成学习的机器学习算法,它通过将多个决策树模型组合起来,逐步提升模型的预测性能。其工作原理是逐步构建多个弱学习器(通常是简单的决策树),并且每一棵新的树都是为了纠正前一棵树预测中的误差。

核心概念包括:

决策树:每一棵树是一个简单的模型,能够对数据进行分类或回归预测,但单棵树的预测能力有限。

集成学习:GBDT 是一种集成方法,它不是用一棵树来做预测,而是用许多棵树的组合。通过集成多个弱学习器,可以得到一个强大的预测模型。

梯度提升:在每一轮迭代中,GBDT 会根据当前模型的预测误差,计算出残差(即预测值和真实值之间的差异)。新增加的树是为了拟合这些残差,从而逐步减小整体误差。这里的"梯度"指的是用损失函数的梯度(方向和大小)来指导模型的改进。

损失函数:GBDT 最常用的损失函数是平方误差(用于回归任务)或对数似然函数(用于分类任务)。算法通过最小化损失函数,逐渐提高模型的预测精度。

相对应的数学公式



随机森林

随机森林(Random Forest)是一种常见的并行计算解决方案。随机森林通过构建多个决策树并将它们的结果进行集成来提高模型的准确性和稳定性。每棵树都是在不同的数据子集和特征子集上独立训练的,这使得随机森林非常适合并行计算。

随机森林(Random Forest)是一种集成学习算法,它通过构建多个决策树来提高模型的准确性和稳定性。它与梯度提升决策树(GBDT)的不同之处在于,随机森林通过并行训练多棵树,然后对每棵树的输出取平均值或多数投票来做最终预测。

1.训练集的随机采样(Bootstrap Sampling):

在训练过程中,随机森林对训练数据集进行多次随机采样,使用有放回的方式。每次采样得到的子集称为"Bootstrap样本",这意味着每棵树的训练数据集都是从原始数据集中随机抽取的。

比如,如果原始数据集有 n 个样本,每次我们从中随机抽取 n 个样本(可能重复),构建每棵树的训练集。

效果:通过采样不同的数据集,每棵树看到的数据略有不同,增强了模型的多样性,避免了过拟合。

  1. 构建每棵决策树:

每棵决策树是一个独立的模型,它会在随机抽样的 Bootstrap 样本上训练,但随机森林在构建树时还引入了另一层随机性:特征随机选择。

在每个节点进行分裂时,随机森林不会考虑所有特征,而是从总特征集中随机选择 m 个特征(通常

m<d,其中 d 是总特征数)。然后仅在这些随机选择的特征中找到最佳分裂点。

效果:通过引入特征的随机性,树之间的相关性减小,使得每棵树更独立,增强模型的鲁棒性。

  1. 决策树的训练:

每棵树通过标准的决策树算法来构建,树会不断分裂节点,直到满足某个终止条件(如达到最大深度或叶节点中样本数量少于某个阈值)。

区别:在随机森林中,决策树通常是"完全生长"的,即每棵树通常会深度生长,不进行剪枝,这让每棵树有可能是高偏差但低方差的模型。

4.预测输出:

  1. 整体流程:

随机森林的核心思想是通过构建多个独立的决策树,并结合树的预测结果,来提高模型的准确性、稳健性,并减少过拟合。它利用了"模型集成"的思想------每棵树单独可能是弱学习器,但把它们结合起来就能形成一个强大的模型。

  1. Out-of-Bag (OOB) 估计:

由于每棵树只使用部分数据进行训练,剩下的未被采样的数据可以用来作为验证集。这些数据称为袋外数据(OOB数据)。通过在 OOB 数据上评估模型的性能,可以近似得到模型的误差,不需要专门的验证集。

相关推荐
海海不掉头发29 分钟前
【已解决】如何使用JAVA 语言实现二分查找-二分搜索折半查找【算法】手把手学会二分查找【数据结构与算法】
java·开发语言·算法
我要学编程(ಥ_ಥ)1 小时前
滑动窗口算法专题(2)
数据结构·算法·leetcode
_Power_Y1 小时前
浙大数据结构:05-树9 Huffman Codes
数据结构·c++·算法
爱吃土豆的程序员2 小时前
Lucene 倒排索引原理详解:深入探讨相关算法设计
java·算法·elasticsearch·全文检索·lucene
顾城猿4 小时前
9.25-编程刷题
数据结构·算法·leetcode
王哈哈嘻嘻噜噜4 小时前
c语言中的杨氏矩阵的介绍以及元素查找的方法
c语言·算法·矩阵
大柏怎么被偷了4 小时前
【C++算法】栈
开发语言·c++·算法
小柯J桑_4 小时前
史上最牛排序集合,带你认清所有排序算法!(必看系列)~
数据结构·算法·排序算法
无限大.5 小时前
c语言200例 64
c语言·数据结构·算法