决策树算法(带你了解其运作原理,和它的发展史)

  • 引言(定义)

决策树算法是一种直观且易于理解的机器学习算法,广泛应用于分类和回归问题。

它通过将数据实例的特征空间划分为若干个互不相交的子集,来构建一棵分类树。

决策树的每个内部节点表示一个特征属性上的判断条件,每个分支代表一个可能的属性值,每个叶子节点代表一个类别。通过从根节点到叶子节点的路径,可以实现对新实例的分类。

emm,这很好理解ヾ(^▽^*)))

  • 决策树基本原理

决策树算法的核心是递归地将数据集划分为更小的、更纯净的子集,直到达到某个停止条件。在这个过程中,算法会选择最优的特征属性进行划分,使得划分后的子集尽可能纯净,即属于同一类别的样本尽可能多。

决策树的构建过程通常包括三个步骤:特征选择、决策树生成和决策树剪枝。

1 特征选择

 选择最优特征进行划分是决策树算法的关键!( ̄︶ ̄)↗

常见的特征选择方法有信息增益、增益率和基尼指数等。这些方法都是为了评估划分前后数据集的纯度变化,从而选择最优的划分特征。

2 决策树生成

根据选择的特征,递归地将数据集划分为更小的子集,直到满足停止条件

(如子集中的样本数小于预设阈值、所有样本都属于同一类别等)

3 决策树剪枝

为了防止过拟合,那肯定需要对生成的决策树进行剪枝(^▽^ )

剪枝分为预剪枝和后剪枝两种。预剪枝是在决策树生成过程中提前停止树的生长,而后剪枝则是在决策树生成完成后,从底部开始剪去一些子树。
 

  • 决策树算法的种类

1 1ID3算法

最早提出的决策树构造算法之一。它以信息增益作为划分准则,每次选择信息增益最大的特征进行划分。然而,ID3算法只能处理离散特征,且容易过拟合。

2 C4.5算法

ID3算法的改进版。C4.5算法能够处理连续特征和离散特征,并通过引入增益率来解决信息增益的偏置问题。此外,C4.5算法还采用了剪枝技术来防止过拟合。

3 CART算法

基于回归树的决策树算法。CART算法使用基尼指数作为划分准则,既可用于分类问题也可用于回归问题。CART算法生成的决策树是二叉树,每个节点只有两个分支。

  • 决策树算法的实践

scikit-learn库来创建一个简单的决策树分类器。首先,请确保您已经安装了scikit-learn。如果没有,请通过运行pip install scikit-learn来安装它。

以下是一个使用scikit-learn创建和训练决策树分类器的简单示例:
 

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score

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

# 将数据集划分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

#创建决策树分类器实例
clf = DecisionTreeClassifier()

#在训练集上训练决策树
clf.fit(X_train, y_train)

#使用训练好的决策树对测试集进行预测
y_pred = clf.predict(X_test)

#计算并打印预测准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"Decision Tree Classification Accuracy:{accuracy *100:.2f}%"

#可视化决策树(可选)
from sklearn import tree
import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=(12,12))
tree.plot_tree(clf, filled=True, fontsize=10)
plt.show()

  

这段代码首先加载了鸢尾花(Iris)数据集,这是一个常用的分类任务数据集。然后,数据被划分为训练集和测试集。接下来,创建了一个DecisionTreeClassifier实例,并在训练集上对其进行训练。之后,使用训练好的模型对测试集进行预测,并计算预测的准确率。

最后,代码还包含了一个可选的部分,用于可视化决策树的结构。如果您希望看到决策树的可视化图,请确保您的环境中安装了matplotlib库。

  • 决策树算法的优点 缺点

 1 优点

1 直观易懂:生成的决策树可视化后易于理解和解释。
2 灵活性强:可以处理连续和离散特征,既可用于分类也可用于回归。
3 无需参数设置:如支持向量机、神经网络等算法需要调整大量参数,而决策树算法则无需设置参数。<(* ̄▽ ̄*)/

2 缺点
 

1 容易过拟合:生成的决策树可能过于复杂,导致对新数据的预测效果不佳。需要通过剪枝等技术来防止过拟合。
2 对噪声敏感:决策树算法对噪声数据比较敏感,可能会影响分类效果。
3 不稳定:数据集的微小变化可能导致生成的决策树结构发生较大变化。╥﹏╥...

  • 总结

决策树算法作为一种简单而有效的机器学习算法,在实际应用中发挥着重要作用。随着数据规模的不断增大和特征维度的不断增加,如何进一步提高决策树算法的效率和性能仍然是一个研究热点。未来,随着深度学习和神经网络等技术的发展,决策树算法可能会与其他算法相结合,形成更加复杂和强大的分类模型。
 

  • 38
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值