system: [SYSTEM]

user: 4. 实例分析 4.1. 实例介绍 动态规划算法在实际生活中应用非常广泛，如在学校的教务系统中根据学生的考试成绩，就可以预测到学生的文理科情况。表5是某中学教务系统中学生的语文、数学、英语考试成绩，其中r i 表示学生。 用0和1分别表示条件属性值中的“一般”和“好”；用1、2和3分别表示决策集中的“艺术生”、“文科生”、“理科生”；用f i 表示“语文”、“数学”、“英语”科目。这样将表5转化成抽象的二值属性的多值决策表(见表6)。 4.2. 最小决策树构造 本节以多值决策表T 0 为例(见表6)，利用第3节中提到的动态规划算法构造多值决策表的最小决策树。具体步骤如下： Step1：假定S(T) = {T 0 }，且对T 0 未做过任何的处理，令T s = T 0 可写出表T s 的子表T s (f 1 ， 0)，T s (f 1 ， 1)，T s (f 2 ， 0)，T s (f 2 ， 1)，T s (f 3 ， 0)，T s (f 3 ， 1)。见表7~12。 表7~12在S(T)集合中未出现，所以将这6个子表添加到S(T)集合中，得到新的S(T) = {T 0 ， T s (f 1 ， 0)， T s (f 1 ， 1)， T s (f 2 ， 0)， T s (f 2 ， 1)， T s (f 3 ， 0)， T s (f 3 ， 1)}，并对表T 0 作标记表示已被处理。 Step2：在S(T)集合中选择一个未处理过的子表，令T s = T s (f 1 ， 0)，这时T s 的子表为T s (f 1 ， 0)(f 2 ， 0)，T s (f 1 ， 0)(f 2 ， 1)，T s (f 1 ， 0)(f 3 ， 0)，T s (f 1 ， 0)(f 3 ， 1)。列举如下(见表13~16)。 将这4个子表添加到S(T)集合中，得到新的S(T) = {T 0 ， T s (f 1 ， 0)， T s (f 1 ， 1)， T s (f 2 ， 0)， T s (f 2 ， 1)， T s (f 3 ， 0)， T s (f 3 ， 1)， T s (f 1 ， 0)(f 2 ， 0)， T s (f 1 ， 0)(f 2 ， 1)， T s (f 1 ， 0)(f 3 ， 0)， T s (f 1 ， 0)(f 3 ， 1)}，并对表T 0 ，T s (f 1 ， 0)，T s (f 1 ， 0)(f 2 ， 1)，T s (f 1 ， 0)(f 3 ， 0)作标记表示已被处理。 按照同样的方法，最后得出S(T)={T 0 ， T s (f 1 ， 0)， T s (f 1 ， 1)， T s (f 2 ， 0)， T s (f 2 ， 1)， T s (f 3 ， 0)， T s (f 3 ， 1)， T s (f 1 ， 0)(f 2 ， 0)， T s (f 1 ， 0)(f 2 ， 1)， T s (f 1 ， 0)(f 3 ， 0)， T s (f 1 ， 0)(f 3 ， 1)， T s (f 1 ， 1)(f 2 ， 0)， T s (f 1 ， 1)(f 2 ， 1)， T s (f 2 ， 0)(f 3 ， 1)， T s (f 1 ， 0)(f 2 ， 0)(f 3 ， 0)， T s (f 1 ， 0)(f 2 ， 0)(f 3 ， 1)}。其中在S(T)集合中的结果是互异的，但是同一个结果可能是多个不同表的子表，如T s (f 1 ， 1)(f 2 ， 0)和T s (f 1 ， 1)(f 3 ， 1)。 Step3：选择S(T)集合中的任意一个表，当选择T表时，由于T表为非退化表，所以根据算法2得出以下结果(图2)，其中Γ f 1 、Γ f 2 、Γ f 3 分别表示T s (f 1 ， 0)和T s (f 1 ， 1)，T s (f 2 ， 0)和T s (f 2 ， 1)，T s (f 3 ， 0)和T s (f 3 ， 1)所对应的决策树子树。 在以上的决策树中选择规模最小的决策树。由于它们的规模是一样的，所以要对每一个决策树进行拓展。下面以选择表T s (f 1 ， 0)为例。 Step4：当选择T的子表T s (f 1 ， 0)时，得到的结果是Γ f 2 和Γ f 3 ，但Γ f 2 和Γ f 3 分别表示T s (f 1 ， 0)(f 2 ， 0)和T s (f 1 ， 0)(f 2 ， 1)，T s (f 1 ， 0)(f 3 ， 0)和T s (f 1 ， 0)(f 3 ， 1)所对应的决策树子树。 当选择T的子表T s (f 1 ， 1)时，由于该表为退化表，所以将共同决策3作为叶子节点，故结合以上三个表的选取，得到的决策树如图3所示。 Step5：当选择T s (f 1 ， 0)的子表T s (f 1 ， 0)(f 2 ， 0)时，得到的决策树为Γ f 1，f2，f3 ；当选择T s (f 1 ， 0)的子表T s (f 1 ， 0)(f 3 ， 0)和T s (f 1 ， 0)(f 3 ， 1)，得到决策树Γ f 1，f3 。由于Γ f 1，f3 的规模比Γ f 1，f2，f3 小，因此选择决策树Γ f 1，f3 (图4)。 利用同样的方法可对决策树Γ f 2 和Γ f 3 进行构造，构造后的结果如图5所示。 由于Γ f 3，f2，f1 会使决策树的规模变得更大，所以在拓展过程中不考虑它的拓展。由以上的决策树可以看出，Γ f 2，f1，f3 ，Γ f 2，f3，f1 ，Γ f 3，f2，f1 比Γ f 1，f3 的规模大，且Γ f 1，f3 已经是完整的决策树，所以Γ f 1，f3 是多值决策表T 0 规模最小的决策树。因此，多值决策表(表5)根据动态规划算法构造出最小决策树(见图6)。 Table 5 A student’s rank tabl 学生 数学 英语 语文 类别 r 1 一般 一般 一般 {艺术生} r 2 一般 好 好 {艺术生，文科生} r 3 好 一般 好 {艺术生，理科生} r 4 好 好 一般 {文科生，理科生} r 5 一般 一般 好 {文科生} 表5. 学生成绩等级表 Table 6 A multi-label decision table T T 0 f 1 f 2 f 3 d r 1 0 0 0 {1} r 2 0 1 1 {1，2} r 3 1 0 1 {1，3} r 4 1 1 0 {2，3} r 5 0 0 1 {2} 表6. 多值决策表T 0 Table 7 A subtable Ts(f1， 0) of the multi-label decision table T T s (f 1 ， 0) f 1 f 2 f 3 d r 1 0 0 0 {1} r 2 0 1 1 {1，2} r 5 0 0 1 {2} 表7. 多值决策表T 0 的子表T s (f 1 ， 0) Table 8 A subtable Ts(f1， 1) of the multi-label decision table T T s (f 1 ， 1) f 1 f 2 f 3 d r 3 1 0 1 {1，3} r 4 1 1 0 {2，3} 表8. 多值决策表T 0 的子表T s (f 1 ， 1) Table 9 A subtable Ts(f2， 0) of the multi-label decision table T T s (f 2 ， 0) f 1 f 2 f 3 d r 1 0 0 0 {1} r 3 1 0 1 {1，3} r 5 0 0 1 {2} 表9. 多值决策表T 0 的子表T s (f 2 ， 0) Table 1 0 A subtable Ts(f2， 1) of the multi-label decision table T T s (f 2 ， 1) f 1 f 2 f 3 d r 2 0 1 1 {1，2} r 4 1 1 0 {2，3} 表10. 多值决策表T 0 的子表T s (f 2 ， 1) Table 1 1 A subtable Ts(f3， 0) of the multi-label decision table T T s (f 3 ， 0) f 1 f 2 f 3 d r 1 0 0 0 {1} r 4 1 1 0 {2，3} 表11. 多值决策表T 0 的子表T s (f 3 ， 0) Table 1 2 A subtable Ts(f3， 1) of the multi-label decision table T T s (f 3 ， 1) f 1 f 2 f 3 d r 2 0 1 1 {1，2} r 3 1 0 1 {1，3} r 5 0 0 1 {2} 表12. 多值决策表T 0 的子表T s (f 3 ， 1) Table 1 3 A subtable Ts(f1， 0)(f2， 0) of the multi-label decision table T T s (f 1 ， 0)(f 2 ， 0) f 1 f 2 f 3 d r 1 0 0 0 {1} r 5 0 0 1 {2} 表13. 多值决策表T 0 的子表T s (f 1 ， 0)(f 2 ， 0) Table 1 4 A subtable Ts(f1， 0)(f2， 1) of the multi-label decision table T T s (f 1 ， 0)(f 2 ， 1) f 1 f 2 f 3 d r 2 0 1 1 {1，2} 表14. 多值决策表T 0 的子表T s (f 1 ， 0)(f 2 ， 1) Table 1 5 A subtable Ts(f1， 0)(f3， 0) of the multi-label decision table T T s (f 1 ， 0)(f 3 ， 0) f 1 f 2 f 3 d r 1 0 0 0 {1} 表15. 多值决策表T 0 的子表T s (f 1 ， 0)(f 3 ， 0) Table 1 6 A subtable Ts(f1， 0)(f3， 1) of the multi-label decision table T T s (f 1 ， 0)(f 3 ， 1) f 1 f 2 f 3 d r 2 0 1 1 {1，2} r 5 0 0 1 {2} 表16. 多值决策表T 0 的子表T s (f 1 ， 0)(f 3 ， 1) 图2. 决策树子树。(1) Γ f 1 ；(2) Γ f 2 ；(3) Γ f 3 图3. 决策树子树。(1) Γ f 1，f2 ；(2) Γ f 1，f3 图4. 决策树子树。(1) Γ f 1，f2，f3 ；(2) Γ f 1，f3 图5. 决策树子树。(1) Γ f 2，f1，f3 ，(2) Γ f 2，f3，f1 ，(3) Γ f 3，f2，f1 图6. 动态规划算法的分类结果 4.3. 性能比较 本节利用已有的贪心算法构造多值决策表的决策树，通过比较进一步说明动态规划算法的构造性能。在贪心算法中，我们需要选择更小的子表，直到我们得到可以用于标记叶子节点的退化表，使用自顶向下的顺序构造决策树。在每一步中进行的贪心选择属性是根据不确定性测度和不纯度函数的类型。具体构造过程如下： Step1：选择的子表T 0 为表T，即T 0 = T，树G中只有一个根节点v，所以用T 0 标记节点v。通过使用表6中的数据计算不纯度函数I(T 0 ， f 1 )、I(T 0 ， f 2 )、I(T 0 ， f 3 )的值分别为3，3，7，由于I(T 0 ， f 1 ) = I(T 0 ， f 2 )相等，所以取f i 中i值小的I(T 0 ， f 1 )，用f 1 代替T 0 标记节点v，对于每个δ，δ∈E(T′， f 2 ) = {0， 1}，在树G中加入节点v 0 ，v 1 ，分别与连接节点v相连并将边标记为0，1，分别用子表T(f 1 ， 0)，T(f 1 ， 1)标记节点v 0 ，v 1 ，结果如图7所示。 Step2：在子表T(f 1 ， 0) ，T(f 1 ， 1)中任选选择一个如T(f 1 ， 0)即T 0 = T(f 1 ， 0)。使用表7~11中的数据计算不纯度函数I(T 0 ， f 2 )、I(T 0 ， f 3 )的值分别为5和0，所以选择f 3 ，用f 3 代替T 0 标记节点v 0 ，分别用子表T(f 1 ， 0) (f 3 ， 0)、T(f 1 ， 1) (f 3 ， 1)标记节点v 0 ，v 1 ，结果如图8所示。 重复上述过程得到最终的决策树(图9)。因此，多值决策表(表5)根据贪心算法构造出的决策树(见图10)。 由动态规划算法构造多值决策表的决策树(图6)与贪心算法构造多值决策表的决策树(图10)进行对比，可得出贪心算法构造出的决策树不是最小的。