周志华 《机器学习》之 第四章(决策树)概念总结

看完周老师的决策树章节,首先从内容安排上采用了循序渐进的方式引入介绍决策树这种分类算法。书中从基本流程、划分选择、剪枝处理、连续与缺失值、多变量决策树五个方面进行详细介绍。看完之后我们如何理解决策树呢?
1、决策树的概念:首先我们可以明确决策树同其他机器学习算法一样,是一种解决分类问题的算法。从名字上我们可以看出决策树是一颗树的存储结构,图显示的话,这个算法应该就是一颗数。在机器学习中,一颗决策树包含一个根结点、若干个内部结点和若干个叶结点;根结点和内部结点都对应于一个属性测试,叶结点则对应于决策结果;每个结点包含的样本集合根据属性测试的结果被划分到子结点中;根结点包含样本全集。从根结点到每个叶结点的路径对应了一个判定测试序列;因此,可以想象一次次划分之后由根延伸出了许多分支,形象的说就是一棵树。
从决策树的概念中可以分析出,如何在每个内部结点处,属性测试中如何选择最优划分属性成为了构建决策树的关键。
2、划分选择书中介绍三种方法,分别是信息增益、增益率、基尼指数 提到基本概念如下:
信息熵:是度量样本集合纯度最常用的一种指标。信息熵的值越小,则样本集合的纯度就越高。
信息增益:信息增益我们可以理解为在划分样本集前后引起的信息熵的差异,一般而言,信息增益越大,则意味着使用的划分属性对样本集进行划分获得的“纯度提升”越大。
增益率:http://blog.youkuaiyun.com/athenaer/article/details/8425479
基尼指数:
3、剪枝处理主要讲述预剪枝和后剪枝
剪枝处理是决策树学习算法对付“过拟合”的主要手段。在决策树学习中,为了尽可能正确分类训练样本,结点划分过程将不断重复,有时会造成决策树分支过多,这时就可能因训练样本学得“太好”了,以致于把训练集自身的一些特点当做所有数据都具有的一般性质而导致过拟合。因此,可以通过主动去掉一些分支来降低过拟合的风险。
预剪枝:
后剪枝:
注:预剪枝基于“贪心”本质禁止这些分支展开,给预剪枝决策树带来了欠拟合的风险;后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树。但后剪枝过程是在生产完全决策树之后进行的,并且要自底向上的对树中的所有非叶结点进行逐一考察,因此其训练时间开销比未剪枝决策树和预剪枝决策树都要大很多。
4、连续与缺失值 本小结主要是对数据连续时以及缺失数据时的情况下如何处理构建决策树
连续属性离散化技术
遇到不完整样本,即样本的某些属性值缺失。引入

p
<script type="math/tex; mode=display" id="MathJax-Element-7">p</script>表示无缺失值样本所占比例。
5、多变量决策树

课后习题
http://blog.youkuaiyun.com/wzmsltw/article/details/51059394

### 周志华机器学习第四章内容概述 周志华编著的《机器学习第四章主要聚焦于决策树这一重要的监督学习方法[^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、付费专栏及课程。

余额充值