决策树(Decision Tree DT)
机器学习是从给定的训练数据集学的一个模型用于对新示例进行分类,对于决策树而言,我们希望决策树的分支节点所包含的样本尽可能属于同一类别,即结点的“纯度”越高越好,这样可以避免多次无用的分类。有多种方法来衡量纯度,此处介绍信息熵和基尼系数两种方法。
一、成树
1.1 信息熵
假定当前训练集合为D,D中第k类样本(二分类问题中,k=2)所占的比例为
则D的信息熵定义为
对于不同的特征a而言,具备不同的属性值v,按照属性值中不同的样本类计算该特征下的增益。
选择最大的增益为当前所选特征进行分支。信息熵增益越大,则意味着使用该属性进行划分所获取的“纯度”提升越大。
ID3(Iterative Dichotomiser)就是以信息增益为准则来选择属性划分的。考虑到信息熵增益对取值较多的属性偏好(如编号),消除偏好带来缺乏泛化能力这一不利影响,C4.5使用信息增益率来选择最优划分属性。信息增益率的定义为:
其中IV(a)为属性a的固有值(Intrinsic Value),属性a的取值越多(V越大),则IV越大。
1.2 基尼值
CART(Classification and Regression Tree)使用基尼指数来选择划分属性。直观来说,Gini(D)反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率,因此Gini(D)越小,则数据集D的纯度越高。
在基尼增益的计算过程中,计算方式和信息熵增益相同。
二、剪枝
对于决策树生成产生的过拟合的状态,具有预剪枝(prepruning)和后剪枝(postpruning)两种策略。预剪枝:在子节点划分前先进行估计泛化性能是否提高,若无提高将当前节点标记成叶节点。后剪枝:生成整棵决策树后,观察删除叶节点是否对泛化性能有提高,若提高则执行。
对于剪枝而言,一般的步骤是从训练集中预留出验证集验证泛化性能。通常比较决策树的准确度,若分类后准确度降低则不进行分类。预剪枝不仅能够降低过拟合的风险而且还显著减少了决策树的训练时间开销和测试时间开销。但是带来了欠拟合的风险。预剪枝验证该节点下的准确度,后剪枝验证整棵树的准确度。
三、困难
3.1 属性值连续
此前讨论的最优属性选择都为在连续值得情况下进行讨论,对于连续的属性而言,属性值可取分界点后构成二分法的分类。分界点的取值同样是两点的中点值,对中点值进行分类增益计算后再进行比较,不像离散值,连续值在子节点上依然能够再次进行分类。
3.2 样本值缺失
对于训练决策树时训练集存在某些特征的属性值缺失的情况,会遇到如下两个问题:
1.如何选择最优属性进行划分
2.给定划分属性,若在该属性上值缺失,如何确定样本的归属
对于问题1而言:只要将所有的计算换成无缺样本的数据即可。最终增益乘以对应特征所含有值的概率值,
对于问题2而言:将缺失值的样本按照一定的比例以不同的概率划分到不同的子节点中去。若取值已知,则划分到对应的子节点中去,样本权值在子节点中保持为wx,若取值未知,则将x同时划入所有的子节点中区,并将样本去找你之在对应中调整为对应的比例乘以wx,权重在之后则以概率的形式体现到计算中去。
3.3 多变量决策
多变量决策树的学习过程中,不是为每个非叶节点寻找一个最优划分属性,而是试图建立一个合适的线性分类器于一个节点中,减缓决策树的复杂度。