决策树的预剪枝与后剪枝

前言:

本次讲解参考的仍是周志华的《机器学习》,采用的是书中的样例,按照我个人的理解对其进行了详细解释,希望大家能看得懂。

1、数据集

其中{1,2,3,6,7,10,14,15,16,17}为测试集,{4,5,8,9,11,12,13}为训练集。

2、预剪枝

预剪枝是要对划分前后泛化性能进行评估。对比决策树某节点生成前与生成后的泛化性能。

(1)在未划分前,根据训练集,类别标记为训练样例数最多的类别,由于训练集中的好瓜与坏瓜是相同多的类别,均为5,因此任选其中一类,书中选择了好瓜作为标记类别。

当所有节点集中在根节点,所有训练集属于标记类别的仅有{4,5,8},因此分类正确的是3/7*100%=42.9%

编号 好瓜(正确结果)
4
5
8
9
11
12
13
  3/7

(2)计算训练集的信息增益,得知脐部的信息增益最大,因此按照脐部进行划分。又因为在训练集中,凹陷特征好瓜的占比多,因此凹陷划分为好瓜,稍凹特征好过占比多,因此将其标记为好瓜,因此按照脐部划分的子树结果如下:

划分后,对比结果如下:

编号 好瓜(正确结果) 按照脐部划分
4(凹陷)
5(凹陷)
8(稍凹)
9(稍凹) 是(划分错误)
11(平坦)
12(平坦)
13(凹陷) 是(划分错误)
正确率 3/7 5/7(精度提高,划分)

(3)在脐部划分的基础上,进一步计算凹陷、根蒂特征下,其他属性的信息增益,根据计算结果可知,

决策树是一种常用的机器学习算法,用于分类和回归任务。剪枝和后剪枝决策树中用于防止过拟合的技术。 1. 决策树剪枝决策树剪枝是在构建决策树的过程中,在每个节点进行划分之前,通过一些条件来判断是否进行划分。常见的剪枝条件有以下几种: - 最大深度限制:限制决策树的最大深度,防止过拟合。 - 叶子节点样本数限制:限制叶子节点的最小样本数,防止过拟合。 - 信息增益阈值:限制信息增益的最小值,当信息增益小于阈值时停止划分。 以下是一个决策树剪枝的示例代码: ```python from sklearn.tree import DecisionTreeClassifier # 创建决策树分类器对象 clf = DecisionTreeClassifier(max_depth=5, min_samples_leaf=10, min_impurity_decrease=0.01) # 使用训练数据拟合分类器模型 clf.fit(X_train, y_train) # 使用测试数据进行测 y_pred = clf.predict(X_test) ``` 2. 决策树剪枝决策树剪枝是在构建完整的决策树之后,通过剪枝操作来减小决策树的复杂度,防止过拟合。常见的后剪枝方法有以下几种: - 代价复杂度剪枝:通过引入一个参数来平衡模型的复杂度和准确性,选择代价最小的子树作为最终的决策树。 - 错误率剪枝:通过计算剪枝前后的错误率,选择错误率最小的子树作为最终的决策树。 以下是一个决策树剪枝的示例代码: ```python from sklearn.tree import DecisionTreeClassifier from sklearn.tree import export_text # 创建决策树分类器对象 clf = DecisionTreeClassifier() # 使用训练数据拟合分类器模型 clf.fit(X_train, y_train) # 导出决策树的文本表示 tree_rules = export_text(clf, feature_names=feature_names) # 打印决策树的文本表示 print(tree_rules) ```
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值