1. 决策树概览
对于一个具有多个属性的数据集,决策树根据某种划分决策,依据某个离散属性对数据集进行划分,形成子集,之后递归地对子集进行划分,直到子集均属于某一类别,或是在某个容忍度下属于某种类比。
假设有样本集合 (D),它有如下属性:
-
(m) 个样本
-
属性集合 (A) 具有 (n) 个离散属性 ({a_1,a_2,cdots,a_n})
-
(|gamma|) 种类别
对于决策树的建立,首先要解决的是划分。
2. 划分依据
假设对于样本集合的某个离散属性 (a), 有 (V) 种可能的取值,那么我们使用这个属性对样本集合进行划分后,可以获得 (V) 个子集,即 (V) 个分支节点。有3种常见的划分依据可以选择:
- 基尼指数 (Gini index)
- 信息增益 (information gain)
- 错分误差 (Misclassification error)
2.1 基尼指数(Gini Index)
CART决策树使用基尼指数来选择划分属性。
基尼指数使用基尼值来衡量一个集合的纯度:
直观的来看,基尼值反映了从数据集中任意抽取两个样本,其类别标记不一样的概率。
显然,基尼值越小,则数据集的纯度越高。
据此,基尼指数定义为:
考虑到划分的不同子集的个数不一样,引入权重因子 (frac{|D_v|}{|D|}), 样本越多分支节点影响越大。
划分决策:
在候选属性集合 (A) 种,选择那个使得划分后基尼指数最小的属性作为划分属性
2.2 信息增益(Information Gain)
ID3决策树使用信息增益来作为划分依据。
信息增益使用信息熵来衡量一个样本集合的纯度:
当集合只有一个类别 (k') 的时候 (p_{k eq k'}=0, p_{k'}=1),则
当集合中所有类别同概率分布的时候,(p_1=p_2=cdots=p_{|gamma|}=frac{1}{|gamma|})
可以看到,( ext{Ent}(D)) 的值越小,则数据集的纯度越高。
同样,根据划分子集进行加权,获得信息增益:
一般来说,信息增益越大,则意味着使用属性 (a) 来划分所获得的 纯度提升 越大。
划分决策:
在候选集合 (A) 中,选择那个使得划分前后信息增益大的属性
相比于基尼指数,信息增益关注划分前后变化,而基尼指数只关注划分后的集合纯度。
2.3 错分误差
错分误差的纯度判定比较粗暴,它衡量集合是否倾向于某一种分类。
根据公式(8)可以知道,如果集合(D)全是一类, 则 (error=0); 而如果集合均匀分布,则(error_{max}=1-frac{1}{|gamma|})
3. 停止划分
对于决策树,第二个要解决的问题是什么时候停止划分。
3.1 预剪枝(Pre-Pruning)
- 如果当前集合的数目少于人为设定的阈值(user-specified threshold) , 则停止划分
- 如果当前的集合实例对于可选划分数据独立(使用卡方检验),则停止划分
- 如果当前集合划分,对纯度的没有提升,则停止。
3.2 后剪枝(Post-Pruning)
- 自下而上的方法来修剪决策树(Trim nodes in a bottom-up fashion)
- 如果泛化误差(generalization error)得到改善,那么用叶子节点代替子树(验证集)
- 叶子节点的类标签由子树的多数样本的标签决定。