【机器学习】【集成学习——决策树、随机森林】从零起步:掌握决策树、随机森林与GBDT的机器学习之旅

这里写目录标题

  • 一、引言
    • 机器学习中集成学习的重要性
  • 二、决策树 (Decision Tree)
    • 2.1 基本概念
    • 2.2 组成元素
    • 2.3 工作原理
      • 分裂准则
    • 2.4 决策树的构建过程
    • 2.5 决策树的优缺点
      • (1)决策树的优点
      • (2)决策树的缺点
      • (3)过拟合问题及解决方法
    • 2.6 举例说明
  • 三、随机森林 (Random Forest)
    • 3.1 基本概念
    • 3.2 工作原理
      • 构建过程
      • 随机森林的预测过程
      • 数学公式说明
    • 3.3 应用场景
      • 实例说明
    • 3.4 随机森林的优缺点
      • (1)随机森林的优点
      • (2)随机森林的缺点
  • 四、 梯度提升决策树 (Gradient Boosting Decision Tree, GBDT)
    • 4.1 基本概念
      • 关键术语
      • 提升法的基本思想
    • 4.2 工作原理
      • (1)初始化模型
      • (2)迭代训练
      • (3)梯度计算
      • (4)停止条件
      • (5)最终预测:
    • 4.3 应用场景
    • 4.4 GBDT的优缺点
      • GBDT的优点
      • GBDT的缺点
    • 4.5 举例说明
    • 4.6 实际应用中的考虑
  • 五、三种方法对比分析
    • 5.1 工作方式对比
      • 决策树 (Decision Tree)
      • 随机森林 (Random Forest)
      • GBDT (Gradient Boosting Decision Tree)
    • 5.2 各自的优点与局限性
    • 5.3 实际应用中如何选择合适的模型
  • 六、案例实战
    • 6.1 基于决策树的案例实战——房价预测
      • 问题背景
      • 解题步骤
        • 1.数据生成:
        • 2.数据转换:
        • 3.数据集分割:
        • 4.模型创建与训练:
        • 5.模型预测:
        • 6.模型评估:
        • 7.数据可视化:
        • 8.特征重要性输出:
      • 决策树解决结果
      • 完整代码
    • 6.2 基于随机森林的案例实战——房价预测
      • 问题背景
      • 解题步骤
        • 1. 数据准备
        • 2. 数据处理
        • 3. 模型训练
        • 4. 模型评估
      • 随机森林解决结果
      • 完整代码
  • 七、总结

一、引言

在机器学习领域,集成学习(Ensemble Learning)是一种强大的技术,它通过组合多个模型来提高预测性能,增强模型的泛化能力。集成学习的核心思想是“三个臭皮匠,赛过诸葛亮”,即多个弱模型的组合往往能够胜过单一的强模型。在众多集成学习方法中,决策树、随机森林和梯度提升决策树(GBDT)是最为常见且强大的几种。

机器学习中集成学习的重要性

集成学习通过构建并结合多个学习器来提升模型的性能,主要目的是减少模型的偏差和方差,从而提高模型的准确性和稳定性。在实际应用中,集成学习模型通常能够提供比单一模型更可靠的预测结果。在众多机器学习算法中,基于树的模型占据了重要的位置。这类模型以树形结构表示决策过程,每个内部节点代表一个属性上的测试,每个分支代表一个测试结果,而每个叶节点则代表一种类别或输出值。这种直观的结构使得树模型不仅易于解释,而且对于非专业用户来说也更容易理解。

具体来说,决策树作为最基础的树模型,提供了一个简单但强大的框架;随机森林通过集成多棵决策树,进一步提高了模型的准确性和稳定性;**梯度提升决策树(GBDT)**则引入了序列化构建弱学习器的思想,通过逐步优化模型,实现了更高的预测性能。这三种模型各有千秋,在不同的应用场景下发挥着不可替代的作用。

接下来,我们将分别深入探讨这三种树模型的基本概念、工作原理以及它们之间的区别与联系。
【机器学习】【集成学习——决策树、随机森林】从零起步:掌握决策树、随机森林与GBDT的机器学习之旅_第1张图片


二、决策树 (Decision Tree)

决策树是一种监督学习方法,广泛应用于分类和回归任务中。它以直观的树形结构表示数据,每个节点代表一个属性上的测试,每个分支代表一个测试结果,而每个叶节点则代表一种类别或输出值。它是一种常见的机器学习算法,它模仿人类决策过程,通过一系列问题对数据进行分类或回归。

2.1 基本概念

想象一下你正在玩一个猜谜游戏,比如“二十个问题”。每当你问一个问题时,对方的回答(是/否)会引导你提出下一个问题。最终,通过一系列的问题,你可以确定答案。决策树的工作方式与此类似,它是一系列规则的集合,这些规则帮助我们根据某些特征做出决定或分类。

决策树是一种树形结构,其中每个内部节点代表一个属性上的测试,每个分支代表测试的一个结果,每个叶节点代表一个分类或回归结果,用于分类和回归任务。它通过学习简单的决策规则来预测结果。最早的决策树算法由Hunt等人于1966年提出,称为Hunt算法,它是许多决策树算法的基础,包括ID3、C4.5和CART等。但直到1986年,J. R. Quinlan提出的ID3算法才使得决策树在机器学习领域得到广泛应用。

2.2 组成元素

  • 节点(Node):就像一棵真实的树有分支点一样,决策树也有节点。每个节点代表一个问题或条件。分为两种类型:

    • 内部节点:这些节点用于做决定的地方。例如,“年龄是否大于30岁?”。
    • 叶节点:当所有问题都回答完毕后,到达这里得出结论。例如,“购买电脑”。
  • 分支(Branch):从一个节点引出的线段表示不同可能的答案。比如对于“年龄是否大于30岁?”这个问题,会有两个分支:“是”和“否”。

  • 根节点(Root Node):这是整个决策过程的起点,通常位于图表的顶部。例如,在上面的例子中,“年龄是否大于30岁?”就是根节点。

举个简单的例子,假设我们要建立一个决策树来决定一个人是否会喜欢某部电影。我们可以从根节点开始问“这个人是否喜欢科幻片?”,如果答案是肯定的,那么我们继续问“他是否看过这部电影的导演之前的作品?”;如果答案是否定的,我们可能会直接得出结论说这个人可能不会喜欢这部电影。

2.3 工作原理

分裂准则

在构建决策树时,我们需要知道如何选择最好的问题来分割数据。这涉及到一些数学公式,但我会尽量用简单的语言解释它们。

  • 熵(Entropy):熵是用来衡量混乱程度的一个术语。在决策树中,它告诉我们一组数据的混合度。如果我们有一组数据完全由同一类样本组成(例如全是喜欢科幻片的人),那么它的熵很低;相反,如果数据中包含多种类别(例如一半人喜欢科幻片,另一半不喜欢),则熵较高。熵的计算公式如下:

H ( S ) = − ∑ i = 1 C p i log ⁡ 2 p i H(S) = -\sum_{i=1}^{C} p_i \log_2 p_i H(S)=i=1Cpilog2pi

其中 p i p_i pi 是指属于第 i i i类样本的比例。这个公式看起来复杂,但其实只是在计算各类别概率的加权平均值。

  • 信息增益(Information Gain):当我们选择了一个属性进行分裂后,我们会看到数据变得更加有序,即熵减少了。信息增益就是这种减少量。它告诉我们,选择某个属性作为分裂标准能让我们获得多少新的信息。计算方法为:

I G ( A ) = H ( S ) − ∑ v ∈ V a l u e s ( A ) ∣ S v ∣ ∣ S ∣ H ( S v ) IG(A) = H(S) - \sum_{v \in Values(A)} \frac{|S_v|}{|S|} H(S_v) IG(A)=H(S)vValues(A)SSvH(Sv)

这里 S v S_v Sv 表示根据属性A的不同取值划分出来的子集。

  • 基尼不纯度(Gini Impurity):基尼不纯度也是一种衡量数据混合度的方法。它更倾向于选择二元分割(即只有两种结果)。其计算公式为:

G i n i ( S ) = 1 − ∑ i = 1 C p i 2 Gini(S) = 1 - \sum_{i=1}^{C} p_i^2 Gini(S)=1i=1Cpi2

通过比较不同的分裂准则,我们可以找到最适合当前数据集的那一个。

2.4 决策树的构建过程

构建一棵决策树就像是玩一个问答游戏。以下是具体步骤:

  1. 初始化:首先,我们把所有的训练数据放在根节点上。
  2. 选择最佳分割属性:接下来,我们尝试找出哪个属性能够最好地区分不同的类别。例如,在预测电影喜好时,可能是“是否喜欢科幻片”或者“是否看过导演的其他作品”。我们使用前面提到的信息增益或其他分裂准则来评估每个属性的好坏。
  3. 创建分支:一旦选定了一个属性,我们就根据它的不同取值创建分支。例如,对于“是否喜欢科幻片”,我们将有两个分支:“是”和“否”。
  4. 递归构建子树:然后,我们重复上述过程,直到不能再进一步细分为止。也就是说,对于每个分支上的数据子集,我们再次选择最佳属性并创建新的分支。
  5. 生成叶节点:最后,当无法再继续分裂时,我们就到达了叶节点,并在这里给出最终的分类结果或预测值。

2.5 决策树的优缺点

(1)决策树的优点

  1. 易于理解和解释

    • 决策树的结果可以被可视化为树状图,这种图形表示方式使得非技术人员也能够轻松理解模型的工作原理和预测逻辑。
  2. 不需要数据预处理

    • 决策树对输入数据的要求较低,不需要像其他一些算法那样进行归一化或标准化处理。它们可以直接处理数值型、分类型以及缺失值的数据。
  3. 非参数模型

    • 决策树是基于规则的模型,不依赖于特定的数据分布假设,因此适用于各种类型的数据集。
  4. 可以处理非线性关系

    • 决策树能够捕捉到特征之间的复杂非线性关系,而无需显式地定义这些关系。

(2)决策树的缺点

  1. 容易过拟合

    • 如果没有适当的限制条件,决策树可能会过度拟合训练数据,即模型过于精确地记住了训练样本中的细节,从而导致泛化能力差,在未见过的新数据上的表现不佳。
  2. 不稳定

    • 决策树对数据变化敏感,即使是微小的数据变动也可能导致生成完全不同的树结构,进而影响预测结果的一致性和可靠性。
  3. 不适合连续变量

    • 虽然决策树可以处理连续变量,但与离散变量相比,连续变量的分裂点选择更加复杂,可能导致性能下降或者需要额外的计算成本。

为了克服上述缺点,实践中经常使用集成方法如随机森林(Random Forests)和梯度提升决策树(GBDT),这些方法通过组合多棵决策树来提高模型的稳定性和准确性,同时也降低了过拟合的风险。

(3)过拟合问题及解决方法

过拟合是决策树训练过程中一个常见的问题,指的是模型过于关注训练数据中的细节,以至于在新数据上表现不佳。想象一下,如果你在一个游戏中总是记住对手每次出招的方式,而不是理解他们的策略,那么面对不同的对手时就会遇到麻烦。决策树也是一样,如果它试图记住每一个训练样本,就会失去泛化能力。

解决过拟合的方法

  • 预剪枝(Pre-pruning):这意味着在树还没有完全生长出来之前就提前停止。例如,我们可以设定一个最大深度,或者规定每个节点至少需要多少样本才能继续分裂。
  • 后剪枝(Post-pruning):另一种方法是先让树充分生长,然后再去掉那些不必要的部分。例如,我们可以移除那些导致验证集误差增加的节点。还可以采用代价复杂度剪枝(Cost Complexity Pruning, CCP),通过引入一个正则化参数α来平衡树的复杂度和训练误差。

2.6 举例说明

假设我们有一组数据,包含天气和是否去打网球的信息:

天气 温度 湿度 风速 是否打网球

构建决策树的过程可能如下:

  1. 计算每个属性的熵或基尼不纯度,选择最优的分裂属性(例如“天气”)。
  2. 根据天气的不同取值(晴、阴、雨)分裂数据集。
  3. 对每个子集递归执行上述步骤,直到满足停止条件。

这个过程可以用以下伪代码表示:

def build_tree(data, split_criterion):
    if stopping_condition(data):
        return create_leaf_node(data)
    best_attribute = choose_best_attribute(data, split_criterion)
    tree = create_node(best_attribute)
    for value in best_attribute.values:
        subtree = build_tree(split_data(data, best_attribute, value), split_criterion)
        add_branch(tree, value, subtree)
    return tree

最后建立起来的决策树可能就是:
【机器学习】【集成学习——决策树、随机森林】从零起步:掌握决策树、随机森林与GBDT的机器学习之旅_第2张图片

三、随机森林 (Random Forest)

随机森林是一种集成学习方法,它通过构建多个决策树并进行投票来提高预测的准确性和稳定性。

3.1 基本概念

随机森林是由Leo Breiman在2001年提出的一种算法,它基于决策树集成(Decision Tree Ensemble)的思想。随机森林通过在训练过程中引入随机性来提高模型的泛化能力,减少过拟合的风险。

随机森林中的每棵树都是一棵决策树,但这些树在训练时并不是使用全部的数据集,而是使用从原始数据集中随机抽取的样本集来训练。同时,在构建每棵树的每个节点时,也不是考虑所有的特征,而是随机选择一部分特征来决定最优的分裂点。与单棵决策树相比,随机森林能够提供更高的准确性和稳定性,因为它减少了单一决策树可能存在的过拟合问题。


随机森林的“随机”体现在两个方面:

  • 数据集的随机选取:在训练过程中,每棵树不是基于整个原始数据集构建的,而是从原始数据集中随机抽取一定数量的样本(通常是放回抽样,也称为Bootstrap抽样)。这意味着每棵树都是基于不同的子集进行训练的。

  • 特征的随机选取:在选择分裂属性时,随机森林不会考虑所有特征,而是在每个节点上随机选择一部分特征作为候选,然后从中挑选最佳的分裂点。这种做法增加了模型的多样性,有助于提高整体性能。

3.2 工作原理

构建过程

  1. 准备阶段

    • 收集并准备好用于训练的数据集。假设我们有一个包含 N N N 个样本的数据集 D \mathcal{D} D.
  2. 生成多棵决策树

    • 对于每一棵树 T i

你可能感兴趣的:(机器学习,模式识别,机器学习,集成学习,决策树,算法,python,随机森林,人工智能)