C4.5算法可以使用通用的称为TreeGrowth的决策树归纳算法作为生长算法。该算法的输入是训练集E和训练集F。算法递归地选择最佳属性以划分数据,并扩展树的叶节点,直到满足条件。
1.伪代码实现
TreeGrowth(E,F)
if stopping_cond(E,F) = true then
leaf = createNode()
leaf.label = Classify(E)
return leaf
else
root = createNode()
root.test_cond = find_best_split(E,F)
令V = {v | v是root.test_cond的一个可能的输出}
for each v ∈ V do
Ev = {e | root.test_cond(e) = v and e ∈ E}
child = TreeGrowth(Ev,F)
添加child为root的子节点,并将边(root——>child)标记为v
end for
end if
return root
2.算法所使用的函数如下
2.1 createNode()函数为决策树创建新节点对其扩展,决策树的节点要么有一个测试条件,记为node.test_cond,要么有一个类别标签,记为node.label。
2.2 find_best_split()函数确定当前选择哪个属性作为划分训练记录的测试条件。
2.3 Classify()函数确定叶节点的类别标签。
2.4 stoppping_cond()函数通过检查是否所有的记录都属于同一个类别,或者都具有相同的属性值,决定是否终止决策树的增长。