机器学习算法-决策树

决策树

分裂:分裂方法,停止分裂

构建方法/特征选择/决策树算法:ID3,C4.5,CART;数学概念:,信息增益(),基尼系数

剪枝:先/后剪枝

连续值和缺失值处理

 

(一)分裂

1.分裂方法

决策树采用贪婪思想进行分裂,即选择可以得到最优分裂结果的属性进行分裂

分裂属性的选择:信息增益,信息增益率,基尼系数

2.停止分裂

原因:极端情况节点分裂到只剩一个数据点时自动结束分裂,但此时树过于复杂,预测精度低

停止条件:(降低复杂度,提高预测精度)

1)最小节点数

当节点的数据量小于一个指定的数量时,不继续分裂。两个原因:一是数据量较少时,再做分裂容易强化噪声数据的作用;二是降低树生长的复杂性。提前结束分裂一定程度上有利于降低过拟合的影响。

2)熵或者基尼值小于阀值。

熵和基尼值的大小表示数据的复杂程度,当熵或者基尼值过小时,表示数据的纯度比较大,如果熵或者基尼值小于一定程度数,节点停止分裂。

3)决策树最大深度

节点的深度可以理解为节点与决策树跟节点的距离,如根节点的子节点的深度为1,因为这些节点与跟节点的距离为1,子节点的深度要比父节点的深度大1。决策树的深度是所有叶子节点的最大深度,当深度到达指定的上限大小时,停止分裂。

4)所有特征已使用完毕,不能继续进行分裂。

被动式停止分裂的条件,当已经没有可分的属性时,直接将当前节点设置为叶子节点。

 

树划分的终止条件:

节点达到完全纯度;树达到指定深度;节点中样本数量达到指定个数;

 

(二)构建方法

决策树分为分类树和回归树,分类树输出:具体的类别,回归树输出:确定的数值。

决策树的构建算法主要有ID3C4.5CART三种,其中ID3C4.5是分类树,CART是分类回归树,其中ID3是决策树最基本的构建算法,而C4.5CART是在ID3的基础上进行优化的算法。

1.数学概念:

简单描述

信息熵:表示的是不确定度。均匀分布时,不确定度最大,此时熵就最大。

信息增益:经验熵与条件熵之差(越小纯度越高)

当选择某个特征对数据集进行分类时,分类后的数据集信息熵会比分类前的小,其差值表示为信息增益。信息增益可以衡量某个特征对分类结果的影响大小。信息增益依赖于特征,不同的特征往往具有不同的信息增益,信息增益大的特征具有更强的分类能力。因此也就是选择信息增益最大的特征。

信息增益比:特征A对训练数据集D的信息增益比定义为其信息增益与训练数据集D的经验熵之比。信息增益率最大,就是分类后信息最少,熵最小,(种类少)

信息增益率=信息增益*惩罚参数(熵的倒数)

信息增益率本质:在信息增益基础上乘一个惩罚参数。特征个数较多时,惩罚参数较小,特征个数较少时,惩罚参数较大

          

条件熵:在给定条件X下Y的不确定性

经验熵,经验条件熵:当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵与条件熵分别为经验熵和经验条件熵

基尼指数:在样本集合中一个随机选中的样本被分错的概率。也是衡量随机变量不确定性的指标(越小纯度越高)

         基尼指数=P(样本被选中)*P(样本被分错)

二分类时,gini(p)=2p(1-p)

 

2.常用决策树算法:ID3,C4.5,CART

(1)ID3算法

信息增益最大,偏向选择取值较多的属性;分类树;处理分类变量,不能处理连续值,缺失值;子节点多分)

原理简介:在决策树各节点上使用信息增益准则选择特征,递归的构建决策树。

具体方法:从根节点开始,对节点计算所有可能的特征的信息增益,选择信息增益最大的特征作为该结点的特征,由该特征·的不同取值建立子节点;再对子节点递归的调用以上方法,构建决策树;直到所有特征的信息增益均很小或没有特征可选择为止(递归终止条件)。最后得到一个决策树。

缺点:ID3算法只能处理离散变量,不能处理具有连续值的属性,即仅可以构建分类树,不能构建回归树;不能处理具有缺失数据的属性;判定变量时偏向选择取值较多的变量

 

(2)C4.5算法

信息增益率最大,偏向选择取值较少的属性;分类树;处理分类,连续变量;处理空缺值; 处理小样本;子节点多分)
理简介C4.5算法与ID3相似,只是在决策树生成过程中,用信息增益比来选择特征。

具体方法:选择信息增益率最大的特征作为该结点特征。使用的是悲观剪枝法(使用错误率来评估)。在构造树的过程中需要对树进行多次顺序扫描和排序(因此效率较低)。实际中多采用一个启发式方法,向从所有特征选择出高于平均信息增益的特征,在从这些特征里选出信息增益率最高的特征。

优点:具有较高的准确率,可处理连续属性

缺点:处理成本耗时较高,效率低;只适用于能够滞留于内存的数据集。

C4.5剪枝:(悲观剪枝法)(后剪枝)

使用训练集生成决策树又用它进行剪枝,不需要独立的剪枝集。T为训练集生成的决策树,用T来分类,K为到达某个叶子节点的元组数,分类错误的个数为J,用 (J+0.5)/K表示错误率。(不用J/K的原因:树T是训练集生成的,是适合训练集的)。T的子树S,节点个数为L(s)k, J同上,E为分类错误个数,当式子成立时就删子树。

 

 

(3)CART

(基尼系数最小;分类回归树;处理分类,连续变量;处理离群点,空缺值;处理大样本;子节点二分-二叉树)

原理简介:使用基尼指数的划分准则;通过在每个步骤最大限度降低不纯度

原理详细:

CART回归树是假设树为二叉树,通过不断将特征进行分裂。比如当前树结点是基于第j个特征值进行分裂的,设该特征值小于s的样本划分为左子树,大于s的样本划分为右子树。

http://img.blog.itpub.net/blog/2018/08/09/e39cd491f30f6b45.png?x-oss-process=style/bb

CART回归树实质上就是在该特征维度对样本空间进行划分,而这种空间划分的优化是一种NP难问题,因此,在决策树模型中是使用启发式方法解决。典型CART回归树产生的目标函数为:

http://img.blog.itpub.net/blog/2018/08/09/f461413496789d0a.png?x-oss-process=style/bb

因此,当为求解最优的切分特征j和最优的切分点s,就转化为求解这么一个目标函数:

http://img.blog.itpub.net/blog/2018/08/09/4ab3c8c82b43cdc9.png?x-oss-process=style/bb

 

特征选择:回归树:平方误差最小;(方差最小)

分类树:基尼指数最小

优点:能够处理孤立点,能够对空缺值进行处理。

缺点:cart本身是一种大样本的统计方法,小样本处理下泛化误差较大

CART剪枝: (先剪枝)

两步:边建边剪枝;用交叉验证选最优子树,标准:平方误差/gini

首先从生成算法产生的决策树底端开始不断剪枝,直到该决策树的根节点形成一个子树序列;然后通过交叉验证法在独立的验证集上对子树序列进行测试,从中选出最优子树。在选最优子树的过程中测试子树序列中各棵子树的平方误差/基尼指数,平方误差/基尼指数最小的决策树被认为是最优子树。

 

ID3,C4.5,CART对比差异:分类依据,分类结果,样本形式,样本量

分类依据:ID3信息增益,C4.5是信息增益比,CARTgini系数

分类结果: ID3C4.5只能做分类,CART可以回归可以分类;ID3C4.5子节点是可以多分的,而CART是无数个二叉子节点

样本形式:ID3只能处理分类变量,C4.5CART可以处理连续和分类两种变量。ID3对缺失值敏感,而C4.5CART对缺失值可以进行多种方式的处理

样本量:小样本建议c4.5,大样本建议cart

 

C4.5ID3的改进:

1)使用信息增益率来选择属性

2C4.5悲观剪枝法

3)可处理离散数据,缺失值

 

(三)决策树的优化

 一棵过于复杂的决策树很可能出现过拟合的情况,可能会预测不准确,因此需要对决策树进行优化,优化的方法主要有两种,一是剪枝,二是组合树。

决策树剪枝

剪枝原因:根据训练数据生成的决策树太复杂,泛化能力弱,所以通过去除一些子树或叶节点来简化决策树,提高泛化能力,防止过拟合

剪枝思想:减少决策树模型的整体损失函数(正则化的极大似然函数)

https://upload-images.jianshu.io/upload_images/1371984-b8487d9e9044b8a7.PNG?imageMogr2/auto-orient/strip%7CimageView2/2/w/190

C(T):决策树T对训练数据集的预测误差,C(T)通常有两种衡量方法:熵和基尼指数

|T|:决策树的叶节点个数,即模型复杂度。

a:权衡因子。

剪枝标准:损失函数

剪枝策略:预剪枝、后剪枝

1.预剪枝:(容易欠拟合)

简介:两步:边建边剪枝;用交叉验证选最优子树,标准:平方误差/gini

具体原理:该策略就是在对一个节点进行划分前进行估计,如果不能提升决策树泛化精度,就停止划分,将当前节点设置为叶节点。那么怎么测量泛化精度,就是留出一部分训练数据当做测试集,通过交叉验证法在独立的验证集上对子树序列进行测试,从中选出最优子树。在选最优子树的过程中测试子树序列中各棵子树的平方误差或者基尼指数,平方误差或基尼指数最小的决策树被认为是最优子树。不用提前确定α值,在剪枝的同时找到最优α值。

优点:降低了过拟合风险,降低了训练所需的时间。

缺点:预剪枝是一种贪心操作,可能有些划分暂时无法提升精度,但是后续划分可以提升精度。故产生了欠拟合的风险。

算法流程:

(1)对决策树T的每一个内部节点t,计算g(t) .Tt代表以内部节点t为根节点的子树。g(t)表示剪枝后整体损失函数减少的程度。

https://upload-images.jianshu.io/upload_images/1371984-e9dec95823964c62.PNG?imageMogr2/auto-orient/strip%7CimageView2/2/w/219

(2)选择g(t)值最小的内部节点t进行剪枝,得到一棵新树T_g(t)。
(3)对这棵新树继续上面的剪枝过程,又得到一棵新树。如此,一直到单节点树,可以得到一系列的树,它们互相嵌套。用交叉验证法从中选出最优的子树T_g(t),它对应的α值为g(t)

 

2.后剪枝:(花费时间长)

简介:建完后剪枝(算法实现:动态规划)

具体:该策略是首先正常建立一个决策树,然后对整个决策树进行剪枝。按照决策树的广度优先搜索的反序,依次对内部节点进行剪枝,如果将某以内部节点为根的子树换成一个叶节点,可以提高泛化性能,就进行剪枝。

 

优点:降低过拟合风险,降低欠拟合风险,决策树效果提升比预剪枝强

缺点:时间开销大得多

算法流程:给定α后,通过不断剪枝来减小决策树模型的整体损失。核心步骤是:假设一组叶节点回缩到其父节点之前与之后的整体树分别为T_B与T_A,其对应的损失函数值分别是C_α(T_B)与C_α(T_A),如果C_α(T_A) ≦C_α(T_B)则进行剪枝,将父节点变为新的叶节点。递归地进行以上步骤,知道不能继续为止,得到损失函数最小的子树T_α。具体实现这个算法时可采用动态规划(说出动态规划,应当是加分项)。

(四)连续值和缺失值的处理

缺失值处理

简介:属性值缺失时,用无缺失值样本所占的比例乘以无缺失值样本子集的信息增益做为信息增益,选择最大的作为最优划分属性;在对某个属性进行划分子节点时,对于不缺失该属性的数据正常划分,对于缺失该属性的数据,按不同的权重划分进行每个子节点

 

1.选择最优划分属性(属性值缺失)

之前,选择信息增益最大的属性作为最优划分属性。对有缺失值的属性,其信息增益就是无缺失值样本所占的比例乘以无缺失值样本子集的信息增益。

2.对有缺失值的样本分类(样本值缺失)

对于不缺失该属性的数据正常划分,对于缺失该属性的数据,让同一个样本以不同概率划入到不同子节点中。

 

连续值处理

关键:使用二分法对连续属性离散化

对特征值进行升序排序,取两个特征值之间的中点作为可能的分裂点,以此离散化。

流程:属性A在数据集D上

(1)按大小排序:{a1,a2,a3…….an}

(2)划分点为t:D:Dt-,Dt+;候选划分点:Ta={ai+ai+12 }(中位点)

(3)选二分后信息增益最大的划分点

 

决策树题目

1.简述决策树的原理/什么是决策树?

决策树是一种分类和回归的基本模型,可从三个角度来理解它,即:

1)一棵树

2if-then规则的集合,该集合是决策树上的所有从根节点到叶节点的路径的集合

3)定义在特征空间与类空间上的条件概率分布,决策树实际上是将特征空间划分成了互不相交的单元,每个从根到叶的路径对应着一个单元。决策树所表示的条件概率分布由各个单元给定条件下类的条件概率分布组成。实际中,哪个类别有较高的条件概率,就把该单元中的实例强行划分为该类别。

 

2.决策树优点?

主要的优点有两个:

1)模型具有可解释性,容易向业务部门人员描述。

2)分类速度快

其他:可同时处理类别数据和数值数据

 

3.如何学习一颗决策树?(模型+策略+算法)

模型:决策树的学习本质上就是从训练数据集中归纳出一组分类规则,使它与训练数据矛盾较小的同时具有较强的泛化能力。从另一个角度看,学习也是基于训练数据集估计条件概率模型。
策略:决策树的损失函数通常是正则化的极大似然函数,学习的策略是以损失函数为目标函数的最小化

算法:由于这个最小化问题是一个NP完全问题,所以通常采用启发式算法来近似求解这一最优化问题,得到的决策树是次最优的。

 

(当一个问题是NP难问题时,是无法求解到最优解的,因此,用一种相对好的求解算法,去尽可能逼近最优解,得到一个相对优解)

(这里,面试官可能会问什么是启发式算法,要有准备,SMO算法就是启发式算法)

 

4.为什么大多数决策树算法都采用启发式的算法,如贪心算法,来指导对假设空间的搜索?

因为寻找最佳决策树是NP完全问题,无法利用计算机在多项式时间内找到全局最优解。所以用启发式算法来得到相对优解。可以说,决策树最后的结果,是在每一步、每一个节点上做的局部最优选择。决策树得到的结果,是没法保证为全局最优的。

 

5.NP完全问题

决策树一大特点:寻找最佳决策树就是NP完全问题

(说明无法利用计算机在多项式时间内找到全局最优解)

 

判定问题:指回答结果输出为yes/no的问题

多项式时间:指O(1),O(logN),O(N2)等这类可用多项式表示的时间复杂度

NP类问题:所有非确定性多项式时间内可解的判定问题(是)

NP:多项式复杂程度的非确定性问题(是/否)

NP完全问题:是否能在多项式时间内求解?(未知)(NP类的特殊情况)(NP-C问题)

 

6.启发式算法(SMO算法) 是什么?

一个基于直观或经验构造的算法,在可接受的花费(指计算时间和空间)下给出待解决组合优化问题每一个实例的一个可行解

 

7.具体谈谈启发式算法(SMO)的三个步骤?

启发式算法可分为三步:特征选择,模型生成,决策树的剪枝

从总体上看,这三个步骤就是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得对各个子数据集有一个最好的分类的过程,这个过程就是划分特征空间,构建决策树的过程。

 

8.如何选择最优特征?

根据特征的分类能力去选择最优特征,特征分类能力的衡量通常采用信息增益或信息增益比。

 

9.谈谈你对信息增益和信息增益比的理解。

信息增益(互信息):指集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)

信息增益率:用信息增益去选择特征有一个问题,即偏向于选择取值较多的特征。解决思路就是对取值较多的特征进行适当的惩罚(这里如果面试官感兴趣,可以说说惩罚思想,如L1L2都是一种惩罚的做法),这就是信息增益比所干的事

 

10.信息增益,信息增益率的缺点和原因?

信息增益

缺点:偏向取值较多的特征

原因:特征取值较多时,更容易得到纯度更高的子集,因此划分后熵更低,因为划分前熵时一定的,所以信息增益更大,所以信息增益偏向取值较多的特征

解决方法:使用信息增益比

 

信息增益率

缺点:偏向取值较少的特征

原因:特征取值较少时HA(D)值较小,倒数(惩罚因子)较大,信息增益率较大

解决方法:不是直接选信息增益率最大的特征。先选出信息增益高于平均水平的特征,再从这些特征里选择信息增益率最高的特征。

 

11. 递归的终止条件是什么呢?

1)所有训练数据子集被基本正确分类。

2)没有合适的特征可选,即可用特征为0,或可用特征的信息增益或信息增益比都很小了。

 

12.简述决策树的构建过程

特征选择,生成树,剪枝(优化)

 

13. 什么是决策树剪枝
由于根据训练数据生成的决策树往往过于复杂,导致泛化能力比较弱,所以,实际的决策树学习中,会将已生成的决策树进行简化,以提高其泛化能力,这一过程叫做剪枝。具体说就是在已生成的决策树上裁掉一些子树或叶节点,并将其根节点或父节点作为新的叶节点。

14.如何对决策树进行剪枝?

有两预剪枝和后剪枝两种方法
预剪枝(详细)

后剪枝(详细)算法包括Reduced-Error PruningPessimistic Error Pruning(悲观剪枝)

预剪枝可能产生欠拟合的风险,后剪枝由于需要先生成完整的树,再自底向上进行剪枝,因此花费的时间要久的多。

 

15.为什么决策树需要进行剪枝?

处理由于数据中的噪声和离群点导致的过拟合问题

 

16.C4.5决策树算法如何处理连续数值型属性?

使用二分法将连续数据离散化(具体)

 

17.C4.5处理成本耗时较高,效率低的原因?

在构造树的过程中需要对树进行多次顺序扫描和排序

 

18.C4.5CART的区别

标准;分类/回归;多叉/二叉;特征利用重复性

作为分类的C4.5则是不能重复利用特征,CART对于特征的利用是可以重复的,

 

20.简述一下分类树和回归树

分类/回归树;特征选择:分类:gini,回归:平方误差;二叉树

 

21.CART如何生成回归树?

特征选择时:方差/平方误差最小

 

22.CART树对离散特征取值数目>=3的特征如何处理?

方法:选一个离散值作为一个节点,其他生成另一个

对于离散型属性,理论上有多少个离散值就应该分裂成多少个节点。但CART是一棵二叉树,每一次分裂只会产生两个节点。将其中一个离散值独立作为一个节点,其他的离散值生成另外一个节点即可。这种分裂方案有多少个离散值就有多少种划分的方法,举一个简单的例子:如果某离散属性一个有三个离散值XYZ,则该属性的分裂方法有{X}{YZ}{Y}{XZ}{Z}{XY},分别计算每种划分方法的基尼值或者样本方差确定最优的方法。

 

23.决策树对连续值和缺失值如何处理?

(详细)

 

24.如果决策树属性用完了仍未对决策树完成划分应该怎么办?

方法:多数表决,用出现次数最多的类别作为此节点类别     

在决策树构造过程中可能会出现这种情况:所有属性都作为分裂属性用光了,但有的子集还不是纯净集,即集合内的元素不属于同一类别。在这种情况下,由于没有更多信息可以使用了,一般对这些子集进行多数表决,即使用此子集中出现次数最多的类别作为此节点类别,然后将此节点作为叶子节点。

 

25.如何避免决策树的过拟合?剪枝

26.决策树需要进行归一化处理吗?

树:不需要归一化;基于距离/参数:需要归一化

基于树的方法是不需要进行特征的归一化,例如随机森林,bagging boosting等。基于参数的模型或基于距离的模型,都是要进行特征的归一化。Tree Model不太需要one-hot编码: 对于决策树来说,one-hot的本质是增加树的深度。

 

27.常用的决策树一定是二叉树吗?二叉决策树与多分支决策树相比各有什么特点?

不一定;CART是二叉,ID3,C4.5是多分支

 

28.你认为在一棵决策树构建过程中较为耗时的步骤是什么?

特征选择

 

29.你正在一个时间序列数据集上工作,开始用决策树算法,因为你知道它在所有类型数据上的表现都不错。后来,你尝试了时间序列回归模型,并得到了比决策树模型更高的精度。这种情况会发生吗?为什么?

可能发生;时间序列数据有线性关系。决策树算法是已知的检测非线性交互最好的算法。为什么决策树没能提供好的预测的原因是它不能像回归模型一样做到对线性关系的那么好的映射。因此,我们知道了如果我们有一个满足线性假设的数据集,一个线性回归模型能提供强大的预测。

 

30.决策树在选择特征进行分类时一个特征被选择过后,之后还会选择到这个特征吗?

作为分类的C4.5则是不能重复利用特征,CART对于特征的利用是可以重复的,

 

31.决策树学习的三个步骤?

特征选择,决策树生成,决策树修剪

 

32.决策树相比贝叶斯算法的优势?

决策树的优势在于构造过程不需要任何领域知识或参数设置

 

33我们想在大数据集上训练决策树, 为了使用较少时间, 我们可以?

减少树的深度

增加树的深度, 会导致所有节点不断分裂, 直到叶子节点是纯的为止. 所以, 增加深度, 会延长训练时间.

 

你可能感兴趣的:(机器学习算法-决策树)