决策树
决策树
Category: 机器学习
Last Edited: Nov 07, 2018 3:06 PM
Tags: 机器学习,统计学习方法
决策树模型和学习概述
- 决策树是一种用于分类的树形结构。主要构成有结点(node)和有向边(directed edge)。结点分为”内部结点(internel node)“和”叶结点(leaf node)“。内部结点表示某种属性,叶结点表示某种分类。
- 决策树具有”互斥且完备“性质。即:每一个实例都被一条路径或者一条规则所覆盖,且只被一条路径或规则所覆盖。
- 决策树的学习本质上是从训练数据集中归纳出一组分类规则,在这些分类规则中,能正确分类的规则可能有多个,也可能一个都没有。决策树学习的最终目标是要找到一个正确性高且泛化能力比较强的一组分类规则。
- 决策树基本流程:
- 构建根节点,将所有训练数据都放在根节点,选择一个最优特征,按着这一特征将训练数据集分割成子集,使得各个子集有一个在当前条件下最好的分类。
- 如果这些子集已经能够被基本正确分类,那么构建叶节点,并将这些子集分到所对应的叶节点去。
- 如果还有子集不能够被正确的分类,那么就对这些子集选择新的最优特征,继续对其进行分割,构建相应的节点,如果递归进行,直至所有训练数据子集被基本正确的分类,或者没有合适的特征为止。
- 每个子集都被分到叶节点上,即都有了明确的类,这样就生成了一颗决策树。
决策树的特征选择
- 在特征集中有多种不同的特征,但是在构造决策树时,如果选择的特征没有良好的分类能力决策树就分类效果就会很差。在每个结点上做分类时,需要选择最优的特征来分类。—>特征选择就时选择去队训练数据具有良好分类能力的特征。
- 使用信息增益选择特征:
-
概念和公式:
-
熵(entroy)(经验熵):表示随机变量不确定性的度量,熵越大,随机变量的不确定性就越大。(在数据估计中又称经验熵empirical entropy)
设X是一个离散随机变量
熵的计算公式。log的底数为2时,熵的单位为bit,底数是e时,单位是nat。
-
条件熵(conditional entropy)(经验条件熵):在已知随机变量X的条件下随机变量Y的不确定性。(在数据估计中又称经验条件熵,有点像极大似然估计)
条件熵的计算公式
-
信息增益(information gain):表示在得知特征X的信息而使类Y的(特征Y)的
不确定性减小的程度
。它的值是经验熵和经验条件熵的差值。 -
互信息(mutual information):熵和条件熵的差值,等价于信息增益
-
-
特征选择方式:对于每个特征的信息增益值,每次都选择信息增益值最大的特征。
-
信息增益比(information gain ratio):由于信息增益的计算方式问题,会偏于特征值取值比较多的特征。所以选择信息增益比来消除这一误差。增益比=A的信息增益/A的熵。
-
生成决策树
生成决策树有两种算法,分别是ID3和C4.5
ID3算法
- ID3算法思想:从根结点开始,对结点计算所有可能的特征的信息增益值→选择信息增益值最大的作为根结点的特征建立根结点,该特征值的不同取值建立子结点→递归以上方法建立决策树。
- 问题:容易过拟合。即:对训练的数据能够很好得分类,但是对未知的测试数据分类却不够好。→原因在与为了更好的分类训练数据,构造了过于复杂的决策树。→解决方法是剪枝(pruning)。
C4.5算法
- C4.5算法思想和ID3基本一致,改进了信息增益值,转而用信息增益比代替。
决策树的剪枝
- 目的:减少过拟合。
- 方法:通过极小化决策树整体的损失函数(lisss function)或者代价函数(cost function)实现。
- 算法:
-
设树T的叶结点个数为|T|,t是树T的叶结点,该叶结点有Nt个样本点,其中k类的样本点有Ntk个,k=1,2,…,K,Ht(T)为叶结点t上的经验熵,a≥0为参数。则损失函数定义为:
-
经验熵为:
-
简化表示:
在5.14中,C(T)表示训练模型对训练数据的预测误差→也就是模型与训练数据的拟合程度。α属于超参数,它控制着最终决策树的选择。α较大时,表示T(模型的复杂程度)对损失函数的影响大,会选择较为简单的决策树。α比较小时,表示T对损失函数的影响小,会选择较为复杂的决策树。当α等于0时,表示不考虑树的复杂度,只考虑模型的拟合程度,也就是C(T)。
-
流程表示:计算每个结点的经验熵→递归的从叶结点向上缩一层到父节点→计算缩之前和之后的损失函数,如果损失函数更小,则父节点成为叶结点,原先的叶结点剪掉→重复第二步
-
CART算法
-
CART算法既能用于回归也能用于分类,对于回归树的特征选择,使用的是平方误差最小化准则;对于分类树,使用的是基尼指数最小化准则。CART算法生成的都是二叉树。整个算法包含了树的生成、树的剪枝两个流程。
-
回归树算法流程:
-
选择最优切分变量j与切分点s,求解
j为训练集中的第j个变量。遍历j,对每个j扫描切分点s,求上式的最小值。
-
用选定的(j,s)划分区域并输出:
-
重复以上步骤直到满足停止条件。
-
生成决策树:
-
-
分类树算法流程:
-
基尼系数:分类问题中,假设有K个类,样本点属于第k类的概率为pk,则概率分布的基尼指数定义为
对于给定的样本集合D,其基尼指数为
Ck是第k类样本集,K是类的个数
若样本集合D有一特征A,判断D是否可以被A的某一可能值a分割为D1和D2两部分,需要计算其基尼系数:
基尼系数表示集合D的不确定性,数值越大,样本集合的不确定性越大。换句话说,它表示了这一特征的不纯性,基尼系数越小,特征的纯度越高,特征就越好。
-
算法流程:
- 对于训练集D,计算所有特征对该数据集的基尼系数。此时,对于每个特征A都有个取值a。
- 对于所有的切分点a,选择基尼系数最小的特征以及切分点作为最优特征和最优切分点。
- 递归上两步
- 生成决策树
-
-
CART剪枝算法
-
设k=0,T=T0(从T0子树开始剪枝)
-
设a=+∞(参数)
-
自下而上计算各内部结点的C(Tt),|Tt|和
Tt表示以t为根结点的子树,C(t)是训练数据的预测误差。|Tt|是叶结点个数。g(t)表示剪枝后,整体损失函数减小的程度。
-
自上而下地访问内部结点t,如果有g(t)=a,进行剪枝,并对叶结点t以多数表决法决定其类,得到树T。
-
设k=k+1,ak=a,Tk=T。
-
采用交叉验证法在子树序列T0,T1,…,Tn中选取最优子树Ta。
-