决策树详解

决策树详解

决策树是一种常用的机器学习算法,用于分类和回归任务。它通过一系列规则对数据进行分割,以达到最佳的分类效果。

决策树的核心概念

1. 节点(Node)

  • 根节点(Root Node):不包含任何条件的顶层节点,代表整个数据集。
  • 内部节点(Internal Node):包含决策条件的节点,用于对数据进行进一步的分割。
  • 叶节点(Leaf Node):决策树的末端节点,代表分类或回归的结果。

2. 分割规则(Splitting Rule)

  • 决策树通过应用分割规则递归地分割数据。
  • 分割规则通常基于特征值的不同阈值。

3. 纯度和信息增益

  • 纯度(Purity):一个节点中数据的同质性。较高的纯度意味着节点中的数据属于同一类别。
  • 信息增益(Information Gain):分割前后数据不确定性的减少量。选择最大化信息增益的分割。

数学原理

1. 信息熵(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

    其中 c c c 是类别的数量, p i p_i pi 是类别 i i i 在数据集中的比例。

2. 信息增益

  • 信息增益是选择分割条件的依据:

    I G ( S , A ) = H ( S ) − ∑ t ∈ T ∣ S t ∣ ∣ S ∣ H ( S t ) IG(S, A) = H(S) - \sum_{t \in T} \frac{|S_t|}{|S|} H(S_t) IG(S,A)=H(S)tTSStH(St)

    其中 A A A 是特征, T T T 是基于特征 A A A 的分割, S t S_t St 是分割后的子集。

3. 基尼不纯度(Gini Impurity)

  • 另一种度量数据不纯度的方法:

    G ( S ) = 1 − ∑ i = 1 c p i 2 G(S) = 1 - \sum_{i=1}^{c} p_i^2 G(S)=1i=1cpi2

  • 在某些决策树算法中,例如CART(分类与回归树),会使用基尼不纯度作为分割的标准。

应用和实现

  • 决策树在构建时,从根节点开始,递归地选择使信息增益最大化(或基尼不纯度最小化)的特征进行分割,直到满足停止条件(如达到预设的深度、节点数据量过少等)。
  • 最终得到的树结构可以用于预测新数据的类别或数值。

手写决策树及其数学概念解释

决策树是一种流行的机器学习方法,用于分类和回归任务。它通过创建一系列决策规则来预测数据的类别或值。以下是对决策树中纯度、信息增益、信息熵的概念和计算的解释。

示例数据集

假设我们有一个简单的数据集,包含两个特征(Feature 1和Feature 2)和一个目标类别(Class):

  • Feature 1: [Low, High, Low, High]
  • Feature 2: [Low, Low, High, High]
  • Class: [A, A, B, B]

信息熵(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

其中, S S S 是数据集, c c c 是类别的数量, p i p_i pi 是类别 i i i 在数据集中的比例。

初始信息熵

对于上述数据集,两个类别各占一半,所以信息熵为:

H ( S ) = − ( 0.5 log ⁡ 2 0.5 + 0.5 log ⁡ 2 0.5 ) = 1 H(S) = -\left(0.5 \log_2 0.5 + 0.5 \log_2 0.5\right) = 1 H(S)=(0.5log20.5+0.5log20.5)=1

信息增益(Information Gain)

信息增益是选择分割规则的依据,基于信息熵的减少量计算。信息增益定义为:

I G ( S , A ) = H ( S ) − ∑ t ∈ T ∣ S t ∣ ∣ S ∣ H ( S t ) IG(S, A) = H(S) - \sum_{t \in T} \frac{|S_t|}{|S|} H(S_t) IG(S,A)=H(S)tTSStH(St)

其中 A A A 是特征, T T T 是基于特征 A A A 的分割, S t S_t St 是分割后的子集。

分割示例

假设我们根据Feature 1分割数据集:

  • 分割后两个子集分别为:[A, A] 和 [B, B],每个子集的信息熵为0(因为它们都是纯的)。

  • 信息增益为:

    I G ( S , Feature 1 ) = 1 − ( 2 4 × 0 + 2 4 × 0 ) = 1 IG(S, \text{Feature 1}) = 1 - \left(\frac{2}{4} \times 0 + \frac{2}{4} \times 0\right) = 1 IG(S,Feature 1)=1(42×0+42×0)=1

决策树构建

  1. 开始:从根节点开始,包含所有数据。
  2. 分割选择:选择使信息增益最大化的特征进行分割。
  3. 创建分支:为每个唯一值创建一个分支。
  4. 递归:对每个分支重复上述过程。
  5. 停止条件:当达到某个条件(如纯度达到一定程度,达到最大深度等)时停止。

最终,每个叶节点代表一个预测的类别或值。

信息增益(Information Gain)详解

信息增益是决策树算法中用于选择特征分割点的关键指标,它基于信息熵的减少量来评估特征的重要性。

信息熵(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

其中, S S S 是数据集, c c c 是类别的数量, p i p_i pi 是类别 i i i 在数据集中的比例。

示例:计算信息熵

假设我们有一个数据集,其中有9个样本属于类别A,5个样本属于类别B。信息熵计算如下:

H ( S ) = − ( 9 14 log ⁡ 2 9 14 + 5 14 log ⁡ 2 5 14 ) ≈ 0.940 H(S) = -\left(\frac{9}{14} \log_2 \frac{9}{14} + \frac{5}{14} \log_2 \frac{5}{14}\right) \approx 0.940 H(S)=(149log2149+145log2145)0.940

信息增益(Information Gain)

信息增益衡量了在某个特征上进行分割后信息熵的减少。信息增益越高,意味着该特征对于分类的贡献越大。信息增益定义为:

I G ( S , A ) = H ( S ) − ∑ t ∈ T ∣ S t ∣ ∣ S ∣ H ( S t ) IG(S, A) = H(S) - \sum_{t \in T} \frac{|S_t|}{|S|} H(S_t) IG(S,A)=H(S)tTSStH(St)

其中 A A A 是特征, T T T 是基于特征 A A A 的分割, S t S_t St 是分割后的子集。

示例:计算信息增益

假设我们根据某个特征(例如Feature 1)将上述数据集分为两个子集:

  • 子集1:6个属于类别A,2个属于类别B。
  • 子集2:3个属于类别A,3个属于类别B。

首先计算子集的信息熵:

H ( S 1 ) = − ( 6 8 log ⁡ 2 6 8 + 2 8 log ⁡ 2 2 8 ) ≈ 0.811 H(S_1) = -\left(\frac{6}{8} \log_2 \frac{6}{8} + \frac{2}{8} \log_2 \frac{2}{8}\right) \approx 0.811 H(S1)=(86log286+82log282)0.811

H ( S 2 ) = − ( 3 6 log ⁡ 2 3 6 + 3 6 log ⁡ 2 3 6 ) = 1 H(S_2) = -\left(\frac{3}{6} \log_2 \frac{3}{6} + \frac{3}{6} \log_2 \frac{3}{6}\right) = 1 H(S2)=(63log263+63log263)=1

然后,计算信息增益:

I G ( S , Feature 1 ) = 0.940 − ( 8 14 × 0.811 + 6 14 × 1 ) ≈ 0.048 IG(S, \text{Feature 1}) = 0.940 - \left(\frac{8}{14} \times 0.811 + \frac{6}{14} \times 1\right) \approx 0.048 IG(S,Feature 1)=0.940(148×0.811+146×1)0.048

结论

信息增益帮助我们确定哪个特征在分割数据时更有效。在构建决策树时,我们通常选择具有最高信息增益的特征作为分割点,以此逐步构建树的结构,从而提高分类的准确性。

相关推荐

  1. 决策详解

    2023-12-05 21:16:05       54 阅读
  2. 决策(分类决策

    2023-12-05 21:16:05       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-05 21:16:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-05 21:16:05       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-05 21:16:05       82 阅读
  4. Python语言-面向对象

    2023-12-05 21:16:05       91 阅读

热门阅读

  1. 编译ubuntu kernel

    2023-12-05 21:16:05       51 阅读
  2. LeetCode [中等]98. 验证二叉搜索树

    2023-12-05 21:16:05       62 阅读
  3. 尝试修改vim光标的思路

    2023-12-05 21:16:05       63 阅读
  4. 40. 组合总和 II

    2023-12-05 21:16:05       57 阅读
  5. oracle 去重

    2023-12-05 21:16:05       59 阅读
  6. 前端开发js中的class(类)继承

    2023-12-05 21:16:05       59 阅读
  7. 【C++】友元函数

    2023-12-05 21:16:05       62 阅读
  8. 爬虫-BeautifulSoup之XML篇

    2023-12-05 21:16:05       54 阅读