原文:机器学习面试题汇总(决策树相关),做了一些笔记。
1.简述决策树的原理
2.简述决策树的构建过程
3.信息增益率有什么优缺点?
4.如何对决策树进行剪枝?
5.为什么决策树需要进行剪枝?
6.C4.5对ID3做了哪些改进?
7.C4.5决策树算法如何处理连续数值型属性?
8.C4.5与CART的区别
9.简述一下分类树和回归树
10.CART如何生成回归树?
11.CART决策树对离散特征取值数目>=3的特征如何处理?
12.决策树对缺失值如何处理?
13.如果决策树属性用完了仍未对决策树完成划分应该怎么办?
14.如何避免决策树的过拟合?
15.决策树需要进行归一化处理吗?
16.常用的决策树一定是二叉树吗?二叉决策树与多分支决策树相比各有什么特点?
17.你认为在一棵决策树构建过程中较为耗时的步骤是什么?
18.你正在一个时间序列数据集上工作,开始用决策树算法,因为你知道它在所有类型数据上的表现都不错。后来,你尝试了时间序列回归模型,并得到了比决策树模型更高的精度。这种情况会发生吗?为什么?
19.决策树在选择特征进行分类时一个特征被选择过后,之后还会选择到这个特征吗?
20.和其他模型比,决策树有哪些优点和缺点?
1. 原理
决策树是一种基本分类和回归方法,利用树的结构,先构建根节点,递归地选择最优特征(一般是离散型特征),最优特征有几种取值就划分几个子集,对数据集进行分割。
一棵决策树包含一个根结点、若干个内部结点和若干个叶结点;叶结点对应于决策结果,其他每个结点则对应一个属性测试;每个结点包含的样本结合根据属性测试的结果被划分到子结点中;根结点包含样本全集,从根结点到每个叶结点的每个叶结点的路径对应一个判定测试序列。决策树学习的目的是为了产生一棵泛化能力强,也就是能够处理未见实例的决策树。
决策树算法包括特征选择
、决策树的生成
、剪枝
等操作。
- ID3算法:选择信息增益最大的特征
- C4.5算法:用信息增益比来选择特征
- CART算法:用基尼指数来选择特征
特征选择划分的“纯度
”的几个重要概念:信息熵
、信息增益
、信息增益率
、基尼指数
。
参考我的博客:解释决策树
2.构建过程
把特征看做树的节点,特征的取值看作是树的路径。
构建步骤:
- 开始,所有记录看作一个节点;
- 遍历每种分割方式,找到最好的分割点;
- 将数据分隔为两个节点部分N1和N2;
- 对N1和N2分别继续执行2-3步,直到每个节点中的项足够“纯”(纯度可以理解为同一个叶子节点的样本大致都为同一类)
不同类型的特征的处理方法:
- 特征是离散值,而且不要求生成的是二叉决策树,此时一个属性就是一个分支;
- 特征是离散值,而且要求生成的是二叉决策树,此时使用属性划分的子集进行测试,按照“属于此子集”和“不属于此子集”分成两个分支;
- 特征是连续值,可以确定一个值作为分裂点,按照大于和小于等于分裂点生成两个分支。
停止条件(满足一个即可):
- 当每个叶子节点(特征)只有一种取值类型的时候;
- 当前节点中记录数(满足当前特征划分方式的样本数)小于某个阀值;
- 迭代次数达到给定值时。
3.信息增益率的优缺点
先看一下信息增益和信息增益率的公式:
优点:
信息增益率比信息增益多做了一个归一化,减小了特征取值多给特征划分带来的不利影响。
缺点:
基于信息增益率的定义,偏向取值数目少的特征,所以并不是直接选择信息增益率最大的特征,而是在现在候选特征中找出信息增益高于平均水平的特征。(????不是很懂)
4.如何剪枝?
- 预剪枝:自上而下,顺着决策树构建过程,每次特征划分后判断一下要不要剪枝(比较特征划分前后能不能来带来性能提升,即比较验证集精度),可能剪枝的节点的子节点不需要剪枝,欠拟合的风险高;
- 后剪枝。自下而上,发生在决策树构建之后,相比预剪枝欠拟合风险降低,但两次遍历决策树,时间成本增加。
5.为什么要剪枝?
缓解过拟合。
6.C4.5对ID3做了哪些改进?
答案感谢博客:决策树C4.5算法对ID3算法的改进
C4.5用信息增益来选择特征,ID3用信息增益比来选择特征。
ID3算法有四个主要的不足,一是不能处理连续特征,第二个就是用信息增益作为标准容易偏向于取值较多的特征,最后两个是缺失值处理和过拟合问题。
- 对于第一个问题,不能处理连续特征, C4.5的思路是将
连续的特征离散化
(具体怎么做参考笔记7)。 - 对于第二个问题,引入
信息增益比
,相当于给信息增益做了归一化处理,特征数越多的特征对应的特征熵越大,它作为分母,可以校正信息增益容易偏向于取值较多的特征的问题。 - 对于第三个缺失值处理的问题,主要需要解决的是两个问题,一是在样本某些特征缺失的情况下选择划分的属性(将有
缺失值的特征单独划分为一个特征
),二是选定了划分属性,对于在该属性上缺失特征的样本的处理(参考拉普拉斯平滑
)。 - 对于第4个问题,C4.5引入了
正则化系数
进行初步的剪枝。
7.C4.5决策树算法如何处理连续数值型特征?
对连续性特征先排序(升序),如果是二叉树,有N个样本就N-1中划分方式,eg:<vj划分到左子树,≥vj划分到右子树。
8.C4.5与CART的区别
基尼指数:反映了随机抽取两个样本,其类别标记不一致的概率。
属性a的基尼指数定义为
优化
区别:
- 在特征选择的方式上,C4.5采用信息增益率,CART采用基尼指数;
- CART还可以做回归,回归的时候用均方误差,分类用基尼指数;
c1、c2 分别是两段连续值特征的均值。 - (从公式上看)CART对特征的利用是可重复的,C4.5不行。
- (从公式上看),CART只适合做二叉树,C4.5可以多叉。
9. 简述一下分类树与回归树
分类树:根据信息增益/信息增益率/基尼指数等方式来做特征选择,将符合条件的样本归于划分的节点中;
回归树:总体流程类似,不同的地方在于,每个节点都会得到一个回归的值c(这个值是当前节点连续值样本的平均值),采用均方误差来惩罚损失。
10.CART如何生成回归树?
参考笔记9、参考博客cart回归树算法过程
1)依次遍历每个特征j,以及该特征的每个取值s,计算每个切分点(j,s)的损失函数,选择损失函数最小的切分点;
2)使用上步得到的切分点将当前的输入空间划分为两个部分;
3)然后将被划分后的两个部分再次计算切分点,依次类推,直到不能继续划分。
4)最后将输入空间划分为M个区域R1,R2,…,RM,生成的决策树为:
其中cm为所在区域的输出值的平均。
总结:此方法的复杂度较高,尤其在每次寻找切分点时,需要遍历当前所有特征的所有可能取值,假如总共有F个特征,每个特征有N个取值,生成的决策树有S个内部节点,则该算法的时间复杂度为:O(FNS)
11.CART决策树对离散特征取值数目>=3的特征如何处理?
这个题很诡异,打个???来提醒我,以后可能会修改。
常见的CART都是二叉树,取值数目多了怎么办,人为地合并特征呗。
为什么是二叉树呢,我的理解是:从基尼指数的公式上看,基尼指数反映了随机抽取两个样本,其类别标记不一致的概率,多个样本就尴尬了,时间复杂度也会飙升。
12.决策树对于缺失值如何处理?
- 将有缺失值的特征单独划分为一个特征,在样本某些特征缺失的情况下选择划分的属性;
- 类似拉普拉斯平滑,选定了划分属性,对于在该属性上缺失特征的样本的处理;
- 还有忽略和填充等传统办法。
13.如果决策树属性用完了仍未对决策树完成划分怎么办?
也就是说,同一的叶子节点的样本(自带类别)不是纯净的,不完全是同一个类别,这种情况下在训练样本多、特征少的情况下很容易发生。
解决办法:
- 重新训练,尝试特征组合等办法去扩充特征;
- 多数表决,使用节点中出现最多的类别作为该节点的标签。
14.如何避免决策树的过拟合?
剪枝。参考笔记4
15.决策树需要进行归一化处理吗?
不需要。概率模型(树形模型)不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树、RF。而像Adaboost、SVM、LR、Knn、KMeans之类的最优化问题就需要归一化。
概率模型(Statistical Model,也称为Probabilistic Model)是用来描述不同随机变量之间关系的数学模型,通常情况下刻画了一个或多个随机变量之间的相互非确定性的概率关系。
16.常用的决策树一定是二叉树吗?二叉树和多叉树对比有什么特点?
CART必须是二叉树,ID3和C4.5可以是多叉树,这是根据它们特征选择的公式来决定的。
二叉树可能比多叉树达到更深的最终决策树。
17.一棵决策树在构建过程中最耗时的步骤?
如果处理连续值特征(ID3、C4.5、CART这三种决策树都可以处理),确定最佳分割点的时候,要对特征的值进行排序,这个过程中耗时多。
18. 在处理时序数据上,时序回归模型会比决策树模型好吗?
时序数据指的是一类事物或现象随着时间变化状态或程度。时间序列是线性模型,决策树是已知的检测非线性交互最好的算法,不能像回归模型一样对线性关系有那么好的映射。
19.
其他参考资料
1.决策树知识点小结