机器学习-面经(part4、决策树)

7. 决策树

7.1 ID算法

核心是在决策树各个节点上应用信息增益准则选择特征,递归的构建决策树。

具体方法是:从根结点开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值建立子结点;再对子结点递归的调用以上方法,构建决策树;直到所有特征的信息增益均很小或没有特征可以选择为止。ID3相当于用极大似然法进行概率模型的选择。使用二元切分法则易于对树构建过程中进行调整以处理连续型特征。

具体的处理方法是: 如果特征值大于给定值就走左子树,否则走右子树。另外二元切分法也节省了树的构建时间。

7.2 C4.5算法

        算法用信息增益率选择特征,在树的构造过程中会进行剪枝操作优化,能够自动完成对连续属性的离散化处理;在选择分割属性时选择信息增益率最大的属性。

7.2.1 C4.5为什么使用信息增益率

        在使用信息增益的时候,如果某个特征有很多取值,使用这个取值多的特征会的大的信息增益,这个问题是出现很多分支,将数据划分更细,模型复杂度高,出现过拟合的机率更大。使用信息增益比就是为了解决偏向于选择取值较多的特征的问题. 使用信息增益比对取值多的特征加上的惩罚,对这个问题进行了校正.

7.3 CART算法

分类与回归树 —— 使用二元切分法来处理连续型数值。

使用Gini作为分割属性选择的标准,择Gini最大的作为当前数据集的分割属性。

Gini:表示在样本集合中一个随机选中的样本被分错的概率。

Gini指数越小表示集合中被选中的样本被分错的概率越小,也就是说集合的纯度越高,反之,集合越不纯。

即 基尼指数(基尼不纯度)= 样本被选中的概率 * 样本被分错的概率

CART算法由以下两步组成:

决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大;

决策树剪枝:用验证数据集对已生成的树进行剪枝并选择最优子树,这时用损失函数最小作为剪枝的标准。

7.3.1 基尼指数和信息熵都表示数据不确定性,为什么CART使用基尼指数?

        信息熵0, logK都是值越大,数据的不确定性越大. 信息熵需要计算对数,计算量大;信息熵是可以处理多个类别,基尼指数就是针对两个类计算的,由于CART树是一个二叉树,每次都是选择yes or no进行划分,从这个角度也是应该选择简单的基尼指数进行计算.

7.3.2 基尼系数(Gini)存在的问题?

        基尼指数偏向于多值属性;当类数较大时,基尼指数求解比较困难;基尼指数倾向于支持在两个分区中生成大小相同的测试。

7.4 ID3 vc C4.5 vs CART

7.5 决策树

        定义: 决策树就是一棵树,其中跟节点和内部节点是输入特征的判定条件,叶子结点就是最终结果。其损失函数通常是正则化的极大似然函数;目标是以损失函数为目标函数的最小化。

        算法通常是一个递归的选择最优特征,并根据该特征对训练数据进行分割,使得对各个子数据集有一个最好的分类过程。

        决策树量化纯度:判断数据集“纯”的指标有三个:Gini指数、熵、错误率

7.5.1 决策树的数据split原理或者流程?

  1. 将所有样本看做一个节点
  2. 根据纯度量化指标.计算每一个特征的’纯度’,根据最不’纯’的特征进行数据划分
  3. 重复上述步骤,知道每一个叶子节点都足够的’纯’或者达到停止条件

背诵:按照基尼指数、信息增益来选择特征,保证划分后纯度尽可能高。

7.5.2 构造决策树的步骤?

        1.特征选择

        2.决策树的生成(包含预剪枝)  ---- 只考虑局部最优

        3.决策树的剪枝(后剪枝)      ---- 只考虑全局最优

7.5.3 决策树算法中如何避免过拟合和欠拟合?‍

过拟合: 选择能够反映业务逻辑的训练集去产生决策树;

剪枝操作(前置剪枝和后置剪枝); K折交叉验证(K-fold CV)

欠拟合: 增加树的深度,RF

7.5.4 决策树怎么剪枝?

        分为预剪枝和后剪枝,预剪枝是在决策树的构建过程中加入限制,比如控制叶子节点最少的样本个数,提前停止;

        后剪枝是在决策树构建完成之后,根据加上正则项的结构风险最小化自下向上进行的剪枝操作.

        剪枝的目的就是防止过拟合,是模型在测试数据上变现良好,更加鲁棒.

7.5.5 决策树的优缺点

优点包括:

  • 易于理解和解释。决策树可以直观地展示决策过程,每个决策节点都对应于一个条件或规则,便于非技术人员理解。
  • 计算效率高。决策树算法的计算复杂度相对较低,特别适用于处理小数据集,且不需要大量内存。
  • 对数据预处理要求较低。决策树算法不需要过多的数据预处理,如标准化或归一化。
  • 能够处理多类问题。决策树可以处理多类问题,并且可以方便地扩展到处理更多类别。
  • 可以进行特征选择。决策树算法可以自动选择最重要的特征,有助于理解和改进模型的预测性能。

决策树的缺点包括:

  • 容易过拟合。决策树可能会过于复杂,导致过拟合,降低模型在未知数据上的性能。
  • 容易受噪声影响。决策树对于噪声非常敏感,少量的噪声可能会导致决策树性能大大降低。
  • 对连续属性的处理不佳。对于连续属性,决策树需要设定阈值进行分割,可能导致结果的不稳定性和不公平性。
  • 对缺失值的处理不佳。如果数据集中有缺失值,决策树可能会受到影响,有时导致性能下降。
  • 对数据的预处理要求较高。对于一些特定的问题,可能需要特定的预处理步骤才能得到好的结果。
  • 使用范围有限。无法适用于一些不能用数量表示的决策,对各种方案的出现概率的确定有时主观性较大,可能导致决策失误。
  • 可能产生过度匹配问题。对于各类别样本不一致的数据,信息增益偏向于更多那些数值的特征,容易过拟合。
  • 忽略属性之间的相关性。决策树可能忽略属性之间的相关性,导致模型性能下降。

7.5.6 决策树和条件概率分布的关系?

        决策树可以表示成给定条件下类的条件概率分布. 决策树中的每一条路径都对应是划分的一个条件概率分布. 每一个叶子节点都是通过多个条件之后的划分空间,在叶子节点中计算每个类的条件概率,必然会倾向于某一个类,即这个类的概率最大.

7.5.7 为什么使用贪心和其发生搜索建立决策树,为什么不直接使用暴力搜索建立最优的决策树?

        决策树目的是构建一个与训练数据拟合很好,并且复杂度小的决策树. 因为从所有可能的决策树中直接选择最优的决策树是NP完全问题,在使用中一般使用启发式方法学习相对最优的决策树.

7.5.8 如果特征很多,决策树中最后没有用到的特征一定是无用吗?

        不是无用的,从两个角度考虑,一是特征替代性,如果可以已经使用的特征A和特征B可以提点特征C,特征C可能就没有被使用,但是如果把特征C单独拿出来进行训练,依然有效. 其二,决策树的每一条路径就是计算条件概率的条件,前面的条件如果包含了后面的条件,只是这个条件在这棵树中是无用的,如果把这个条件拿出来也是可以帮助分析数据.

7.5.9 决策树怎么做回归?

  1. 收集数据:首先需要收集一个包含特征(自变量)和目标变量(因变量)的数据集。
  2. 选择特征:根据特征选择的准则,选择对目标变量具有最大划分能力的特征作为当前节点的划分依据。
  3. 划分数据集:将数据集根据选定的特征进行划分,将数据集分为不同的子集。每个子集对应于特征划分的一个取值。
  4. 计算划分的质量:通常使用某个指标来评估每个特征的划分质量,比如方差或者均方差等。选择划分后使得目标变量的差异最小的特征。
  5. 递归构建子树:对划分后的每个子集,重复步骤2-4,直到满足停止划分的条件。停止划分的条件可能是达到预定的最大深度,子集的样本数量小于某个阈值,或者数据集在划分前后没有明显的变化等。
  6. 决策树剪枝:可以采用预剪枝或后剪枝方式减小模型的过拟合风险。预剪枝是在构造过程中通过设置阈值进行剪枝,后剪枝则是在构造完整的决策树后,通过剪掉某些子树并计算整体模型的误差进行剪枝。
  7. 预测新样本:使用构建好的回归树模型来预测新样本的目标变量。

损失函数,比如 L2 损失,可以把分叉结果量化;最终的输出值,是分支下的样本均值。  [切分点选择:最小二乘法]; [输出值:单元内均值].

7.5.10 决策树算法的停止条件?

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

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

决策树的深度达到指定的条件: 决策树的深度是所有叶子节点的最大深度,当深度到达指定的上限大小时,停止分裂。

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

7.5.11 为什么决策树之前用PCA会好一点?

        决策树的本质在于选取特征,然后分支。 PCA解除了特征之间的耦合性,并且按照贡献度给特征排了个序,这样更加方便决策树选取特征。

7.6 熵(entropy)

是表示随机变量不确定性的度量,是用来衡量一个随机变量出现的期望值。

如果信息的不确定性越大,熵的值也就越大,出现的各种情况也就越多。

条件熵(H(Y∣X)):表示在已知随机变量X的条件下随机变量Y的不确定性,其定义为X在给定条件下Y的条件概率分布的熵对X的数学期望:

7.7 二次代价函数

二次代价函数训练NN,看到的实际效果是,如果误差越大,参数调整的幅度可能更小,训练更缓慢。

交叉熵

用于度量两个概率分布间的差异性信息。语言模型的性能通常用交叉熵和复杂度来衡量。

交叉熵代价函数带来的训练效果往往比二次代价函数要好。

交叉熵代价函数是如何产生的?

7.8 信息增益

定义: 特征A对训练数据集D的信息增益g(D,A),定义为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差,即: g(D,A)=H(D)-H(D|A)

信息增益: 表示由于特征A使得对数据集D的分类的不确定性减少的程度。

信息增益 = entroy(前) - entroy(后)

 

特征选择方法是:对训练数据集D,计算其每个特征的信息增益,并比较它们的大小,选择信息增益最大的特征。

7.8.1 什么信息增益偏向取值较多的特征(缺点)?

        当特征的取值较多时,根据此特征划分更容易得到纯度更高的子集,因此划分之后的熵更低,由于划分前的熵是一定的,因此信息增益更大,因此信息增益比较 偏向取值较多的特征。

7.8.2 信息增益率

信息增益率 = 惩罚参数 * 信息增益 (即信息增益和特征熵的比值)

  其中:

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

惩罚参数: 数据集D以特征A作为随机变量的熵的倒数,即:将特征A取值相同的样本划分到同一个子集中(数据集的熵是依据类别进行划分的)。

当特征取值较少时HA(D)的值较小,因此其倒数较大,因而信息增益比较大。因而偏向取值较少的特征。

7.8.3 如何使用信息增益比?

在候选特征中找出信息增益高于平均水平的特征,然后在这些特征中再选择信息增益率最高的特征。

7.9 Hard Voting Vs Softing Voting

  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值