r语言 C4.5 剪枝是用什么算法_AI算法机器学习常见面试题(二)

02c9956aaa99b25d759d489d8e781bf8.png

常见决策树

395b5112afd32f3431dba4e1f57d626e.png

简述决策树构建过程

  1. 构建根节点,将所有训练数据都放在根节点
  2. 选择一个最优特征,按照这一特征将训练数据集分割成子集,使得各个子集有一个在当前条件下最好的分类
  3. 如果子集非空,或子集容量未小于最少数量,递归1,2步骤,直到所有训练数据子集都被正确分类或没有合适的特征为止

详述信息熵计算方法及存在问题

6517fe8046a0e41e07cd551fa60b1be7.png

其中,D为数据全集,C为不同因变量类别k上的子集(传统意义上的y的种类)

详述信息增益计算方法

条件信息熵:在特征A给定的条件下对数据集D分类的不确定性:

21d46781ae0e2e836f1346148328d46c.png

信息增益:知道特征A的信息而使类D的信息的不确定减少的程度(对称):
I(D,A) = H(D)-H(D/A)

简而言之,就是在特征A下找到最合适的切分,使得在该切分下信息量的变换最大,更加稳定;但是这个有一个问题,对于类别天生较多的特征,模型更容易选中,因为特征类别较多,切分后的信息增益天生更大,更容易满足我们的原始假设

详述信息增益率计算方法

在信息增益计算的基础不变的情况下得到的:I(D,A) = H(D)-H(D/A),同时还考虑了

1f5df03d05e34b5c4c5e95b4055f1151.png

,用划分的子集数上的熵来平衡了分类数过多的问题。

信息增益率:

3d15559408781f6649c4150654062e58.png

解释Gini系数

Gini系数二分情况下:

854236e349b7abc492107549683074f5.png

对于决策树样本D来说,

ddbada6415d700fbfe2f0350f15be09c.png

对于样本D,如果根据特征A的某个值,把D分成D1和D2,则在特征A的条件下,D的基尼系数为:

1a3d3868a27ff517a74ccb9c5f49c13f.png

ID3存在的问题

缺点:

  • 存在偏向于选择取值较多的特征问题
  • 连续值不支持
  • 缺失值不支持
  • 无法枝剪

C4.5相对于ID3的改进点

  • 主动进行的连续的特征离散化比如m个样本的连续特征A有m个,先set在order,在两两组合求中间值,以该值点作为划分的待选点连续特征可以后序特征划分中仍可继续参与计算
  • 缺失问题优化训练:用所有未缺失的样本,和之前一样,计算每个属性的信息增益,但是这里的信息增益需要乘以一个系数(未缺失样本/总样本)预测:直接跳过该节点,并将此样本划入所有子节点,划分后乘以系数计算,系数为不缺失部分的样本分布
  • 采用预枝剪

CART的连续特征改进点

  • 分类情况下的变量特征选择离散变量:二分划分连续变量:和C4.5一致,如果当前节点为连续属性,则该属性后面依旧可以参与子节点的产生选择过程
  • 回归情况下,连续变量不再采取中间值划分,采用最小方差法

CART分类树建立算法的具体流程

我们的算法从根节点开始,用训练集递归的建立CART树。

  • 对于当前节点的数据集为D,如果样本个数小于阈值或者没有特征,则返回决策子树,当前节点停止递归
  • 计算样本集D的基尼系数,如果基尼系数小于阈值,则返回决策树子树,当前节点停止递归
  • 计算当前节点现有的各个特征的各个特征值对数据集D的基尼系数
  • 在计算出来的各个特征的各个特征值对数据集D的基尼系数中,选择基尼系数最小的特征A和对应的特征值a。根据这个最优特征和最优特征值,把数据集划分成两部分D1和D2,同时建立当前节点的左右节点,做节点的数据集D为D1,右节点的数据集D为D2
  • 递归1~4

CART回归树建立算法的具体流程

其他部分都一样,在构建过程中遇到连续值的话,并不是利用C4.5中的中间值基尼系数的方式,而是采取了最小方差方法:

对于任意划分特征A,对应的任意划分点s两边划分成的数据集D1和D2,求出使D1和D2各自集合的均方差最小,同时D1和D2的均方差之和最小所对应的特征和特征值划分点,其中c1为D1的均值,c2为D2的均值:

b714c153b877f2f53334ac22daeafc60.png

CART输出结果的逻辑?

  • 回归树:利用最终叶子的均值或者中位数来作为输出结果
  • 分类树:利用最终叶子的大概率的分类类别来作为输出结果

CART树算法的剪枝过程是怎么样的?

目标函数为:()=()+||,其中,α为正则化参数,这和线性回归的正则化一样。()为训练数据的预测误差,分类树是用基尼系数度量,回归树是均方差度量。||是子树T的叶子节点的数量

当=0时,即没有正则化,原始的生成的CART树即为最优子树。当=∞时,即正则化强度达到最大,此时由原始的生成的CART树的根节点组成的单节点树为最优子树。
当然,这是两种极端情况。一般来说,越大,则剪枝剪的越厉害,生成的最优子树相比原生决策树就越偏小。对于固定的,一定存在使损失函数()最小的唯一子树。
由枝剪到根结点及不枝剪两种情况可得:=(()−())/(||−1) , C(T)为根结点误差

  • 计算出每个子树是否剪枝的阈值
  • 选择阈值集合中的最小值
  • 分别针对不同的最小值所对应的剪枝后的最优子树做交叉验证

树形结构为何不需要归一化?

无论是分类树还是回归树,无论是连续变量还是离散变量,树模型一直想找的是最优切分点,不存在梯度导数等计算,数值缩放不影响分裂点位置,对树模型的结构不造成影响。

决策树的优缺点

优点:

  • 缺失值不敏感,对特征的宽容程度高,可缺失可连续可离散
  • 可解释性强
  • 算法对数据没有强假设
  • 可以解决线性及非线性问题
  • 有特征选择等辅助功能

缺点:

  • 处理关联性数据比较薄弱
  • 正负量级有偏样本的样本效果较差
  • 单棵树的拟合效果欠佳,容易过拟合

解释下随机森林?

  • 随机森林=bagging+决策树
  • 随机:特征选择随机+数据采样随机特征随机是在决策树每个结点上选择的时候随机,并不是在每棵树创建的时候随机每个结点上对特征选择都是从全量特征中进行采样对,不会剔除已利用的数据采样,是有放回的采样1个样本未被选到的概率为p = (1 - 1/N)^N = 1/e,即为OOB
  • 森林:多决策树组合可分类可回归,回归是对输出值进行简单平均,分类是对输出值进行简单投票

随机森林用的是什么树?

CART树

随机森林的生成过程?

  • 生成单棵决策树随机选取样本从M个输入特征里随机选择m个输入特征,然后从这m个输入特征里选择一个最好的进行分裂不需要剪枝,直到该节点的所有训练样例都属于同一类
  • 生成若干个决策树

解释下随机森林节点的分裂策略?

Gini系数

在连续值和离散值上:CART分类树建立算法的具体流程和CART回归树建立算法的具体流程

随机森林的损失函数是什么?

  • 分类RF对应的CART分类树默认是基尼系数gini,另一个可选择的标准是信息增益
  • 回归RF对应的CART回归树默认是均方差mse,另一个可以选择的标准是绝对值差mae
  • 参考决策树的损失函数即可:CART分类树建立算法的具体流程和CART回归树建立算法的具体流程

为了防止随机森林过拟合可以怎么做?

  • 增加树的数量
  • 增加叶子结点的数据数量
  • bagging算法中,基模型的期望与整体期望一致,参考就理论角度论证Bagging、Boosting的方差偏差问题
  • 随着基模型数(m)的增多,整体模型的方差减少,从而防止过拟合的能力增强,模型的准确度得到提高

随机森林特征选择的过程?

特征选择方向:对于某个特征,如果用另外一个随机值替代它之后的表现比之前更差,则表明该特征比较重要,所占的权重应该较大,不能用一个随机值替代。相反,如果随机值替代后的表现没有太大差别,则表明该特征不那么重要,可有可无
- 通过permutation的方式将原来的所有N个样本的第i个特征值重新打乱分布(相当于重新洗牌)
- 是使用uniform或者gaussian抽取随机值替换原特征

是否用过随机森林,有什么技巧?

  • 除了直接让随机森林选择特征,还有自行构造组合特征带入模型,是的randomForest-subspace变成randomForest-combination

RF的参数有哪些,如何调参?

要调整的参数主要是 n_estimators和max_features

  • n_estimators是森林里树的数量,通常数量越大,效果越好,但是计算时间也会随之增加。 此外要注意,当树的数量超过一个临界值之后,算法的效果并不会很显著地变好
  • max_features是分割节点时考虑的特征的随机子集的大小。 这个值越低,方差减小得越多,但是偏差的增大也越多回归:max_features = n_features分类:max_features = sqrt(n_features)

其他参数中

  • class_weight也可以调整正负样本的权重
  • max_depth = None 和 min_samples_split = 2 结合,为不限制生成一个不修剪的完全树

RF的优缺点 ?

  • 优点:不同决策树可以由不同主机并行训练生成,效率很高随机森林算法继承了CART的优点将所有的决策树通过bagging的形式结合起来,避免了单个决策树造成过拟合的问题
  • 缺点:没有严格数学理论支持
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我遵守你的要求并回答你的问题。 对于第一个问题,我很高兴地告诉你,我已经准备好了可以回答你关于人工智能技术分析两个以上实际案例的问题。我将选取两个案例,并使用机器学习算法和神经网络算法来分析这些案例。 第一个案例是关于自动驾驶汽车的。自动驾驶汽车是一种利用人工智能技术和机器学习算法来实现的智能系统。这些汽车可以通过使用传感器和其他设备来收集和处理数据,从而实现自主驾驶。 在实现自主驾驶的过程中,机器学习算法可以帮助自动驾驶汽车分析和理解道路上的不同情况,例如交通标志、行人和其他车辆。同时,神经网络算法可以帮助汽车进行实时的决策,例如在遇到紧急情况时如何反应。这些算法的应用可以有效地提高自动驾驶汽车的安全性和性能。 第个案例是关于语音识别技术的。语音识别技术是一种利用神经网络算法来实现的智能系统。这些系统可以通过分析和识别语音信号,将其转换为文本或其他形式的数据。 在实现语音识别的过程中,神经网络算法可以帮助系统对语音信号进行分析和处理,并从中提取有用的信息。这些算法的应用可以提高语音识别系统的准确性和效率,从而为人们提供更好的语音交互体验。 以上是我对于人工智能技术分析两个以上实际案例的回答,希望能够帮助到你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值