决策树(decision tree)
4.1 决策树的基本流程
决策树是基于树结构进行决策的,人脑亦是如此。一般的,一颗决策树包含一个根结点,若干个内部结点和若干个叶子结点,叶子结点对应于决策结果,其他每个结点对应于一个属性测试;每个结点包含的样本集合根据属性测试的结果被划分到子结点中;根节点包含所有样本集合。从根结点到每个叶子结点的路径对应了一个判定测试序列。
决策树学习的最终目的是产生一颗泛化能力强,即处理未预见示例能力强的决策树。
决策树的生成是递归过程。在decision tree中,有3种情况会导致递归返回:(1)当前结点包含的样本全部属于同一个类别,无需划分;(2)当前属性集为空,或是所有样本在所有属性上取值相同,无法划分;(3)当前结点包含的样本集合为空,不能划分。
4.2 划分选择
决策树学习的关键在于如何选择最优划分属性,随着树的不断划分,树的结点包含的样本尽可能属于同一类型最好,即结点的纯度(purity)越来越高。
信息熵(information entropy)是度量样本集合纯度最常用的一种指标。
设数据集D中第k类样本样本所占的比例为,则D的信息熵为:
公式(1)
Ent(D)的值越高,则D的纯度越低。
信息增益(information gain)越大,则意味着使用属性a来进行划分所获得的purity提升越大。
4.3 剪枝处理
剪枝(pruning)是决策树学习中处理“过拟合”的方法。
pruning的基本策略有“prepruning”&“postpruning”。
prepruning预剪枝指在决策树生成过程中,对每个结点在划分前进行估计,若当前结点的划分不能带来决策树泛化能力的提升,则停止划分,并将当前结点标记为叶子结点。
postpruning则是先从训练集生成一个完整的决策树,然后自底向上的对非叶子结点进行考察,如果将该结点对应的子树替换为叶子结点能够带来决策树泛化性能的提升,则将该子树替换为叶子结点。
预剪枝使得决策树的很多分支没有展开,这有助于降低决策树的过拟合风险,同时也减少了决策树的训练时间和测试时间。缺点在于有些分支的划分虽不能提升泛化性能、甚至可以导致泛化性能下降。同时,预剪枝有欠拟合的风险。
postpruning通常比prepruning决策树包含了更多的分支。一般而言,后剪枝决策树的欠拟合风险较小,泛化性能往往优于prepruning。but postpruning是在决策树生成之后才进行的,并且要自底向上对树中的所有结点进行逐一考察,so其训练时间比未剪枝和prepruning要大。
4.4 连续与缺失值
连续属性的取值数目为无限;离散属性的取值数目为有限;
二分法(C4.5决策树算法)
与离散属性不同,若当前结点划分属性为连续属性,该属性还是可以作为后代结点的划分属性。例如密度>0.34,则其子结点依旧可以设置密度>0.7。
缺失值处理
针对缺失值的处理:(1)如何在属性值缺失的情况下进行划分属性选择?(2)给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?
4.5 多变量决策树
multivariate decision tree 解决的是传统决策树中只能划分直线的问题,其每个非叶子结点是一个形如的线性分类器。在多变量决策树的学习过程中,其并不是为每个非叶子结点寻找一个最优划分属性,而是试图建立一个合适的线性分类器。