1.算法过程
- 决策树的生成是一个递归过程。
1.1递归返回
- 叶节点生成过程
- 当前节点样本全属于同一类,无需划分
- 当前属性集为空或者所有样本在所有属性上取值相同,无法划分,并设置为所含样本最多的类别
- 当前节点样本为空,不能划分,并设置为++父节点++所含样本最多类别
1.2伪代码
定义函数TreeGenerate,输入为样本集D和属性集A;
节点node;
if D中样本全为同一类别C,then node=C,return; # 无需划分
if A is null or D在A上取值相同,then node=D中样本最多的类;# 无法划分
找到最优划分属性a;
遍历(for)属性a中每一个值,av为其中一个值;
从node上生成新分支node1,Dv表示样本D在属性a上取值为av的子集;
if Dv is null, then node1设置为叶节点,标记为D中样本最多的类,return;# 不能划分
else 执行函数TreeGenerate,输入为Dv和去掉a后的A* # 递归过程
遍历(for)结束
1.3划分选择
- 所含样本尽可能属于同一类别,节点++纯度++越来越高。
- 信息熵、信息增益、增益率、基尼指数的公式均需牢记并理解。
1.3.1信息熵
- 度量样本集合纯度最常用的一种指标。越小,纯度越高。最小值为0,即全属于同一类。
1.3.2信息增益
1.3.3增益率
- 增益率对取值数目较少的属性有所偏好。
- C4.5不直接选择增益率最大属性。++先++找出信息增益高于平均水平的属性,++再++从中选择增益率最高的。
- 这样就避免选择了增益率高,但增益反而低的属性。
1.3.4基尼指数
- 反映从数据集随机抽取两个样本,类别标记不一致的概率。
- 选择划分后基尼指数最小的属性。