决策树-decision tree
决策树:是一种实现分治策略的层次数据结构,它是一种有效的非参数学习方法,可以用于分类和回归。分类树对离散变量做决策树,回归树对连续变量做决策树。决策树包含一个根节点,一些内部决策节点和终端叶节点。决策节点运行某个判断/测试函数,来确定数据是否符合条件,从而进行选择分支地输出。叶节点一般用来存放最终不可再分的数据集合。
基本思想:决策树学习采用的是自顶向下的递归方法,其基本思想是以信息熵为度量构造一棵熵值下降最快的树。
优缺点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可处理不相关特征数据。可能会产生过度匹配问题。
基本流程
准备数据:树构造算法只适用于标称型数据,因此数值型数据必须离散化
特征选择:特征选择是指从训练数据中众多的特征中选择一个特征作为当前节点的分裂标准,如何选择特征有着很多不同量化评估标准标准,从而衍生出不同的决策树算法。
决策树生成: 根据选择的特征评估标准,从上至下递归地生成子节点,直到数据集不可分则停止决策树停止生长。 树结构来说,递归结构是最容易理解的方式。
剪枝:决策树容易过拟合,一般来需要剪枝,缩小树结构规模、缓解过拟合。剪枝技术有预剪枝和后剪枝两种
划分选择
决策树学习的关键在于如何选择最优的划分属性。一般希望随着划分过程的进行,节点的纯度越来越高。
信息增益
信息量
信息量是对信息的度量,信息的大小跟随机事件的概率有关。一个随机事件的信息量的大小与其发生概率成反相关。香农定义的一个事件的信息量为:
I(X)=log2(1/p)信息熵
信息熵是度量样本集合纯度最常用的指标。假定当前样本集合 D 中第k 类样本所占比例为 pk ,则 D 的信息熵的定义就是D 的加权信息量。
Ent(D)=∑i−1KPkI(xk)=−∑i−1KPklog2(Pk)
熵越小纯度越高信息增益
在划分数据集之前和之后信息发生的变化称为信息增益。 假定离散属性 a 有V 个可能取值 a1,a2,...,av ,若用 a 对样本集D 进行划分,则会产生 V 个分支节点,记每个分支样本集合为Dv ,可以计算出 Dv 的信息熵,再考虑不同分支节点样本数不同,给分支赋予权重 |Dv|/|D| ,可以计算出用属性 a 对样本集D 进行划分所获得的信息增益:
Gain(D,a)=Ent(D)−∑v=1V|Dv||D|Ent(Dv)知道如何计算信息增益,我们就可以计算每个特征值划分数据集获得的信息增益,获得信息增益最高的特征就是最好的选择。
基于信息增益准则对可取值数目较多的属性有所偏好
增益率
Gain_ratio(D,a)=Gain(D,a)IV(a),IV(a)=−∑v=1V|Dv||D|log2(|Dv||D|)基于信息增益率准则对可取值数目较少的属性有所偏好。所以C4.5 先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。
基尼指数
Gini(D)=∑k=1|y|=1−∑k=1|y|p2k
反映从数据 D 中随机抽取两个样本,其类别标记不一致的概率。越小越纯。属性a 的基尼指数定义为
Gini_index(D,a)=∑v=1V|Dv||D|Gini(Dv)
剪枝处理
决策树对于训练数据有很好的分类,但是对于未知测试集的分类并没有那么准确,这就产生过拟合的现象。
预剪枝
一般如果到达一个节点的训练实例树小于训练集的某个比例,比如5%,无论是否不纯或是否有错误,该节点都不再进一步分裂。因为 基于过少实例的决策树会导致方差太大,从而导致泛化误差较大。这种在树完全构造出来之前提前停止树构造的方法称作树的先剪枝
后剪枝
实践中比先剪枝要好些。我们让树完全增站直到所有的树叶都是纯的并具有零训练误差。然后我们找出导致过分拟合的子树并剪掉它们。方法是我们最初从数据集中暴力一个剪枝集,训练阶段不使用。我们用一个被子树覆盖的训练实例标记的树叶节点替换该子树,如果该树叶在剪枝集上的性能不比该子树差,则剪掉该子树并保留树叶节点。
连续与缺失值
连续值处理
缺失值处理
过度拟合问题
多变量决策树
常见决策树
ID3
基于信息熵
CART
基于基尼不纯度(Gini)的
C4.5
基于信息熵
GBRT (Gradient BoostRegression Tree) 渐进梯度回归树
优缺点
决策树计算复杂度不高、便于使用、而且高效,决策树可处理具有不相关特征的数据、可很容易地构造出易于理解的规则,而规则通常易于解释和理解。
缺点,比如处理缺失数据时的困难、过度拟合以及忽略数据集中属性之间的相关性等。