决策树学习基本算法:
输入:训练集
D=(x1,y1),(x2,y2)......(xm,ym)
;
输出:属性集
A=a1,a2...ad
;
过程:函数
TreeGenerate(D,A)
;
- 生成节点 node ;
-
ifD
中样本全属于同一类别
C
then - 将 node 标记为C类叶节点; return;
- endif
-
ifA=∅ORD
中样本在
A
上取值相同
then - 将
node
标记为叶节点,其类别标记为
D
中样本数最多的类;
return - endif
- 从A中选择最优划分属性 a∗ .选取算法有多种
- for a∗ 的每一个值 a v∗do
- 为 node 生成一个分支,令 Dv 表示在 a∗ 上取值为 av∗ 的样本子集;
- ifDv 为空 then
- 将分支节点标记为叶节点,其类别标记为
D
中样本最多的类;
return - else
- 以 TreeGenerate(Dv,A−(a∗)) 为分支结点
- endif
- endfor
输出:以 node 为根节点的一颗决策树
在决策数算法中,有三种情形会导致递归返回:
- 当前结点包含的样本点全属于同一类别,无需划分;
- 当前属性集为空,或是所有样本在所有属性上取值相同,无法划分;
- 当前结点包含的样本集为空,不能划分;
在第(2)种情形下,我们把当前结点标记为叶节点,并将其类别设定为该结点所含样本最多的类别;在第(3)种情形下,同样把当前结点标记为叶结点,但其类别设定为父节点所含样本最多的类别。注意这两种处理实质不同:前者实在利用当前结点的后验分布;而后者是利用父节点的样本分布作为当前结点的先验分布。
两种典型的算法:
(一)ID3算法-分类
ID3算法的核心是在决策树各个结点上应用信息增益准则选择特征,递归的构造决策树。但以信息增益作为划分训练数据集的特征,存在偏向于选择取值较多的特征问题
(二)C4.5算法-分类
C4.5算法与ID3算法类似,在后者基础上做了几点改进
- 先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择信息增益率最高的。
- 可以对连续属性进行处理
- 可以对缺失属性进行处理