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

决策树构建流程:

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

例:根据现有的电脑购买记录,对购买者建模。该模型可以基于客户的一些信息预测他是否会购买电脑。
电脑购买记录

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

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

明确信息度量方式

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

信息熵

信息熵:信息混乱程度的度量,信息论里的概念,由香农提出,描述混乱程度的度量,取值范围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
基于这个数据集,我们想判断是否为水果时,应优先考虑信息增益大的特征——味道。

明确分支终止条件

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

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

构建决策树

构建决策树

第一级特征选择

计算整体的熵: 熵 整 体 = − 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
基于年龄的信息增益最大,即当前最佳特征,第一级特征选择年龄

产生分支

年龄的取值有三种:青少年、中年、老年,按这三种分成三个数据子集
年龄分支

第二级特征选择

首先看青少年分支,看是否满足终止条件,不满足则继续选择当前最佳特征。
计算熵和信息增益
熵 整 体 ( 青 少 年 ) = 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,纯度已满足退出条件

中年分支也已经处理完了,接下来处理老年分支
判断是否满足终止条件,不满足则选择当前最佳特征
计算熵和信息增益
熵 整 体 ( 老 年 ) = 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系列算法

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

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

CART 分类回归树

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

对比

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

分数不是数

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值