判定树归纳算法是一种贪心算法,它以自顶向下递归的各个击破方式构造判定树。选择具有最高信息增益的属性作为节点。
ID3算法:
Generate_decision_tree 由给定的训练数据产生一棵判定树
输入:训练样本samples,由离散值属性表示,候选属性的集合attribute_list
输出:一棵判定树
方法:
(1)创建节点N
(2)if samples都在同一个类C then
(3)返回N作为叶节点,以类C标记;
(4)if attribut_list为空 then
(5)返回N作为叶节点,标记为samples中最普通的类;
(6)选择attribute_list中具有最高信息增益的属性test_attribut;
(7)标记节点N为test_attribut;
(8)for each test_attribute中的已知值ai //划分samples
(9)由节点N长出一个条件为test_attribute=ai的分支;
(10)设si是samples中test_attribute=ai的样本的集合;//一个划分
(11)if si为空 then
(12)加上一个树叶,标记为samples中最普通的类;
(13)else加上一个由Generate_decision_tree(si,attribut_list-test_attribute)返回的节点;
信息增益计算公式:
Gain(A)=I(s1,s2,.....sm) - E(A)
举例如下:
I(s1,s2)=I(9,5)=9/14log9/14 - 5/14long5/14 = 0.940
E(age)=5/14I(s11,s21)+4/14I(s12,s22)+5/14(s13,s23)=0.694
Gain(age)=I(s1,s2)-E(age)=0.264