文章目录
决策树定义
决策树及对某个数据集选择某个特征进行分裂,由此对数据进行分类


决策树构建过程
特征选择:从训练数据的特征中选择一个特征作为当前节点的分裂标准
决策树生成:根据所选特征评估标准,从上之下递归地生成子节点,直到数据集不可分则停止决策树生长
剪枝:如果决策树层次过于深,就会造成过拟合,需要剪枝来缩小树的结构和规模(包括预剪枝和后剪枝)
注意:决策树的生成是一个递归地过程,在决策树的基本算法中,有三种情况会导致递归返回:
1.当前节点包含的样本权属于同一类别,不需要划分了
2.当前属性集为空,或是所有样本在所有属性上取值相同,无法划分
3.当前节点包含的样本集为空不能划分
决策树算法
| ID3 | 通过信息增益 |
|---|---|
| C4.5 | 通过信息增益率 |
| CART | 通过基尼系数 |
- ID3
以信息论为基础,以信息熵和信息增益为衡量标准,从而实现对数据的归纳分类;
核心思想:以信息增益度量属性选择,选择分裂后信息增益最大的属性进行分裂
| 信息熵 | ![]() |
|---|---|
| 信息增益 | ![]() |
实例:

在以上案例中,样本个数:14 ;不购买的样本数:5;购买的样本数:9
第一步:计算数据集的信息熵

第二步确定第一次分裂的属性---->计算每个属性的信息增益,比较大小:
| 按年龄 | ![]() |
|---|---|
| 按收入 | ![]() |
| 按学生 | ![]() |
| 按信用 | ![]() |
| 最后比较信息增益 | 结果第一次按照年龄进行分裂 |
第三步确定第二次分裂的属性:
分裂过程与第一次相同,基于年龄的数据集之上


直到最后节点只有同类的数据就停止分裂
| 决策树优点 | 概念简单,计算复杂度不高,可解释性强,输出结果易于理解;数据的准备工作简单;对中间值的缺失不敏感;应用范围广 |
|---|---|
| 决策树的缺点 | 可能会产生过度匹配的问题;信息缺失时处理起来比较困难;信息增益来度量会偏向于取值较多的属性作为分类属性 |
- C4.5
ID3算法,属性只能是离散的,C4.5是对ID3算法的优化
| 改进1 | 用信息增益率代替信息增益来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性不足:![]() |
|---|---|
| 改进2 | 能够完成对连续值属性的离散化处理 |
| 改进3 | 能处理属性值缺失的情况 |
| 改进4 | 在决策树构造完成之后进行剪枝:预剪枝:事先设定需要生成几个层次的树,在完全正确分类训练集之后就停止树的生长;后剪枝:先让整棵树生成,然后再剪枝 |
实例:


- CART
ID3只适用于分类,通过每一列的信息增益
C4.5通过每一列的信息增益率
而CART通过分类之后的纯度-----基尼系数
分裂的目的是为了能够让数据变纯,使决策树输出的结果更接近真实值,如果是分类树,CART采用GINI值衡量节点纯度,如果是回归树,采用样本方差衡量节点纯度,节点越不纯,节点分类或者预测的效果就越差;
CART既可以做分类又可以做回归,是一颗二叉树

实例:

| 按有房情况 | ![]() |
|---|---|
| 按婚姻状况 | ![]() ![]() |
连续值的分裂:

ID3python实现
# -*- coding: utf-8 -*-
"""
Created on Sat Mar 7 11:58:40 2020
@author: DELL
"""

本文深入解析决策树算法,包括ID3、C4.5和CART的原理与Python实现。探讨决策树构建过程,特征选择,剪枝策略,以及算法优缺点。适合初学者和进阶者学习。











1819

被折叠的 条评论
为什么被折叠?



