机器学习(周志华)——第四章 决策树

本文介绍了决策树学习的三个关键步骤:特征选择、决策树生成和修剪。常见算法包括ID3、C4.5和CART。根节点代表所有样本,内部节点表示特征,叶节点表示类别。特征选择通过信息增益、增益率和基尼指数准则。预剪枝用于防止过拟合。ID3以信息增益为标准,C4.5使用增益率避免过多属性偏好,而CART基于基尼指数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、决策树学习算法包括哪几个部分?常用的算法有哪些?

决策树是一种基本的分类与回归方法,主要包含了 3 个步骤:特征选择、决策树的生成和决策树的修剪. 常见的决策树算法有:ID3,C4.5,CART.

2、决策树的根节点、内部节点和叶节点分别表示什么?

根节点 —— 一个特征或属性(包含所有测试样本)
内部节点 —— 一个特征或属性(包含部分测试样本)
叶节点 —— 一个类
决策树学习的损失函数通常是正则化的极大似然函数

3、特征选择的准则有哪些(如何选择最优划分属性)?

在属性划分的过程中,我们希望决策树的分支节点所包含的样本尽可能属于同一类别,即节点的 “纯度” 越来越高,这样就可以减少划分次数,节约计算资源.
**主要的准则有:**信息增益(information gain)、增益率(gain ratio)、基尼指数(gini)
(1) 信息增益
介绍信息增益前,需要对 “信息熵” 进行解释.
信息熵是度量样本集合纯度最常用的一种指标,信息熵越小,说明样本集合纯度越高. 假设当前集合 D D D 中第 k k k 类样本所占的比例为 p k p_{k} pk k k k = 1,2,…,| y y y|),则 D D D 的信息熵定义为:
E n t ( D ) = − ∑ k = 1 ∣ y ∣ p k l o g 2 p k Ent(D) = -\sum_{k=1}^{|y|}p_{k}log_{2}p_{k} Ent(D)=k=1ypklog2pk
假定对西瓜的离散属性 “敲声”(用 a 表示) 有 3 (用 v 表示,v=1,2,3) 个可能的取值 {浊响,沉闷,清脆},若使用 “敲声” 来对样本集 D D D 进行划分,则会产生 3 个分支结点,其中第 1 个分支结点包含了 D D D 中所有在 “敲声” 这一属性上取值为 “浊响” 的样本,记为 D 1 D^{1} D1. 我们可根据下式计算出 D 1 D^{1} D1 的信息熵,再考虑到不同的分支结点所包含的样本数不同,给分支结点赋予权重 | D v D^{v}

### 周志华机器学习第四章内容概述 周志华编著的《机器学习第四章主要聚焦于决策树这一重要的监督学习方法[^3]。该章节深入探讨了决策树的学习过程及其应用,具体涵盖了以下几个方面: #### 1. 决策树简介 介绍了决策树作为一种基本分类工具的概念和发展历史。 #### 2. 划分选择标准 讨论了几种不同的划分选择标准,包括但不限于: - **ID3算法** 使用信息增益作为衡量指标来决定如何分割数据集;然而这种方法倾向于选择具有更多取值可能性的特征。 - **C4.5算法** 改进了这一点,采用信息增益率代替简单的信息增益,从而更公平地对待不同数量级别的离散变量。 - **CART (Classification And Regression Trees)** 方法,则基于基尼系数来进行节点分裂的选择。 ```python def calculate_information_gain(data, feature): # 计算给定数据集的信息熵 entropy_before_split = compute_entropy(data) weighted_entropies_after_split = [] for value in set([row[feature] for row in data]): subset = [row for row in data if row[feature] == value] probability_of_value = len(subset)/len(data) entropy_for_subset = compute_entropy(subset) weighted_entropies_after_split.append(probability_of_value * entropy_for_subset) information_gain = entropy_before_split - sum(weighted_entropies_after_split) return information_gain def choose_best_feature_to_split(data): best_info_gain = -1 best_feature_index = None num_features = len(data[0]) - 1 # 减去标签列 for i in range(num_features): info_gain = calculate_information_gain(data, i) if(info_gain > best_info_gain): best_info_gain = info_gain best_feature_index = i return best_feature_index ``` #### 3. 过拟合处理 解释了过拟合现象以及通过剪枝等方式减少这种风险的方法和技术细节。 #### 4. 实践案例分析 提供了多个实际应用场景中的例子,并指导读者理解如何构建有效的决策树模型。 对于希望进一步了解或获取更多关于此主题资料的朋友来说,《机器学习》这本书本身就是一个非常好的起点。此外,在线平台上也有许多开源项目和教程可以帮助加深理解和实践操作技能[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值