准备工作 | 选择特征 | 创建分支 | 是否终止 | 结果生成 |
---|---|---|---|---|
明确自变量和因变量 确定信息度量的方式 确定终止条件 |
得到当前待处理子集 计算所有特征信息度量 得到当前最佳分类特征 |
根据选中特征 将当前记录分成不同分支 分支个数取决于算法 |
判断是否满足终止条件 满足则退出循环 不满足则继续递归调用 |
判断是否需要剪枝 需要则进行适当修剪 不需要则为最终结果 |
例:根据现有的电脑购买记录,对购买者建模。该模型可以基于客户的一些信息预测他是否会购买电脑。
自变量:年龄、收入层次、是否单身、信用等级
因变量:是否购买电脑
常用的信息度量方式有熵和基尼系数,这里选择熵。
信息熵:信息混乱程度的度量,信息论里的概念,由香农提出,描述混乱程度的度量,取值范围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/100log(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/4∗log(2/4,2)−2/4∗log(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/3∗log(2/3,2)−1/3∗log(1/3,2))+1/4∗(−1∗log(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/2∗log(2/2,2))+2/4∗(−2/2∗log(2/2,2))=0
单纯考虑颜色的信息增益:1-0.689=0.311
单纯考虑味道的信息增益:1-0=1
基于这个数据集,我们想判断是否为水果时,应优先考虑信息增益大的特征——味道。
常用的分支终止条件有:(这里选择纯度)
计算整体的熵: 熵 整 体 = − 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 熵整体=−145log2145−149log2149=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(−53log253−52log252)+144(−44log244)+145(−53log253−52log252)=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(−42log242−42log242)+146(−64log264−62log262)+144(−43log243−41log241)=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(−76log276−71log271)+147(−74log274−73log273)=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(−82log282−86log286)+146(−63log263−63log263)=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
基于年龄的信息增益最大,即当前最佳特征,第一级特征选择年龄
年龄的取值有三种:青少年、中年、老年,按这三种分成三个数据子集
首先看青少年分支,看是否满足终止条件,不满足则继续选择当前最佳特征。
计算熵和信息增益
熵 整 体 ( 青 少 年 ) = 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
第二级特征选择单身,拆分数据集
青少年分支已经全部处理完了,接下来看中年分支
首先判断是否满足终止条件,可以看到,它的整体熵为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
第二级特征选择信用,拆分数据集
两个分支的整体熵均为0,纯度满足退出条件
此时,所有分支都已经处理完了
还有一种常见的决策树的分类方法
算法 | 支持模型 | 树结构 | 特征选择 | 连续值处理 | 缺失值处理 | 剪枝 |
---|---|---|---|---|---|---|
ID3 | 分类 | 多叉树 | 信息增益 | 不支持 | 不支持 | 不支持 |
C4.5 | 分类 | 多叉树 | 信息增益率 | 支持 | 支持 | 支持 |
CART | 分类、回归 | 二叉树 | 基尼系数 | 支持 | 支持 | 支持 |