文章目录
老铁们✌,重要通知🙌!福利来了!!!😉
【计算机视觉 复习流程剖析及面试题详解 】
【深度学习算法 最全面面试题(30 页)】
【机器学习算法 最全面面试题(61页)】
7.决策树
7.1 ID3算法
核心是在决策树各个节点上应用 信息增益 准则选择特征,递归的构建决策树。
具体方法是:从根结点开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值建立子结点;再对子结点递归的调用以上方法,构建决策树;直到所有特征的信息增益均很小或没有特征可以选择为止。
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 vs 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 决策树的优缺点?
决策树的优点:
1.决策树模型可读性好,具有描述性,有助于人工分析;
2.效率高,决策树只需要一次性构建,反复使用,每一次预测的最大计算次数不超过决策树的深度。
决策树的缺点:
1.即使做了预剪枝,它也经常会过拟合,泛化性能很差。
2.对中间值的缺失敏感;
3.ID3算法计算信息增益时结果偏向数值比较多的特征。
7.5.6 决策树和条件概率分布的关系?
决策树可以表示成给定条件下类的条件概率分布. 决策树中的每一条路径都对应是划分的一个条件概率分布. 每一个叶子节点都是通过多个条件之后的划分空间,在叶子节点中计算每个类的条件概率,必然会倾向于某一个类,即这个类的概率最大.
7.5.7 为什么使用贪心和其发生搜索建立决策树,为什么不直接使用暴力搜索建立最优的决策树?
决策树目的是构建一个与训练数据拟合很好,并且复杂度小的决策树. 因为从所有可能的决策树中直接选择最优的决策树是NP完全问题,在使用中一般使用启发式方法学习相对最优的决策树.
7.5.8 如果特征很多,决策树中最后没有用到的特征一定是无用吗?
不是无用的,从两个角度考虑,一是特征替代性,如果可以已经使用的特征A和特征B可以提点特征C,特征C可能就没有被使用,但是如果把特征C单独拿出来进行训练,依然有效. 其二,决策树的每一条路径就是计算条件概率的条件,前面的条件如果包含了后面的条件,只是这个条件在这棵树中是无用的,如果把这个条件拿出来也是可以帮助分析数据.
7.5.9 决策树怎么做回归?
给回归定义一个损失函数,比如 L2 损失,可以把分叉结果量化;最终的输出值,是分支下的样本均值。 [切分点选择:最小二乘法]; [输出值:单元内均值].
7.5.10 决策树算法的停止条件?
1.最小节点数
当节点的数据量小于一个指定的数量时,不继续分裂。两个原因:一是数据量较少时,再做分裂容易强化噪声数据的作用;二是降低树生长的复杂性。提前结束分裂一定程度上有利于降低过拟合的影响。
2.熵或者基尼值小于阀值。
当熵或者基尼值过小时,表示数据的纯度比较大,如果熵或者基尼值小于一定程度数,节点停止分裂。
3.决策树的深度达到指定的条件
决策树的深度是所有叶子节点的最大深度,当深度到达指定的上限大小时,停止分裂。
4.所有特征已经使用完毕,不能继续进行分裂。
7.5.11 为什么决策树之前用PCA会好一点?
决策树的本质在于选取特征,然后分支。 PCA解除了特征之间的耦合性,并且按照贡献度给特征排了个序,这样更加方便决策树选取特征。
熵(entropy)
是表示随机变量不确定性的度量,是用来衡量一个随机变量出现的期望值。
如果信息的不确定性越大,熵的值也就越大,出现的各种情况也就越多。
条件熵(H(Y∣X)):表示在已知随机变量X的条件下随机变量Y的不确定性,其定义为X在给定条件下Y的条件概率分布的熵对X的数学期望:
二次代价函数
二次代价函数训练NN,看到的实际效果是,如果误差越大,参数调整的幅度可能更小,训练更缓慢。
交叉熵
用于度量两个概率分布间的差异性信息。语言模型的性能通常用交叉熵和复杂度来衡量。
交叉熵代价函数带来的训练效果往往比二次代价函数要好。
交叉熵代价函数是如何产生的?
7.6 信息增益
定义: 特征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.6.1为什么信息增益偏向取值较多的特征(缺点)?
当特征的取值较多时,根据此特征划分更容易得到纯度更高的子集,因此划分之后的熵更低,由于划分前的熵是一定的,因此信息增益更大,因此信息增益比较 偏向取值较多的特征。
7.7信息增益率
信息增益率 = 惩罚参数 * 信息增益 (即信息增益和特征熵的比值)
信息增益比本质: 是在信息增益的基础之上乘上一个惩罚参数。特征个数较多时,惩罚参数较小;特征个数较少时,惩罚参数较大。
惩罚参数: 数据集D以特征A作为随机变量的熵的倒数,即:将特征A取值相同的样本划分到同一个子集中(数据集的熵是依据类别进行划分的)。
当特征取值较少时HA(D)的值较小,因此其倒数较大,因而信息增益比较大。因而偏向取值较少的特征。
7.7.1如何使用信息增益比?
在候选特征中找出信息增益高于平均水平的特征,然后在这些特征中再选择信息增益率最高的特征。