CART决策树

一、基本概念

CART(Classification and Regression Trees)决策树是一种典型的分类和回归的树形结构模型,由于其简单、易于理解和实现,在实际应用中得到广泛应用。 CART决策树包含两种类型:分类树和回归树,其中分类树用于分类问题,回归树用于回归问题。

CART决策树构建过程的核心是在每个节点上寻找最佳的分裂特征和分裂点。节点的分裂是指根据某个特征和对应的分裂点将节点划分为左右两个子节点。划分的目的是尽可能地将同一类别的样本放到同一子节点中,同时尽可能地将不同类别的样本分到不同的子节点中。

在CART决策树的构建过程中,我们需要采用一些指标来衡量节点的“纯度”,这些指标主要有基尼系数和信息增益两种。其中基尼系数是CART决策树使用的默认指标,它的计算很简单,公式如下:

Gini(p) = 1 - ∑(i=1~k) p(i)^2

其中k表示类别的个数,p(i)表示样本属于第i类的概率。当一个节点中的样本全部属于同一个类别时,基尼系数最小为0;当一个节点中的样本属于不同的类别时,基尼系数最大为1。

二、分类树的构建

对于分类问题,CART决策树的构建过程如下:

1、节点的初始状态:

将所有样本看作一个整体,将整个训练数据集看作一个节点,在该节点上找到最佳的分裂特征和分裂点来确定左右子节点,将数据集分为两部分,第一部分样本属于某一个类别,第二部分样本属于其他类别。

2、节点的分裂:

根据某个特征和对应的分裂点将节点划分为左右两个子节点,这个分裂点的选择在回归树和分类树中不同。在分类树中,为了让同一类别的样本尽量分到同一节点中,我们需要找到最优的分裂特征和分裂点。 在这个过程中,我们需要设计一个评价指标来衡量节点的纯度。常用的指标有基尼系数和信息熵。

3、递归构建树:

对于当前节点的左右两个子节点,重复执行步骤2和步骤3,直到达到预设的停止条件,例如节点中的样本数量达到了预设的最小值,或者节点的深度达到了预设的最大值。当无法再分裂时,节点变为叶节点。

三、回归树的构建

对于回归问题,CART决策树的构建过程如下:

1、节点的初始状态:

将所有样本看作一个整体,将整个训练数据集看作一个节点,在该节点上找到最佳的分裂特征和分裂点来确定左右子节点,将数据集分为两部分,第一部分样本拟合出的回归函数与真实值的误差尽可能小,第二部分样本拟合出的回归函数与真实值的误差尽可能小。

2、节点的分裂:

根据某个特征和对应的分裂点将节点划分为左右两个子节点,这个分裂点的选择需要最小化误差平方和,即:

min∑(y-y_hat)^2

其中y表示真实值,y_hat表示预测值。回归树采用的是一种自顶向下、贪心的策略,即每次选择最优的特征进行分裂,因此得到的树是不稳定的,容易受到噪声的影响。

3、递归构建树:

对于当前节点的左右两个子节点,重复执行步骤2和步骤3,直到达到预设的停止条件,例如节点中的样本数量达到了预设的最小值,或者节点的深度达到了预设的最大值。当无法再分裂时,节点变为叶节点。

四、代码示例

以下示例代码展示了如何使用CART决策树进行分类:

import numpy as np
from sklearn.tree import DecisionTreeClassifier

# 构造示例数据集
X = np.array([
    [5.1, 3.5, 1.4, 0.2],
    [4.9, 3.0, 1.4, 0.2],
    [6.2, 3.4, 5.4, 2.3],
    [5.9, 3.0, 5.1, 1.8]])
y = np.array([0, 0, 1, 1])

# 构建分类树模型
clf = DecisionTreeClassifier()
clf.fit(X, y)

# 预测新样本类别
x_test = np.array([5.8, 2.8, 5.1, 2.4])
y_pred = clf.predict([x_test])

print("预测类别为:", y_pred)  # 输出预测结果

原创文章,作者:XXFGX,如若转载,请注明出处:https://www.506064.com/n/334136.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
XXFGXXXFGX
上一篇 2025-02-05 13:05
下一篇 2025-02-05 13:05

相关推荐

  • 详解决策树ID3算法

    一、ID3算法介绍 ID3(Iterative Dichotomise 3)算法是一种决策树算法。它使用信息增益作为特征选择的标准,即从所有可能的特征中选择出信息增益最大的特征,作…

    编程 2025-04-24
  • Python实现决策树

    一、决策树简介 决策树(Decision Tree)是一种常见的分类和回归算法,其可处理离散型和连续型数据,在数据挖掘、机器学习等领域被广泛应用。 决策树的结构类似一棵树,每个节点…

    编程 2025-04-22
  • 机器学习之决策树

    一、什么是决策树? 决策树是一种基于树形结构的机器学习算法,用于进行分类和回归分析。在分类问题中,决策树将数据分成不同的类别,每一个叶子节点代表一个类别。在回归问题中,决策树用于预…

    编程 2025-01-20
  • 机器学习决策树详解

    一、什么是决策树 决策树属于一类非常重要的无监督机器学习算法,它被广泛用于数据挖掘和机器学习领域。决策树是一种树形结构,选择某个属性作为根节点,其他属性作为子节点。通过递归生成树形…

    编程 2025-01-09
  • c语言cart决策树,cart决策树算法

    本文目录一览: 1、决策树算法 CART和C4.5决策树有什么区别?各用于什么领域? 2、决策树分类算法的适用领域,不要概括成经济、社会、医疗领域,具体到实际问题。且用什么软件实现…

    编程 2024-12-24
  • 决策树分类器(DecisionTreeClassifier)

    一、什么是决策树分类器 决策树分类器是一种基于决策树模型,将不同数据判定为其所属类别的算法。在分类数据时,它将不同的特征进行分类,并基于此将新的数据映射到相应的类别。这种算法可用于…

    编程 2024-12-22
  • 决策树剪枝

    一、决策树剪枝算法 决策树剪枝是为了避免过拟合而产生的一种方法。决策树剪枝可以看作是一种减小模型复杂度的方法,其核心思想是通过去除一些决策树分支来让模型更加简单。 常用的决策树剪枝…

    编程 2024-12-15
  • CART分类树

    一、CART分类树算法 CART(Classification and Regression Tree)分类树算法是一种决策树分类模型,既可以用于分类问题,也可以用于回归问题。它是…

    编程 2024-12-12
  • PythonLightGBM: 高效的基于决策树的梯度提升库

    PythonLightGBM是一个高效、快速、可扩展、灵活的基于决策树的梯度提升库。它被设计成分布式的,凭借高效率,轻量级性,以及更加合理的系统用法而在许多机器学习竞赛中占据了主导…

    编程 2024-12-12
  • CART决策树详解

    一、CART决策树算法 CART决策树(Classification And Regression Tree)是一种基于二叉树结构的决策树算法。CART算法通过不断的对数据集进行分…

    编程 2024-12-11

发表回复

登录后才能评论