1.算法流程
给定样本集D((x1,y1),(x2,y2)......(xn,yn)),和属性A{a1,a2,....an}
(1)若当前节点样本全部为同一类C,则将当前节点设为叶结点,并将其结点的类别设为C。
(2)若当前结点,属性集A为空,或者样本在属性集A上的取值相同,则将当前结点设为叶结点,并将其结点的类别设为D中数目最多的类。
(3)若当前结点的样本集为空,则把父节点的类别作为当前结点的类别。
(4)否则,从A结点中找出最优的划分属性ai,
(5)对于ai的不同取值av,分别生成子节点,子节点的样本集为D中在ai上取值为av的子集Dv,属性集为、A-ai.
(6)循环递归
2.划分选择
从算法流程中可以看出,决策树算法的关键在于划分属性的选择。
(1)信息增益
信息熵:信息熵越小,表明样本集D的纯度越高
信息增益越大,表明属性a划分所得到的纯度提升越大。
信息增益对可取值数目较多属性有所偏好
(2)信息增益率
信息增益率对取值数目较少的属性有所偏好
(3)基尼指数
基尼指数表示随机从样本集中抽取两个样本,两个样本不属于同一类的概论。
3.剪枝处理
判断增加的分支是否对提高决策树的泛化能力有所帮助,如果不能提升泛化能力则进行剪枝。
(1)预剪枝
在分支之前进行测试,如果没有提升则不进行剪枝。
速度快,但是在当前结点不会提升性能不代表在之后的结点不会提升性能,从而带来了欠拟合的风险。
(2)后剪枝
在决策树建立之后,从下而上进行剪枝,判断将当前分支替换为父结点是否会造成性能的下降,如果不能则替换之。
训练时间久,欠拟合的风险小。
4.连续与缺失值
(1)对连续值的处理是将其离散化。
(2)对缺失值的处理是:
在选择最优划分时,只使用没有缺失值的样本进行计算。
在划分类别时,将有缺失值的样本划分到所有子节点类别中。