决策树ID3算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 其中, 其中, 是第j个子集的权 并且等于子集( 个子集的权, 值为a 是第 个子集的权,并且等于子集(即A值为 j) 值为 s 中的样本个数除以S中的样本总数 熵值越小,子集划分的纯度越高。 中的样本总数。 中的样本个数除以 中的样本总数。熵值越小,子集划分的纯度越高。注 对于给定的子集S 意,对于给定的子集 j,
• 例:构造决策树。 构造决策树。 下表给出了取自AllElectronics顾客数据库元组训练集。 顾客数据库元组训练集。 下表给出了取自 顾客数据库元组训练集
编号
1 2 3 4 5 6 7 8 9 10 11 12 13 14
年龄
<=30 <=30 31…40 >40 >40 >40 31…40 <=30 <=30 >40 <=30 31…40 31…40 >40
收入
高 高 高 中等 低 低 低 中等 低 中等 中等 中等 高 中等
类别: 学生 信用等级 类别:购买电脑
否 否 否 否 是 是 是 否 是 是 是 否 是 否 一般 良好 一般 一般 一般 良好 良好 一般 一般 一般 良好 良好 一般 良好 不会购买 不会购买 会购买 会购买 会购买 不会购买 会购买 不会购买 会购买 会购买 会购买 会购买 会购买 不会购买
• 解:由题意可知: 由题意可知: • s=14,类标号属性“购买电脑”有两个不同值(即{会购买,不会 = ,类标号属性“购买电脑”有两个不同值( 会购买, 购买}),因此有两个不同的类( }),因此有两个不同的类 )。设类 购买}),因此有两个不同的类(即m=2)。设类 1对应于“会购买”, = )。设类C 对应于“会购买” 对应于“不会购买” 类C2对应于“不会购买”。则s1=9,s2=5,p1=9/14,p2=5/14。 , , , 。 • ①计算对给定样本分类所需的期望信息: 计算对给定样本分类所需的期望信息: 2 9 9 5 5 I ( s1 , s2 ) = I ( 9, 5 ) = − ∑ pi log 2 ( pi ) = − log 2 − log 2 = 0.940 14 14 14 14 i =1 • ②计算每个属性的熵。 计算每个属性的熵。 • 先计算属性“年龄”的熵。 先计算属性“年龄”的熵。 • 对于年龄=“<=30”:s11=2,s21=3,p11=2/5,p21=3/5, 对于年龄= : , , , , 2 2 3 3 I ( s 11 , s 2 1 ) = I ( 2 , 3 ) = − lo g 2 − lo g 2 = 0 .9 7 1 5 5 5 5 • • 对于年龄=“31…40”: s12=4,s22=0,p12=4/4=1,p22=0, 对于年龄= : , , , , • 4
• 设 sij 是子集 Sj 中类 Ci 的样本数。根据由 划分成子集的熵或期望信息由 的样本数。根据由A划分成子集的熵或期望信息由 下式给出: 下式给出:
E (A) =
v
∑
s1 j + s 2 j + ⋯ + s m j s
j =1
I ( s1 j , s 2 j , ⋯ , s m j )
s1 j + s2 j + ⋯ + smj
• 对于学生=“否”: s12=3,s22=4ห้องสมุดไป่ตู้p12=3/7,p22=4/7, 对于学生= , , , ,
I ( s12 , s 2 2 ) = I ( 3, 4 ) = −
3 3 4 4 log 2 − log 2 = 0.985 7 7 7 7
• 如果样本按“学生”划分,对一个给定的样本分类所需的期望信息为: 如果样本按“学生”划分,对一个给定的样本分类所需的期望信息为:
决策树 ID3算法 ID3算法
(1)决策树技术 )
构造决策树的基本算法是贪心算法, 构造决策树的基本算法是贪心算法,它以自顶向下递归的各个击 破方式构造决策树。一种著名的决策树算法是ID3,算法的基本策略 破方式构造决策树。一种著名的决策树算法是 , 如下: 如下: 创建一个节点。如果样本都在同一类,则算法停止, ①创建一个节点。如果样本都在同一类,则算法停止,把该节点改成 树叶节点,并用该类标记。 树叶节点,并用该类标记。 否则,选择一个能够最好的将训练集分类的属性, ②否则,选择一个能够最好的将训练集分类的属性,该属性作为该节 点的测试属性。 点的测试属性。 对测试属性中的每一个值,创建相应的一个分支,并据此划分样本。 ③对测试属性中的每一个值,创建相应的一个分支,并据此划分样本。 使用同样的过程,自顶向下的递归, ④使用同样的过程,自顶向下的递归,直到满足下面的三个条件中的 一个时就停止递归。 一个时就停止递归。 给定节点的所有样本都属于同一类。 给定节点的所有样本都属于同一类。 没有剩余的属性可以用来划分。 没有剩余的属性可以用来划分。 分支没有样本。 分支没有样本。
2 2 2 2 lo g 2 − lo g 2 =1 4 4 4 4 对于收入= 中等” 对于收入=“中等”: s12=4,s22=2,p12=4/6,p22=2/4, , , , , 4 4 2 2 I ( s 1 2 , s 2 2 ) = I ( 4 , 2 ) = − lo g 2 − lo g 2 = 0 .9 1 8 6 6 6 6 I ( s 11 , s 2 1 ) = I ( 2 , 2 ) = −
I ( s1 2 , s 2 2 ) = I ( 4, 0 ) = −
4
lo g 2 1 − 0 = 0
• 对于年龄=“>40”:s13=3,s23=2,p13=3/5,p23=2/5, 对于年龄= : , , , , 3 3 2 2 I ( s13 , s 2 3 ) = I ( 3, 2 ) = − lo g 2 − lo g 2 = 0 .9 7 1 5 5 5 5 • 如果样本按“年龄”划分,对一个给定的样本分类所需的期望信息为: 如果样本按“年龄”划分,对一个给定的样本分类所需的期望信息为: 5 4 5 E ( 年龄 ) = I ( s11 , s21 ) + I ( s12 , s22 ) + I ( s13 , s23 ) = 0.694 14 14 14 • 因此,这种划分的信息增益是 因此, • Gain(年龄 年龄)=I(s1,s2) - E(年龄 年龄)=0.246。 年龄 年龄 。 • 计算“收入”的熵。 计算“收入”的熵。 • 对于收入=“高”: s11=2,s21=2,p11=0.5,p21=0.5, 对于收入= , , , ,
•
4 6 4 E (收入 ) = I ( s11 , s21 ) + I ( s12 , s22 ) + I ( s13 , s23 ) = 0.911 14 14 14
• 因此,这种划分的信息增益是 因此, • Gain(收入 收入)=I(s1,s2) - E(收入 收入)=0.940-0.911=0.029。 收入 收入 = 。 • 计算“学生”的熵。 计算“学生”的熵。 • 对于学生=“是”:s11=6,s21=1,p11=6/7,p21=1/7, 对于学生= , , , , 6 6 1 1 I ( s 11 , s 2 1 ) = I ( 6 , 1 ) = − lo g 2 − lo g 2 = 0 .5 9 2 7 7 7 7
I ( s1 , s 2 , ⋯ , s m ) = − ∑ pi log 2 ( pi )
i =1
• 其中 i是任意样本属于 i的概率,并用 i/s估计。 其中p 是任意样本属于C 的概率,并用s 估计 估计。 • 设属性A具有 个不同值{a1,a2,…,av}。可以用属 具有v个不同值 设属性 具有 个不同值{ , }。可以用属 划分为v个子集 其中, 性A将S划分为 个子集{S1,S2,…,SV};其中,Sj包含 将 划分为 个子集{ , };其中 S中这样一些样本,它们在 上具有值 j。如果 选作测试 中这样一些样本, 上具有值a 如果A选作测试 中这样一些样本 它们在A上具有值 属性(即最好的分裂属性), ),则这些子集对应于由包含集 属性(即最好的分裂属性),则这些子集对应于由包含集 的节点生长出来的分枝。 合S的节点生长出来的分枝。 的节点生长出来的分枝
• • • • • • •
8.5 决策树
• 设S是s个数据样本的集合。假定类标号属性具有 个不同 个数据样本的集合。 是 个数据样本的集合 假定类标号属性具有m个不同 定义m个不同类 个不同类C = , , , )。 )。设 是类C 值,定义 个不同类 i(i=1,2,…,m)。设si是类 i中 的样本数。 的样本数。对一个给定的样本分类所需要的期望信息由下 m 式给出: 式给出:
I ( s1 j , s 2 j , ⋯ , s mj ) = − ∑ p ij log 2 ( p ij )
m
p • 其中, ij = 其中,
s ij S
j
i =1
的概率。 是 Sj 中的样本属于类 Ci 的概率。
• 在A上分枝将获得的编码信息是 Gain ( A) = I ( s1 , s2 ,⋯, sm ) − E ( A) 上分枝将获得的编码信息是 。 • Gain(A)称为信息增益,它是由于知道属性A的值而导致的熵的期望压缩。 Gain(A)称为信息增益 它是由于知道属性A的值而导致的熵的期望压缩。 称为信息增益, 具有最高信息增益的属性选作给定集合S的测试属性。创建一个节点, 具有最高信息增益的属性选作给定集合S的测试属性。创建一个节点,并 以该属性标记,对属性的每个值创建分枝,并据此划分样本。 以该属性标记,对属性的每个值创建分枝,并据此划分样本。
•
• 对于收入=“低”: s13=3,s23=1,p13=3/4,p23=1/4, 对于收入= , , , ,
3 3 1 1 log 2 − log 2 = 0.811 4 4 4 4 如果样本按“收入”划分,对一个给定的样本分类所需的期望信息为: 如果样本按“收入”划分,对一个给定的样本分类所需的期望信息为: I ( s13 , s 2 3 ) = I ( 3,1 ) = −
7 7 E ( 学生 ) = I ( s11 , s21 ) + I ( s12 , s22 ) = 0.789 14 14
• 如果样本按“信用等级”划分,对一个给定的样本分类所需的期望信 如果样本按“信用等级”划分, 息为: 息为: 8 6
14 14 • 因此,这种划分的信息增益是 因此, • Gain(信用等级 信用等级)=I(s1,s2) - E(信用等级 信用等级)=0.940-0.892=0.048。 信用等级 信用等级 = 。 • 由于 “年龄” 属性具有最高信息增益,它被选作测试属性。创建一个 年龄” 属性具有最高信息增益,它被选作测试属性。 节点, 年龄”标记,并对每个属性值引出一个分支。 节点,用“年龄”标记,并对每个属性值引出一个分支。样本据此划 如图所示。 分,如图所示。
• 因此,这种划分的信息增益是 因此, • Gain(学生 学生)=I(s1,s2) - E(学生 学生)=0.940-0.789=0.151。 学生 学生 = 。 • 计算“信用等级”的熵。 计算“信用等级”的熵。 • 对于信用等级=“一般”: s11=6,s21=2,p11=6/8,p21=2/8, 对于信用等级= 一般” , , , , 6 6 2 2 I ( s 11 , s 2 1 ) = I ( 6 , 2 ) = − lo g 2 − lo g 2 = 0 .8 1 1 8 8 8 8 • 对于信用等级=“良好”: s12=3,s22=3,p12=3/6,p22=3/6, 对于信用等级= 良好” , , , , 3 3 3 3 I ( s1 2 , s 2 2 ) = I ( 3, 3 ) = − lo g 2 − lo g 2 = 1 6 6 6 6
E ( 信用等级 ) =
I ( s11 , s21 ) +
I ( s12 , s22 ) = 0.892
年龄
<=30 收入 学生 信用等级
高 高 中等 低 中等 否 否 否 是 是 一般 良好 一般 一般 良好
• 例:构造决策树。 构造决策树。 下表给出了取自AllElectronics顾客数据库元组训练集。 顾客数据库元组训练集。 下表给出了取自 顾客数据库元组训练集
编号
1 2 3 4 5 6 7 8 9 10 11 12 13 14
年龄
<=30 <=30 31…40 >40 >40 >40 31…40 <=30 <=30 >40 <=30 31…40 31…40 >40
收入
高 高 高 中等 低 低 低 中等 低 中等 中等 中等 高 中等
类别: 学生 信用等级 类别:购买电脑
否 否 否 否 是 是 是 否 是 是 是 否 是 否 一般 良好 一般 一般 一般 良好 良好 一般 一般 一般 良好 良好 一般 良好 不会购买 不会购买 会购买 会购买 会购买 不会购买 会购买 不会购买 会购买 会购买 会购买 会购买 会购买 不会购买
• 解:由题意可知: 由题意可知: • s=14,类标号属性“购买电脑”有两个不同值(即{会购买,不会 = ,类标号属性“购买电脑”有两个不同值( 会购买, 购买}),因此有两个不同的类( }),因此有两个不同的类 )。设类 购买}),因此有两个不同的类(即m=2)。设类 1对应于“会购买”, = )。设类C 对应于“会购买” 对应于“不会购买” 类C2对应于“不会购买”。则s1=9,s2=5,p1=9/14,p2=5/14。 , , , 。 • ①计算对给定样本分类所需的期望信息: 计算对给定样本分类所需的期望信息: 2 9 9 5 5 I ( s1 , s2 ) = I ( 9, 5 ) = − ∑ pi log 2 ( pi ) = − log 2 − log 2 = 0.940 14 14 14 14 i =1 • ②计算每个属性的熵。 计算每个属性的熵。 • 先计算属性“年龄”的熵。 先计算属性“年龄”的熵。 • 对于年龄=“<=30”:s11=2,s21=3,p11=2/5,p21=3/5, 对于年龄= : , , , , 2 2 3 3 I ( s 11 , s 2 1 ) = I ( 2 , 3 ) = − lo g 2 − lo g 2 = 0 .9 7 1 5 5 5 5 • • 对于年龄=“31…40”: s12=4,s22=0,p12=4/4=1,p22=0, 对于年龄= : , , , , • 4
• 设 sij 是子集 Sj 中类 Ci 的样本数。根据由 划分成子集的熵或期望信息由 的样本数。根据由A划分成子集的熵或期望信息由 下式给出: 下式给出:
E (A) =
v
∑
s1 j + s 2 j + ⋯ + s m j s
j =1
I ( s1 j , s 2 j , ⋯ , s m j )
s1 j + s2 j + ⋯ + smj
• 对于学生=“否”: s12=3,s22=4ห้องสมุดไป่ตู้p12=3/7,p22=4/7, 对于学生= , , , ,
I ( s12 , s 2 2 ) = I ( 3, 4 ) = −
3 3 4 4 log 2 − log 2 = 0.985 7 7 7 7
• 如果样本按“学生”划分,对一个给定的样本分类所需的期望信息为: 如果样本按“学生”划分,对一个给定的样本分类所需的期望信息为:
决策树 ID3算法 ID3算法
(1)决策树技术 )
构造决策树的基本算法是贪心算法, 构造决策树的基本算法是贪心算法,它以自顶向下递归的各个击 破方式构造决策树。一种著名的决策树算法是ID3,算法的基本策略 破方式构造决策树。一种著名的决策树算法是 , 如下: 如下: 创建一个节点。如果样本都在同一类,则算法停止, ①创建一个节点。如果样本都在同一类,则算法停止,把该节点改成 树叶节点,并用该类标记。 树叶节点,并用该类标记。 否则,选择一个能够最好的将训练集分类的属性, ②否则,选择一个能够最好的将训练集分类的属性,该属性作为该节 点的测试属性。 点的测试属性。 对测试属性中的每一个值,创建相应的一个分支,并据此划分样本。 ③对测试属性中的每一个值,创建相应的一个分支,并据此划分样本。 使用同样的过程,自顶向下的递归, ④使用同样的过程,自顶向下的递归,直到满足下面的三个条件中的 一个时就停止递归。 一个时就停止递归。 给定节点的所有样本都属于同一类。 给定节点的所有样本都属于同一类。 没有剩余的属性可以用来划分。 没有剩余的属性可以用来划分。 分支没有样本。 分支没有样本。
2 2 2 2 lo g 2 − lo g 2 =1 4 4 4 4 对于收入= 中等” 对于收入=“中等”: s12=4,s22=2,p12=4/6,p22=2/4, , , , , 4 4 2 2 I ( s 1 2 , s 2 2 ) = I ( 4 , 2 ) = − lo g 2 − lo g 2 = 0 .9 1 8 6 6 6 6 I ( s 11 , s 2 1 ) = I ( 2 , 2 ) = −
I ( s1 2 , s 2 2 ) = I ( 4, 0 ) = −
4
lo g 2 1 − 0 = 0
• 对于年龄=“>40”:s13=3,s23=2,p13=3/5,p23=2/5, 对于年龄= : , , , , 3 3 2 2 I ( s13 , s 2 3 ) = I ( 3, 2 ) = − lo g 2 − lo g 2 = 0 .9 7 1 5 5 5 5 • 如果样本按“年龄”划分,对一个给定的样本分类所需的期望信息为: 如果样本按“年龄”划分,对一个给定的样本分类所需的期望信息为: 5 4 5 E ( 年龄 ) = I ( s11 , s21 ) + I ( s12 , s22 ) + I ( s13 , s23 ) = 0.694 14 14 14 • 因此,这种划分的信息增益是 因此, • Gain(年龄 年龄)=I(s1,s2) - E(年龄 年龄)=0.246。 年龄 年龄 。 • 计算“收入”的熵。 计算“收入”的熵。 • 对于收入=“高”: s11=2,s21=2,p11=0.5,p21=0.5, 对于收入= , , , ,
•
4 6 4 E (收入 ) = I ( s11 , s21 ) + I ( s12 , s22 ) + I ( s13 , s23 ) = 0.911 14 14 14
• 因此,这种划分的信息增益是 因此, • Gain(收入 收入)=I(s1,s2) - E(收入 收入)=0.940-0.911=0.029。 收入 收入 = 。 • 计算“学生”的熵。 计算“学生”的熵。 • 对于学生=“是”:s11=6,s21=1,p11=6/7,p21=1/7, 对于学生= , , , , 6 6 1 1 I ( s 11 , s 2 1 ) = I ( 6 , 1 ) = − lo g 2 − lo g 2 = 0 .5 9 2 7 7 7 7
I ( s1 , s 2 , ⋯ , s m ) = − ∑ pi log 2 ( pi )
i =1
• 其中 i是任意样本属于 i的概率,并用 i/s估计。 其中p 是任意样本属于C 的概率,并用s 估计 估计。 • 设属性A具有 个不同值{a1,a2,…,av}。可以用属 具有v个不同值 设属性 具有 个不同值{ , }。可以用属 划分为v个子集 其中, 性A将S划分为 个子集{S1,S2,…,SV};其中,Sj包含 将 划分为 个子集{ , };其中 S中这样一些样本,它们在 上具有值 j。如果 选作测试 中这样一些样本, 上具有值a 如果A选作测试 中这样一些样本 它们在A上具有值 属性(即最好的分裂属性), ),则这些子集对应于由包含集 属性(即最好的分裂属性),则这些子集对应于由包含集 的节点生长出来的分枝。 合S的节点生长出来的分枝。 的节点生长出来的分枝
• • • • • • •
8.5 决策树
• 设S是s个数据样本的集合。假定类标号属性具有 个不同 个数据样本的集合。 是 个数据样本的集合 假定类标号属性具有m个不同 定义m个不同类 个不同类C = , , , )。 )。设 是类C 值,定义 个不同类 i(i=1,2,…,m)。设si是类 i中 的样本数。 的样本数。对一个给定的样本分类所需要的期望信息由下 m 式给出: 式给出:
I ( s1 j , s 2 j , ⋯ , s mj ) = − ∑ p ij log 2 ( p ij )
m
p • 其中, ij = 其中,
s ij S
j
i =1
的概率。 是 Sj 中的样本属于类 Ci 的概率。
• 在A上分枝将获得的编码信息是 Gain ( A) = I ( s1 , s2 ,⋯, sm ) − E ( A) 上分枝将获得的编码信息是 。 • Gain(A)称为信息增益,它是由于知道属性A的值而导致的熵的期望压缩。 Gain(A)称为信息增益 它是由于知道属性A的值而导致的熵的期望压缩。 称为信息增益, 具有最高信息增益的属性选作给定集合S的测试属性。创建一个节点, 具有最高信息增益的属性选作给定集合S的测试属性。创建一个节点,并 以该属性标记,对属性的每个值创建分枝,并据此划分样本。 以该属性标记,对属性的每个值创建分枝,并据此划分样本。
•
• 对于收入=“低”: s13=3,s23=1,p13=3/4,p23=1/4, 对于收入= , , , ,
3 3 1 1 log 2 − log 2 = 0.811 4 4 4 4 如果样本按“收入”划分,对一个给定的样本分类所需的期望信息为: 如果样本按“收入”划分,对一个给定的样本分类所需的期望信息为: I ( s13 , s 2 3 ) = I ( 3,1 ) = −
7 7 E ( 学生 ) = I ( s11 , s21 ) + I ( s12 , s22 ) = 0.789 14 14
• 如果样本按“信用等级”划分,对一个给定的样本分类所需的期望信 如果样本按“信用等级”划分, 息为: 息为: 8 6
14 14 • 因此,这种划分的信息增益是 因此, • Gain(信用等级 信用等级)=I(s1,s2) - E(信用等级 信用等级)=0.940-0.892=0.048。 信用等级 信用等级 = 。 • 由于 “年龄” 属性具有最高信息增益,它被选作测试属性。创建一个 年龄” 属性具有最高信息增益,它被选作测试属性。 节点, 年龄”标记,并对每个属性值引出一个分支。 节点,用“年龄”标记,并对每个属性值引出一个分支。样本据此划 如图所示。 分,如图所示。
• 因此,这种划分的信息增益是 因此, • Gain(学生 学生)=I(s1,s2) - E(学生 学生)=0.940-0.789=0.151。 学生 学生 = 。 • 计算“信用等级”的熵。 计算“信用等级”的熵。 • 对于信用等级=“一般”: s11=6,s21=2,p11=6/8,p21=2/8, 对于信用等级= 一般” , , , , 6 6 2 2 I ( s 11 , s 2 1 ) = I ( 6 , 2 ) = − lo g 2 − lo g 2 = 0 .8 1 1 8 8 8 8 • 对于信用等级=“良好”: s12=3,s22=3,p12=3/6,p22=3/6, 对于信用等级= 良好” , , , , 3 3 3 3 I ( s1 2 , s 2 2 ) = I ( 3, 3 ) = − lo g 2 − lo g 2 = 1 6 6 6 6
E ( 信用等级 ) =
I ( s11 , s21 ) +
I ( s12 , s22 ) = 0.892
年龄
<=30 收入 学生 信用等级
高 高 中等 低 中等 否 否 否 是 是 一般 良好 一般 一般 良好