热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深入解析:手把手教你构建决策树算法

本文详细介绍了机器学习中广泛应用的决策树算法,通过天气数据集的实例演示了ID3和CART算法的手动推导过程。文章长度约2000字,建议阅读时间5分钟。
作者:Arun Mohan 翻译:杨毅远 校对:王琦

本文长度为2000字,建议阅读5分钟。

### 决策树算法及其应用

决策树(Decision Tree)是机器学习中一种重要的分类与预测工具,广泛应用于分类和回归问题。本文将重点介绍其在分类中的应用,并通过一个具体的天气数据集来手动推导决策树的构建过程。

#### 什么是决策树?

决策树是一种具有树形结构的模型,每个内部节点表示对某个属性的测试,每个分支代表测试结果,而每个叶子节点(终端节点)则对应一个类别标签。决策树的一个显著优点是其高度可解释性,使得用户能够清晰理解模型的决策逻辑。

#### 相关术语

1. **熵(Entropy)**:熵是对信息随机性的度量。熵值越高,从该信息得出结论的难度越大。

2. **信息增益(Information Gain)**:信息增益衡量的是通过观察另一个随机变量所获得的信息量,可以视为父节点熵与子节点加权平均熵之间的差。

3. **基尼不纯度(Gini Impurity)**:基尼不纯度用于度量从集合中随机选择的数据被不正确标记的频率。基尼不纯度的下界为0,当数据集中仅包含一个类别时,基尼不纯度为0。

#### 构建决策树的常见算法

- **CART(Classification and Regression Trees)**:使用基尼不纯度作为度量标准。
- **ID3(Iterative Dichotomiser 3)**:使用熵和信息增益作为度量标准。

本文将详细介绍ID3算法,并基于天气数据集进行实现。

### 使用ID3算法进行分类

我们以一个简单的天气数据集为例,判断是否适合踢足球。自变量包括天气预报(outlook)、温度(Temperature)、湿度(Humidity)和风力(Wind),因变量是是否踢足球(Played football, yes/no)。

#### 步骤一:计算初始熵

首先计算类别变量(即因变量)的熵:

E(S) = -[(9/14)log(9/14) + (5/14)log(5/14)] = 0.94

接下来,我们需要计算每个特征的加权平均熵,并计算信息增益,选择具有最大信息增益的特征作为根节点。

#### 步骤二:计算信息增益

以天气预报(outlook)为例,计算其加权平均熵:

E(S, outlook) = (5/14)*E(3,2) + (4/14)*E(4,0) + (5/14)*E(2,3) = 0.693

然后计算信息增益:

IG(S, outlook) = 0.94 - 0.693 = 0.247

类似地,计算其他特征的信息增益:

IG(S, Temperature) = 0.940 - 0.911 = 0.029
IG(S, Humidity) = 0.940 - 0.788 = 0.152
IG(S, Windy) = 0.940 - 0.8932 = 0.048

由于天气预报(outlook)的信息增益最大,因此它成为决策树的根节点。

#### 构建子节点

接下来,我们继续构建子节点。对于晴天(sunny)的情况,重复上述步骤,计算其子节点的信息增益,最终确定湿度(Humidity)为晴天的子节点。

### 使用CART算法进行分类

CART算法与ID3类似,但使用基尼不纯度代替熵作为度量标准。具体步骤如下:

1. 计算因变量的基尼不纯度:
Gini(S) = 1 - [(9/14)² + (5/14)²] = 0.4591

2. 计算基尼增益:
首先计算各特征的加权平均基尼不纯度,然后选择具有最高基尼增益的特征作为根节点。

例如,天气预报(outlook)的基尼增益为:

Gini gain(S, outlook) = 0.459 - 0.342 = 0.117

### 决策树的优缺点

#### 优点

1. 决策树具有高度可解释性。
2. 需要很少的数据预处理。
3. 适用于低延迟应用。

#### 缺点

1. 可能对噪声数据产生过拟合,尤其是在决策树较深的情况下。可以通过剪枝等方法缓解这一问题。

参考文献:
1. [https://www.saedsayad.com/decision_tree.htm](https://www.saedsayad.com/decision_tree.htm)
2. Applied AI Course

原文标题:Decision Tree Algorithm With Hands On Example
原文链接:[https://medium.com/datadriveninvestor/decision-tree-algorithm-with-hands-on-example-e6c2afb40d38](https://medium.com/datadriveninvestor/decision-tree-algorithm-with-hands-on-example-e6c2afb40d38)
推荐阅读
author-avatar
手机用户2502937345
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有