决策树
-
关于分类
- 分类
是机器学会一个分类函数或分类模型(也常称为分类器),该模型能把数据库中的数据项映射到给定类别中的某一个。 - 分类的目的
分析输入的数据,通过在训练集中的数据表现出来的特性,为每一个类找到一个准确的描述或者模型。由此生成的类描述用来对未来的测试数据进行分类 - 分类器构造方法
- 统计方法
- 机器学习法
- 神经网络方法
- 粗糙法
- 分类器的评价标准
- 预测准确度:应用的最多,特别是对于预测型分类任务。目前公认的是10拆分层交叉验证法(10-fold cross validation,最常用)
- 计算复杂度:在数据挖掘中由于操作对象是海量的数据库,因此空间 和时间复杂 度是一个非常重要的环节 。
- 模型描述简洁度:对于描述型分类任务,模型描述越简洁越受欢迎。
- 分类
-
决策树
- 概念
- 决策树是一种分类器,是一个有向、无环树。
- 树中根节点没有父节点,一个节点可以有多个或者没有子节点。
- 每个叶节点都对应一个类别标识C的值;每个内部节点都对应一个用于分割数据集的属性 X i X_i Xi,称为分割属性;每个内部节点都有一个分割判断规则 q j q_j qj。
- 节点n的分割属性和分割判断规则组成了节点n的分割标准。
- 概念
CLS算法
-
原理
从一棵空的决策树开始,选择某一属性作为测试属性,该测试属性对应决策树中的决策结点,根据该属性值的不同,可将训练样本分成相应的子集,如果该子集为空,或该子集中的样本属于同一类,则该子集为叶节点,否则该子集对应决策树的内部结点,即测试结点,需再选择一个新的测试属性进行划分,直到所有子集都为空或者属于同一类。 -
栗子
例如存在身高、体重、年龄等属性,从中选出一种属性,假设为身高,那么将样本按照身高进行划分,划分成多个子集,若子集为空或者子集中样本属于同一种类,那么该子集为叶子节点;否则继续取一种属性,假设为体重,继续划分。
ID3算法
-
问题提出
在上述CLS算法中,构造的决策树与选择的属性的顺序有关,如何正确的选取属性顺序成为了一个问题。ID3算法使用信息增益来决定选取的属性。
- 信息的度量
信息多少的度量。不同的数据资料包含的信息量可能差别很大,数据资料中含信息量的多少是由消除对事物认识的“不确定程度”来决定的。数据资料所消除的人们认识上“不确定程度”的大小,也就是数据资料中所包含信息的大小。 - 信息量公式
H ( x ) = − ∑ P ( X i ) l o g 2 P ( X i ) i = 1 , 2 , 3 , . . . . . . , n H(x) = -\sum P(X_i)log_2P(X_i) \\ i=1,2,3,......,n H(x)=−∑P(Xi)log2P(Xi)i=1,2,3,......,n - 定义4-2:若存在n个相同的概率的状态 ,则每个状态的概率p是1/n,一个消息可以消除状态出现的不确定性,该消息传递的信息量为
− l o g 2 ( p ) = l o g 2 ( n ) -log2(p)=log2(n) −log2(p)=log2(n) - 定义4-3:若给定的概率分布
P = ( p 1 , p 2 , . . . , p n ) P=(p1,p2,...,pn) P=(p1,p2,...,pn)一个消息可以消除各属性状态出现的不确定性,则该消息传递的信息量称为P的熵,即:
I ( P ) = − ( p 1 ∗ l o g 2 ( p 1 ) + . . . . p n ∗ l o g 2 ( p n ) ) I(P)=-(p1*log2(p1)+....pn*log2(pn)) I(P)=−(p1∗log2(p1)+....pn∗log2(pn)) - 定义4-4:若一个记录的集合T根据类别属性的值分成相互独立的类 c 1 , . . . , c k c1,...,ck c1,...,ck,则识别T的一个元素所属哪个类所需要的信息量是 i n f o ( T ) = I ( P ) info(T)=I(P) info(T)=I(P),其中P是 ( c 1 , c 2... c k ) (c1,c2...ck) (c1,c2...ck)的概率分布,即 P = ( ∣ c 1 ∣ / ∣ T ∣ , . . . . . . , ∣ c k ∣ / ∣ T ∣ ) P=(|c1|/|T|,......,|ck|/|T|) P=(∣c1∣/∣T∣,......,∣ck∣/∣T∣)在上例中: I n f o ( T ) = I ( 9 / 14 , 5 / 14 ) = 0.94 Info(T)=I(9/14,5/14)=0.94 Info(T)=I(9/14,5/14)=0.94
- 定义4-5:若我们先根据非类别属性X的值将T分成集合T1,T2…Tn,则确定T中的一个元素类的信息量可通过确定Ti的加权平均值来得到,即Info(Ti)的加权平均为: I N F O ( X , T ) = / ∣ T ∣ ∗ I N F O ( T i ) INFO(X,T)= / |T| *INFO(Ti) INFO(X,T)=/∣T∣∗INFO(Ti)在上例中针对属性Outlook可得:Info(Outlook)=0.694
- 定义4-6:将增益Gain(X,T)定义为:
G a i n ( X , T ) = I n f o ( T ) − I n f o ( X , T ) Gain(X,T)=Info(T)-Info(X,T) Gain(X,T)=Info(T)−Info(X,T)即增益的定义是两个信息量之 间的差值。 - 算法计算每个属性的信息增益 。具有最高信息增益 的属性 选作给定的集合T的测试属性。创建一个 节点 ,并以该属性标记,对属性的每个值创建分支,并据此划分样本。
- 信息的度量
-
举例
计算“年龄”的信息增益
ID | 年龄 | 收入 | 是否为学生 | 信用等级 | 是否购买电脑 |
---|---|---|---|---|---|
1 | <30 | 高 | 否 | 低 | 否 |
2 | <30 | 高 | 否 | 高 | 否 |
3 | 30-40 | 高 | 否 | 低 | 是 |
4 | >40 | 中 | 否 | 低 | 是 |
5 | >40 | 低 | 是 | 低 | 是 |
6 | >40 | 低 | 是 | 高 | 否 |
7 | 30-40 | 低 | 是 | 高 | 是 |
8 | <30 | 中 | 否 | 低 | 否 |
9 | <30 | 低 | 是 | 低 | 是 |
10 | >40 | 中 | 是 | 低 | 是 |
11 | <30 | 中 | 是 | 高 | 是 |
12 | 30-40 | 中 | 否 | 高 | 是 |
13 | 30-40 | 高 | 是 | 低 | 是 |
14 | >40 | 中 | 否 | 高 | 否 |
-
计算样本的期望信息
I ( s 1 , s 2 ) = I ( 9 , 5 ) = − 9 / 14 l o g 2 ( 9 / 14 ) − 5 / 14 l o g 2 ( 5 / 14 ) = 0.940 I(s_1,s_2)=I(9,5)=-9/14log2(9/14)-5/14log2(5/14)=0.940 I(s1,s2)=I(9,5)=−9/14log2(9/14)−5/14log2(5/14)=0.940
s1表示种类“是”,s2表示种类“否” -
计算age属性的熵
- age < 30
I ( s 11 , s 21 ) = − 2 / 5 l o g 2 ( 2 / 5 ) − 3 / 5 l o g 2 ( 3 / 5 ) = 0.971 I(s_{11},s_{21})=-2/5log2 (2/5)-3/5log2 (3/5)=0.971 I(s11,s21)=−2/5log2(2/5)−3/5log2(3/5)=0.971
其中s11表示age<30时种类“是”,s21表示age<30时种类“否” - age = 31-40
I ( s 12 , s 22 ) = 0 I(s_{12},s_{22})=0 I(s12,s22)=0
其中s11表示 age = 31-40时种类“是”,s21表示a age = 31-40时种类“否” - age > 40
I ( s 13 , s 23 ) = 0.971 I(s_{13},s_{23})=0.971 I(s13,s23)=0.971
其中s11表示age > 40时种类“是”,s21表示age > 40时种类“否”
- age < 30
-
计算期望信息
E ( a g e ) = 5 / 14 I ( s 11 , s 21 ) + 4 / 14 I ( s 12 , s 22 ) + 5 / 14 I ( s 13 , s 23 ) = 0.694 E(age)=5/14 I(s_{11},s_{21})+4/14I(s_{12},s_{22})+5/14I(s_{13},s_{23})=0.694 E(age)=5/14I(s11,s21)+4/14I(s12,s22)+5/14I(s13,s23)=0.694 -
计算增益
G a i n ( a g e ) = I ( s 1 , s 2 ) − E ( a g e ) = 0.246 Gain(age)=I(s_1,s_2)-E(age)=0.246 Gain(age)=I(s1,s2)−E(age)=0.246
- 计算所有属性的信息增益,选取信息增益最大的属性