算法:分类-有监督-决策树(ID3)

决策树

  • 决策树构建流程:
    • 观察数据,明确自变量和因变量
    • 明确信息度量方式
      • 信息熵
      • 信息增益
    • 明确分支终止条件
    • 构建决策树
      • 第一级特征选择
      • 产生分支
      • 第二级特征选择
      • 满足终止条件,退出分支
      • 继续计算其他分支
      • 生成结果
  • 其他决策树算法
    • ID3系列算法
    • CART 分类回归树
    • 对比

决策树构建流程:

准备工作
选择特征
创建分支
是否终止
结果生成
准备工作 选择特征 创建分支 是否终止 结果生成
明确自变量和因变量
确定信息度量的方式
确定终止条件
得到当前待处理子集
计算所有特征信息度量
得到当前最佳分类特征
根据选中特征
将当前记录分成不同分支
分支个数取决于算法
判断是否满足终止条件
满足则退出循环
不满足则继续递归调用
判断是否需要剪枝
需要则进行适当修剪
不需要则为最终结果

例:根据现有的电脑购买记录,对购买者建模。该模型可以基于客户的一些信息预测他是否会购买电脑。
算法:分类-有监督-决策树(ID3)_第1张图片

观察数据,明确自变量和因变量

自变量:年龄、收入层次、是否单身、信用等级
因变量:是否购买电脑

明确信息度量方式

常用的信息度量方式有熵和基尼系数,这里选择熵。

信息熵

信息熵:信息混乱程度的度量,信息论里的概念,由香农提出,描述混乱程度的度量,取值范围0、1,值越大,越混乱。
计算公式: H ( U ) = E [ − l o g p i ] = − ∑ i = 1 n p i l o g p i H(U)=E[-logp_i]=-\sum^n_{i=1}p_ilogp_i H(U)=E[logpi]=i=1npilogpi
例:有一堆苹果和梨共100个,随机拿出一个,拿出的是哪种?
1. 50个苹果+50个梨子
2. 0个苹果+100个梨子
3. 80个苹果+20个梨子
E1 = -50/100log(50/100,2)-50/100log(50/100,2)=1(混乱程度最高)
E2 = -100/100log(100/100,2)=0(混乱程度最低)
E3 = -20/100
log(20/100,2)-80/100*log(80/100,2)=0.722

信息增益

信息增益是确定性的增加,是从一个状态到另一个状态信息的变化,信息增益越大,对确定性贡献越大。
例:搜集了几种植物果实的颜色和味道,根据这两个信息确定是否为水果。

名称 颜色 是否甜 是否是水果
西红柿
黄瓜 绿
苹果
提子

一:不考虑任何特征, 直接去估计结果。其中,两个是水果,两个不是水果,概论均为2/4
E = − 2 / 4 ∗ l o g ( 2 / 4 , 2 ) − 2 / 4 ∗ l o g ( 2 / 4 , 2 ) = 1 E=-2/4*log(2/4,2)-2/4*log(2/4,2)=1 E=2/4log(2/4,2)2/4log(2/4,2)=1
二:考虑以颜色为参考信息,判断是否为水果。其中,红色的有3个,2个是水果,1个不是,绿色的都不是,概率分别为:2/3,1/3以及1,0
E = 3 / 4 ∗ ( − 2 / 3 ∗ l o g ( 2 / 3 , 2 ) − 1 / 3 ∗ l o g ( 1 / 3 , 2 ) ) + 1 / 4 ∗ ( − 1 ∗ l o g ( 1 , 2 ) ) = 0.689 E=3/4*(-2/3*log(2/3,2)-1/3*log(1/3,2))+1/4*(-1*log(1,2))=0.689 E=3/4(2/3log(2/3,2)1/3log(1/3,2))+1/4(1log(1,2))=0.689
三:考虑以味道为参考信息,判断是否为水果。其中,甜味的2个全是水果,不甜的2个全不是水果,概率分别为:1,0以及0,1
E = 2 / 4 ∗ ( − 2 / 2 ∗ l o g ( 2 / 2 , 2 ) ) + 2 / 4 ∗ ( − 2 / 2 ∗ l o g ( 2 / 2 , 2 ) ) = 0 E =2/4*(-2/2*log(2/2,2))+2/4*(-2/2*log(2/2,2))=0 E=2/4(2/2log(2/2,2))+2/4(2/2log(2/2,2))=0
单纯考虑颜色的信息增益:1-0.689=0.311
单纯考虑味道的信息增益:1-0=1
基于这个数据集,我们想判断是否为水果时,应优先考虑信息增益大的特征——味道。

明确分支终止条件

常用的分支终止条件有:(这里选择纯度)

  • 纯度:数据集内结果一致停止循环
  • 记录条数:数据集内记录条数等于或小于规定的记录条数时停止循环
  • 循环次数:循环一定次数后停止

构建决策树

算法:分类-有监督-决策树(ID3)_第2张图片

第一级特征选择

计算整体的熵: 熵 整 体 = − 5 14 l o g 2 5 14 − 9 14 l o g 2 9 14 = 0.940286 熵_{整体}=-\dfrac{5}{14}log_2\dfrac{5}{14}-\dfrac{9}{14}log_2\dfrac{9}{14}=0.940286 =145log2145149log2149=0.940286
计算年龄的熵: 熵 年 龄 = 5 14 ( − 3 5 l o g 2 3 5 − 2 5 l o g 2 2 5 ) + 4 14 ( − 4 4 l o g 2 4 4 ) + 5 14 ( − 3 5 l o g 2 3 5 − 2 5 l o g 2 2 5 ) = 0.694 熵_{年龄}=\dfrac{5}{14}(-\dfrac{3}{5}log_2\dfrac{3}{5}-\dfrac{2}{5}log_2\dfrac{2}{5})+\dfrac{4}{14}(-\dfrac{4}{4}log_2\dfrac{4}{4})+\dfrac{5}{14}(-\dfrac{3}{5}log_2\dfrac{3}{5}-\dfrac{2}{5}log_2\dfrac{2}{5})=0.694 =145(53log25352log252)+144(44log244)+145(53log25352log252)=0.694
计算收入层次的熵: 熵 收 入 = 4 14 ( − 2 4 l o g 2 2 4 − 2 4 l o g 2 2 4 ) + 6 14 ( − 4 6 l o g 2 4 6 − 2 6 l o g 2 2 6 ) + 4 14 ( − 3 4 l o g 2 3 4 − 1 4 l o g 2 1 4 ) = 0.911 熵_{收入}=\dfrac{4}{14}(-\dfrac{2}{4}log_2\dfrac{2}{4}-\dfrac{2}{4}log_2\dfrac{2}{4})+\dfrac{6}{14}(-\dfrac{4}{6}log_2\dfrac{4}{6}-\dfrac{2}{6}log2\dfrac{2}{6})+\dfrac{4}{14}(-\dfrac{3}{4}log_2\dfrac{3}{4}-\dfrac{1}{4}log_2\dfrac{1}{4})=0.911 =144(42log24242log242)+146(64log26462log262)+144(43log24341log241)=0.911
计算是否单身的熵: 熵 是 否 单 身 = 7 14 ( − 6 7 l o g 2 6 7 − 1 7 l o g 2 1 7 ) + 7 14 ( − 4 7 l o g 2 4 7 − 3 7 l o g 2 3 7 ) = 0.788 熵_{是否单身}=\dfrac{7}{14}(-\dfrac{6}{7}log_2\dfrac{6}{7}-\dfrac{1}{7}log_2\dfrac{1}{7})+\dfrac{7}{14}(-\dfrac{4}{7}log_2\dfrac{4}{7}-\dfrac{3}{7}log_2\dfrac{3}{7})=0.788 =147(76log27671log271)+147(74log27473log273)=0.788
计算信用等级的熵: 熵 信 用 等 级 = 8 14 ( − 2 8 l o g 2 2 8 − 6 8 l o g 2 6 8 ) + 6 14 ( − 3 6 l o g 2 3 6 − 3 6 l o g 2 3 6 ) = 0.892 熵_{信用等级}=\dfrac{8}{14}(-\dfrac{2}{8}log_2\dfrac{2}{8}-\dfrac{6}{8}log_2\dfrac{6}{8})+\dfrac{6}{14}(-\dfrac{3}{6}log_2\dfrac{3}{6}-\dfrac{3}{6}log_2\dfrac{3}{6})=0.892 =148(82log28286log286)+146(63log26363log263)=0.892
计算信息增益:
基于年龄的信息增益=0.94-0.694=0.246
基于收入的信息增益=0.94-0.911=0.029
基于单身的信息增益=0.94-0.788=0.152
基于信用的信息增益=0.94-0.892=0.048
基于年龄的信息增益最大,即当前最佳特征,第一级特征选择年龄

产生分支

年龄的取值有三种:青少年、中年、老年,按这三种分成三个数据子集
算法:分类-有监督-决策树(ID3)_第3张图片

第二级特征选择

首先看青少年分支,看是否满足终止条件,不满足则继续选择当前最佳特征。
计算熵和信息增益
熵 整 体 ( 青 少 年 ) = 0.971 熵_{整体(青少年)}=0.971 ()=0.971
熵 收 入 ( 青 少 年 ) = 0.4 ; 信 息 增 益 = 0.571 熵_{收入(青少年)}=0.4;信息增益=0.571 ()=0.4=0.571
熵 单 身 ( 青 少 年 ) = 0 ; 信 息 增 益 = 0.971 熵_{单身(青少年)}=0;信息增益=0.971 ()=0=0.971
熵 信 用 ( 青 少 年 ) = 0.951 ; 信 息 增 益 = 0.02 熵_{信用(青少年)}=0.951;信息增益=0.02 ()=0.951=0.02
第二级特征选择单身,拆分数据集
算法:分类-有监督-决策树(ID3)_第4张图片

满足终止条件,退出分支

两个分支的整体熵均为0,纯度已满足退出条件
算法:分类-有监督-决策树(ID3)_第5张图片

继续计算其他分支

青少年分支已经全部处理完了,接下来看中年分支
算法:分类-有监督-决策树(ID3)_第6张图片
首先判断是否满足终止条件,可以看到,它的整体熵为0,纯度已满足退出条件

中年分支也已经处理完了,接下来处理老年分支
判断是否满足终止条件,不满足则选择当前最佳特征
计算熵和信息增益
熵 整 体 ( 老 年 ) = 0.971 熵_{整体(老年)}=0.971 ()=0.971
熵 收 入 ( 老 年 ) = 0.951 ; 信 息 增 益 = 0.02 熵_{收入(老年)}=0.951;信息增益=0.02 ()=0.951=0.02
熵 单 身 ( 老 年 ) = 0.951 ; 信 息 增 益 = 0.02 熵_{单身(老年)}=0.951;信息增益=0.02 ()=0.951=0.02
熵 信 用 ( 老 年 ) = 0 ; 信 息 增 益 = 0.971 熵_{信用(老年)}=0;信息增益=0.971 ()=0=0.971
第二级特征选择信用,拆分数据集
算法:分类-有监督-决策树(ID3)_第7张图片
两个分支的整体熵均为0,纯度满足退出条件
此时,所有分支都已经处理完了

生成结果

算法:分类-有监督-决策树(ID3)_第8张图片

其他决策树算法

ID3系列算法

ID3(Iterative Dichotomiser 3,迭代树三代):
核心是信息熵,根据信息增益决定树的节点,但存在以下问题:
信息度量不合理:倾向于选择取值多的字段
输入类型但一:离散型
不做剪枝,容易过拟合
C4.5:相比于ID3的改进:
使用信息增益率代替信息增益
能对连续属性进行离散化,对不完整数据进行处理
能进行剪枝
C50:相比于C4.5的改进:
使用了Boosting
前修剪、后修剪

还有一种常见的决策树的分类方法

CART 分类回归树

  • 其核心是基尼系数(Gini)
  • 分类是二叉树
  • 支持连续值和离散值
  • 后剪枝进行修剪
  • 支持回归,可以预测连续值

对比

算法 支持模型 树结构 特征选择 连续值处理 缺失值处理 剪枝
ID3 分类 多叉树 信息增益 不支持 不支持 不支持
C4.5 分类 多叉树 信息增益率 支持 支持 支持
CART 分类、回归 二叉树 基尼系数 支持 支持 支持

你可能感兴趣的:(人工智能学习笔记)