机器学习之决策树(ID3,C4.5,CRAT)

目录

前言

一、决策树

二、如何建立决策树

1. 数据准备:选择合适的特征和数据集,这是建立决策树的基础。

三.常见决策树的三种算法

1. ID3(Iterative Dichotomiser 3)

2. C4.5

3. CART(Classification and Regression Trees)

四.应用(三种算法的比较)

1.引入库

2.读入数据

3.算法实现

4.效果图

五.总结




前言

决策树是一种基于实例的学习算法,它通过创建决策树来描述分类或回归问题。决策树是一种常用的机器学习模型,它使用树形结构来表示分类或回归问题的决策过程。决策树的每个内部节点表示一个特征属性上的一个判断条件,每个分支代表一个可能的属性值,每个叶子节点表示一个类别或一个具体数值。 决策树在机器学习中的应用非常广泛,它可以用于分类和回归问题,并且具有易于理解和解释的优点。决策树可以用于预测新的未在训练数据中出现的数据,并且可以通过剪枝等技术来避免过拟合,从而提高模型的泛化能力。


一、决策树

决策树是一种流行的机器学习算法,它主要用于分类和回归任务。它是一种树形结构,用于对数据进行分类或预测。决策树的每个内部节点表示一个特征或属性上的测试,每个分支代表测试的结果,每个叶子节点表示一个类别或预测值。

决策树通过递归地分割数据集来构建,每次分割都是基于数据集中的某个特征。分割的过程是将数据集划分为多个子集,使得每个子集尽可能地纯,即每个子集中的样本尽可能属于同一类别。这个过程一直重复,直到满足某些停止条件,如所有子集只包含单一类别(纯节点)或达到预设的深度限制。

决策树的关键组成部分包括:

1. 根节点:代表整个数据集。
2. 内部节点:代表特征属性的测试,每个测试根据特征的不同取值将数据集划分成多个子集。
3. 分支:连接内部节点和叶子节点的边,代表特征测试的结果。
4. 叶子节点:代表最终的分类或预测结果,每个叶子节点包含一个类别标签或预测值。

决策树的学习过程包括选择最佳的属性来进行分割,这通常通过计算信息增益、增益率或基尼指数等指标来决定。信息增益越大的属性越有可能成为分割的依据。

决策树的优势在于其简洁性和易于理解,它能够以图形的方式直观地表示决策过程。此外,决策树可以处理非线性关系,并且对于缺失数据不太敏感。然而,决策树也可能面临过拟合的问题,因此常常需要通过剪枝等技术来优化。剪枝包括预剪枝(在构建树的过程中停止条件)和后剪枝(在树构建完成后删除一些节点)。


 

二、如何建立决策树

1. 数据准备:选择合适的特征和数据集,这是建立决策树的基础。

2. 构建决策树:选择一个根节点,然后递归地将数据集分割成多个子集。在每次分割过程中,选择一个最佳的特征来分割数据集,并确定分割点的值。这个过程一直重复,直到满足停止条件,如所有子集只包含单一类别或达到预设的深度限制。

3. 剪枝:为了防止过拟合,可以对决策树进行剪枝。预剪枝是在构建树的过程中停止条件,后剪枝是在树构建完成后删除一些节点。

4. 评估决策树:可以使用交叉验证或其他评估指标来评估决策树的性能。

在Python中,可以使用各种机器学习库(如Scikit-learn)来建立决策树。这些库提供了各种方便的工具和函数,可以帮助简化决策树的构建、剪枝和评估过程。

需要注意的是,决策树是一种相对简单的模型,但也存在一些挑战和限制。例如,决策树可能对噪声数据敏感,对非线性关系的处理能力有限,并且可能存在过拟合问题。因此,在使用决策树时,需要根据具体情况选择合适的算法和技术来优化模型性能。

三.常见决策树的三种算法

决策树有多种算法,其中最常用的三种算法是ID3、C4.5和CART。

1. ID3(Iterative Dichotomiser 3)

ID3算法是一种基于信息增益的决策树算法,用于处理分类问题。它通过计算每个特征的信息增益来选择最优的特征进行数据集的分割。信息增益衡量了使用这个特征进行分割后,分类结果的纯度提升的程度。ID3算法递归地选择最优特征并构建决策树,直到达到停止条件,如所有子集只包含单一类别或达到预设的深度限制。

以下是ID3算法中的公式示例:

1. 信息熵(Information Entropy)公式:

H(D) = -\sum_{i=1}^{n} p_i \log_2(p_i)

其中,H(D)表示数据集D的信息熵,$p_i$表示数据集D中某个类别的占比。

2. 条件熵(Conditional Entropy)公式:
H(D|A) = \sum_{i=1}^{k} \frac{|D_i|}{|D|} H(D_i)
其中,H(D|A)表示在特征A给定的条件下,数据集D的条件熵;$|D_i|$表示数据集D在特征A取值为i的样本个数;D表示数据集D的样本总数;k表示特征A的取值数目;$H(D_i)$表示特征A下取值为i的样本子集$D_i$的信息熵。

3. 信息增益(Information Gain)公式:

{Gain}(D, A) = H(D) - H(D|A)

其中,Gain(D, A)表示特征A对数据集D的信息增益,即使用特征A划分数据集D后,所获得的信息熵的减少量。

4. 最大信息增益准则:
A^* = \underset{A}{\operatorname{arg\,max}} \ \text{Gain}(D, A)
其中,$A^*$表示选择的最优特征,使得信息增益最大化。

这些公式是ID3算法中用于特征选择和决策树构建的重要指标。

2. C4.5

C4.5算法是ID3算法的改进版,它解决了ID3算法的一些限制。C4.5算法使用信息增益比 (Gain Ratio)来选择最优的特征进行数据集的分割,而不仅仅是信息增益。信息增益比考虑了特征的取值数目对信息增益的影响。另外,C4.5算法还引入了缺失值处理和连续特征处理的技术。通过这些改进,C4.5算法能够处理不同类型的数据和复杂的模式。

1. 信息熵(Information Entropy)公式:

H(D) = -\sum_{i=1}^{n} p_i \log_2(p_i)

其中,H(D)表示数据集$D$的信息熵,$p_i$表示数据集D中某个类别的占比。

2. 条件熵(Conditional Entropy)公式:

H(D|A) = \sum_{i=1}^{k} \frac{|D_i|}{|D|} H(D_i)
其中,H(D|A)表示在特征A给定的条件下,数据集D的条件熵;$|D_i|$表示数据集D在特征A下取值为i的样本个数;|D|表示数据集$D$的样本总数;k表示特征A的取值数目;$H(D_i)$表示特征$A$下取值为i的样本子集$D_i$的信息熵。

3. 信息增益比(Information Gain Ratio)公式:
{GainRatio}(D, A) = \frac{\text{Gain}(D, A)}{\text{SplitInfo}(D, A)}
其中,$\text{Gain}(D, A)$表示特征A对数据集D的信息增益;

\text{SplitInfo}(D, A)表示特征A的拆分信息,计算公式为:
\text{SplitInfo}(D, A) = -\sum_{i=1}^{k} \frac{|D_i|}{|D|} \log_2 \left( \frac{|D_i|}{|D|} \right)
$k$表示特征$A$的取值数目;$|D_i|$表示数据集$D$在特征$A$下取值为$i$的样本个数;$|D|$表示数据集$D$的样本总数。

4. 最大信息增益比准则:

A^* = \underset{A}{\operatorname{arg\,max}} \ \text{GainRatio}(D, A)
其中,$A^*$表示选择的最优特征,使得信息增益比最大化。

这些公式是C4.5算法中用于特征选择和决策树构建的重要指标。

3. CART(Classification and Regression Trees)

 CART算法是一种用于构建分类和回归树的决策树算法。对于分类问题,CART算法使用基尼指数(Gini Index)来选择最优特征进行数据集的分割。基尼指数衡量了使用这个特征进行分割后,分类结果的不纯度。对于回归问题,CART算法使用平方误差最小化的方法来选择最优特征进行数据集的分割。CART算法通过递归地分割数据集来构建决策树,并使用剪枝技术来避免过拟合。

以下是CART算法中常用的公式示例:

1. 基尼不纯度(Gini Impurity)公式:

I_G(p) = 1 - \sum_{i=1}^{n} p_i^2

其中,$I_G(p)$表示在某个节点上的基尼不纯度,$p_i$表示节点中属于类别i的样本的占比。

2. 基尼指数(Gini Index)公式:
I_G(D, A) = \frac{|D_1|}{|D|} \cdot I_G(D_1) + \frac{|D_2|}{D|} \cdot I_G(D_2)
其中,$I_G(D, A)$表示特征A基于数据集D的加权基尼指数;$|D_1|$$|D_2|$表示根据特征A的取值将数据集D划分为两个子集$D_1$$D_2$

3. 信息增益(Information Gain)公式:

\text{Gain}(D, A) = I_G(D) - I_G(D, A)

其中,$\text{Gain}(D, A)$表示特征A对数据集D的信息增益,即使用特征A划分数据集D后,所获得的基尼指数的减少量。

4. 最大信息增益准则:
A^* = \underset{A}{\operatorname{arg\,max}} \ \text{Gain}(D, A)
其中,$A^*$表示选择的最优特征,使得信息增益最大化。

这些公式是CART算法中用于特征选择和决策树构建的重要指标。

四.应用(三种算法的比较)

1.引入库

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier, plot_tree
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt

2.读入数据

# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target

3.算法实现

# 使用ID3算法建立决策树模型
clf_id3 = DecisionTreeClassifier(criterion='entropy', random_state=42)
clf_id3.fit(X_train, y_train)
y_pred_id3 = clf_id3.predict(X_test)
accuracy_id3 = accuracy_score(y_test, y_pred_id3)

# 使用C4.5算法建立决策树模型
clf_c45 = DecisionTreeClassifier(criterion='entropy', splitter='best', random_state=42)
clf_c45.fit(X_train, y_train)
y_pred_c45 = clf_c45.predict(X_test)
accuracy_c45 = accuracy_score(y_test, y_pred_c45)

# 使用CART算法建立决策树模型
clf_cart = DecisionTreeClassifier(criterion='gini', random_state=42)
clf_cart.fit(X_train, y_train)
y_pred_cart = clf_cart.predict(X_test)
accuracy_cart = accuracy_score(y_test, y_pred_cart)

print("ID3算法的准确率:", accuracy_id3)
print("C4.5算法的准确率:", accuracy_c45)
print("CART算法的准确率:", accuracy_cart)

4.效果图

                                                    三种算法准确率的比较

                                                                   ID3 的决策树

C4.5的决策树

                                                                           CART的决策树


五.总结

在分类问题上,C4.5算法更加全面。C4.5算法的信息增益比能够解决ID3算法倾向于选择取值较多特征的问题。而CART算法在处理大型数据集时,由于基于基尼指数,构建的决策树更简洁且计算效率更高。 - 在处理连续型特征上,CART算法表现较好。CART算法能够将连续特征二分割,并选择最佳分割点,从而更好地构建决策树。 - 在回归问题上,CART算法是首选。CART算法的决策树可以处理连续型因变量,而ID3和C4.5算法主要用于分类问题。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值