算法是死的,思想才是活的!
1. 基本流程
决策树(decision tree):一般的,一棵决策树包含一个根结点、若干个内部结点和若干个叶结点;叶结点对应于决策结果,其他每个结点则对应于一个属性测试;每个结点包含的样本集合根据根据属性测试的结果划分到子结点中;根结点包含样本全集。
从根结点到每个叶结点的路径对应了一个判定测试序列。决策树的目的是为了产生一棵泛化能力强,即处理未见示例能力强的决策树,基本流程遵循“分而治之”。
决策树的生成是一个递归的过程,有三种情况会导致递归返回:
- 当前节点包含的样本全属于同一类别(好瓜/坏瓜),无需划分
- 当前属性集为空,或所有样本在所有属性(颜色/形状/敲声)上取值相同,无法划分
- 当前结点包含的样本集合为空,不能划分
在情况2下,把当前结点标记为叶结点,并将其类别设定为该结点所含样本最多的类别;
在情况3下,把当前结点标记为叶结点,将其类别设定为其父结点所包含样本最多的类别。
2. 划分选择
2.1 信息增益
信息熵:度量样本集合纯度的最常用指标。
(大白话理解:样本集合的分类分布越悬殊,集合的纯度越高。)
(eg:样本集合D中属于好瓜类别的有99个,属于坏瓜类别的有1个,说明集合D的纯度很高)
信息增益:原样本集合的信息熵减去用属性 a 划分后每个子集合信息熵的加权和。
信息增益越大,意味着用属性 a 进行划分获得的纯度提升越大。
(大白话理解:属性 a 越是能把不同类别的样本划分开越好,划分的越开就是纯度越大)
(eg:集合D用属性a(颜色)划分为集合G(绿色)、B(蓝色),其中G中99个好瓜,1个坏瓜,B中99个坏瓜,1个好瓜。说明用a(颜色)这个属性划分集合所获得的信息增益很大)
【著名的ID3决策树学习算法就是以信息增益为准则来选择划分属性的】
信息增益的缺点:
若编号也作为划分属性,可知其信息增益最大,因为划分后的每个分支结点仅包含一个样本,纯度最大,显然这样的决策树不具有泛化能力。由此可知,信息增益对可取值多的属性有所偏好,提出了增益率。
2.2 增益率
增益率:信息增益除以属性 a 的固有值。
属性 a 的可能取值数目越多,“固有值”通常会越大。故,增益率准则对可能取值数目较少的属性有所偏好。
【著名的C4.5决策算法使用了一个启发式:先从侯选属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的】
2.3 基尼指数
基尼指数:可以度量数据集的纯度。
属性 a 的基尼指数定义:
【著名的CART决策树 就是选择使得划分后基尼指数最小的属性作为最优划分属性】
3. 剪枝处理
决策树中的过拟合: 为了尽可能正确分类训练样本,结点划分过程将不断重复,有时会造成决策树分支过多,这时就可能因为训练样本学的“太好”,以至于把一些训练样本自身的特点当作所有数据都具有的一般性质而导致过拟合。
剪枝处理: 剪枝是决策树对付“过拟合”的手段
剪枝手段:
1)预剪枝(prepruning)
定义:在决策树生成过程中,对每个结点在划分前进行估计,若当前结点的划分不能带来决策树泛化性能的提升,则停止划分并将当前节点标记为叶结点;
评价:预剪枝使得决策树很多分支都没有“展开”,降低了过拟合风险,但预剪枝这种基于”贪心“本质禁止分支展开却带来了欠拟合的风险。
2)后剪枝(post-pruning)
定义:决策树生成后,自底向上对非叶结点进行考察,若将该叶结点对应的子树替换为叶结点能带来决策树泛化性能的提升,则将该子树替换为叶结点。
评价:后剪枝通常比预剪枝保留了更多的分支,一般情况下,后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树,但后剪枝时间开销要大很多。
泛化性能的判断: 用性能评估方法,比如留出法。