1、谈谈对决策树的理解(定义&原理)
定义
决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程:
决策树可以被视为一组完备且互斥的 if-then 规则的集合,每个实例都被唯一的一条规则所覆盖。
决策树也可以被视为定义在特征空间与类空间上的条件概率分布。这一条件概率分布定义在特征空间的一个划分上。对给定实例,我们首先找到它所属的叶结点(或者说特征单元),然后将该实例划分到该结点上条件概率最大的类。
原理
决策树的学习通常包括三个步骤:特征选择、决策树生成、剪枝。
在定义好损失函数的前提下,一个全局最优决策树的求解是 NP 问题,因此常用的决策树算法无一例外都是启发式算法(所谓启发式算法就是依据直观和经验构造的对复杂最优化问题的求解方法,该方法不保证得到最优解,但可以在可接受的时间空间花费下找到一个较好的解,SMO算法就是启发式算法),即一步步寻找局部最优的划分特征并递归生成决策树,为防止过拟合,最后对生成的决策树进行剪枝。
2、决策树模型的优缺点
优点
模型可解释性强。便于理解数据特征对分类的影响,从而指导实践。
分类速度快。训练好的决策树模型在输入新数据点时,其分类过程就是在决策树中按分类规则划入叶子结点的过程,此过程非常快。
可以同时处理类别数据和数值数据。对于离散且无序的类别特征,其他分类模型未必有好的解决方案,通常使用独热编码进行处理,大大增加了特征维度。而决策树可以很自然地处理类别特征。
可以处理有缺失属性的样本。具体见下一问。
对离群值不敏感。
缺点
容易发生过拟合。剪枝可以一定程度上避免过拟合。随机森林可以很大程度上减少过拟合。
忽略了特征之间的相关性。我们每次只选定一个最优属性进行结点划分,未考虑到各属性间的相关性(比如我们按长度和宽度分别划分,却不会考虑到按面积=长度*宽度来划分)。
当数据类别不平衡时可能表现较差。当某类数据占绝大多数的时候,决策树各结点的划分主要反映此类样本点的特性,从而使得决策树对其他小类学习效果欠佳。
3、决策树模型如何处理缺失数据
首先我们为每个样本赋予一个权重,这个权重衡量了将此样本划入当前结点的把握大小。
然后在面临最优特征选择时,我们首先计算在当前特征上无缺失值的属性的信息增益,然后将其乘上在当前属性上没有缺失的样本的权值和占所有样本权值和的比例(这个比例衡量了缺失值对信息增益的影响,即缺失越多,最终的信息增益就越少),得出此特征对应的信息增益。
在选定最优特征后,要将有缺失值的样本划入哪个结点呢?答案是按照没有缺失值的样本中各个属性取值的比例划入各个结点,并将权重乘上对应比例,这是一个让同一个样本以不同概率划入各个子结点的合理方法。
4、什么是信息增益(比)和基尼指数,为什么用这些指标进行特征选择
信息增益其实就是训练数据集中类与特征的互信息。
特征 A 对训练集 D 的信息增益为 D 的经验熵减去给定特征 A 的条件下 D 的经验条件熵:
熵衡量分类的不确定性,这里的信息增益表示由于特征 A 使得对数据集 D 进行分类的不确定性减少的程度。因此信息增益大的特征具有更强的分类能力。
信息增益比是信息增益与数据集 D 关于特征 A 的熵之比:
这里的,
是特征
取值的个数。
也就是说,信息增益比在信息增益的基础上对取值较多的特征增加了惩罚因子,从而起到了避免过拟合的作用。
基尼指数和熵类似,也是衡量不确定性的指标,对类的分类问题,假设样本点属于第
类的概率为
,则概率分布的基尼指数为:
直观上看,基尼指数就是从数据中随机抽取两个样本其类别标记不同的概率,它衡量了数据集的纯度,基尼指数越小,数据集纯度越高。
因此我们在进行特征选择的时候,要寻找最大的信息增益(比)和最小的基尼指数。
5、简述几种主要的决策树模型及其区别
ID3:从根结点开始对结点计算所有可能特征对信息增益,选择信息增益最大的特征作为划分特征,由该特征不同取值建立子结点,然后对子结点递归调用上述方法,直到所有特征信息增益均很小或没有特征对时候可以选择停止。ID3相当于用极大似然法进行概率模型的选择。注意 ID3 只有树的生成,没有剪枝过程,因此容易过拟合。
C4.5:和 ID3 相似,只是把信息增益换成了信息增益比。
CART:
(1) CART 假设决策树是二叉树,内部结点特征取值均为“是”或“否”。
(1) CART 可应用于分类,也可应用于回归。分类树采用基尼系数最小化准则,回归树采用平方误差最小化准则。
(2) CART 包括决策树的生成和剪枝,一定程度上避免了过拟合。
6、简述决策树的剪枝方法
决策树的剪枝分为欲剪枝和后剪枝。
欲剪枝:在决策树生成过程中,对每个结点在划分前,先采用验证集的数据来验证如果划分是否能提高划分的准确性。若当前结点的划分不能带来决策树泛化性能的提高,则停止划分并将当前结点标记为叶结点。
后剪枝:先从训练集生成一颗完整决策树,然后自底向上对非叶结点进行考察,若将该结点对应子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点。
不管是哪种剪枝方式,其实我们做的事情都是通过模型在验证集上的表现来调整超参,这里的超参可以看作树高或各个分支的大小。
两者优劣对比如下:
7、CART 剪枝算法比传统剪枝算法好在哪里
所有剪枝算法都是由如下带正则项的损失函数定义的:
这里。其中
表示叶子结点
的样本个数,
表示叶子结点
的经验熵,
表示叶子结点个数。
传统剪枝算法计算各个结点的经验熵,递归的从叶结点向上回缩,若叶结点回缩到父结点后的树对应的损失小于回缩前,则剪枝,重复此过程直至不能继续为止。注意,这里是超参数,是需要人为给定的。
CART 剪枝算法则是自下而上对各个内部结点计算以
为根结点的子树和此子树回缩成结点
对应的损失相等时
的取值,从中挑选最小的
进行剪枝,得到一个树的序列,最后对这些剪枝过程中产生的树进行交叉验证。注意,这里的
是通过计算产生的。
CART剪枝算法的优点是:
不显式需要指定正则化系数
。CART 剪枝算法自动生成了一系列良好的超参数
,然后利用验证集进行超参数选择。
CART 剪枝算法的效率更高。因为CART 剪枝算法只需要搜索超参数
的有限数量的区间即可,而传统剪枝算法需要搜索整个数域 。
8、树形结构为什么不需要归一化
因为数值缩放不影响分裂点位置,对树模型的结构不造成影响。特征值排序的顺序不变,那么所属的分支以及分裂点就不会有不同。而且,树模型是不能进行梯度下降的,因为构建树模型(回归树)寻找最优点时是通过寻找最优分裂点完成的,因此树模型是阶跃的,阶跃点是不可导的,并且求导没意义,也就不需要归一化。策树、RF)不需要归一化,那为何非树形结构比如Adaboost、SVM、LR、KNN、KMeans之类则需要归一化呢?因为对于线性模型,特征值差别很大时,运用梯度下降的时候,损失等高线是椭圆形,需要进行多次迭代才能到达最优点。但是如果进行了归一化,那么等高线就是圆形的,促使 SGD 往原点迭代,从而导致需要的迭代次数较少。