机器学习面试-树模型

    技术2022-07-11  116

    集成学习

    Boosting:

    串行方式训练基分类器, 各分类器之间有强依赖关系。基本思想是基分类器层层叠加, 每一层基分类器在训练的时候, 对前一层基分类器分错的样本给与更高的权重。 最后的结果由根据各层分类器的结果加权得到。

    Bagging:

    各分类器之间无依赖, 可以使用并行的方式。基本思想是, 各个个体分而治之, 独立作出判断, 在通过投票的方式,做出最后的决策。

    偏差:

    偏差是指由有所采样得到的大小为m的训练数据集,训练出的所有模型的输出的平均值和真实模型输出之间的偏差

    方差:

    所有采样得到的大小为m的训练数据集,训练出的所有模型的输出的方差

    为什么选择决策树作为基分类器?

    1. 可以方便的将样本的权重更新到训练过程中, 不需要使用过采样的方法来调节样本的权重。 2. 决策树的表达能力和泛化能力, 可以通过调节输的结构来控制 3. 数据样本的扰动对决策树影响较大, 不稳定的学习器更适合基分类器。

    可否将随机森林的基分类器, 由决策树替换为线性分类器或者KNN?

    不可以, 决策树的本质就是Bagging + CART, Bagging 的主要好处就是通过减小方差来提高模型的性能, 集成后的分类器, 比基分类器的方差小。Bagging选用的基分类器最好死对数据扰动比较敏感的分类器, 这样性能才好, 但是线性模型和KNN属于比较稳定的基分类器。使用Bagging后并不能再原有的基础上获得更好的模型, 甚至可能因为采样的原因导致,在训练中难以收敛, 从而增大了模型的偏差。

    决策树构造时使用的准则

    1. ID3 算法(最大信息增益)

    2. C4.5(最大信息增益比)

    3. CART树

    回归问题用平方误差最小准则, 分类问题使用基尼系数最小准则

    信息熵和基尼指数的关系

    信息熵在x=1处一阶泰勒展开就是基尼指数

    决策树中处理连续型变量的策略:

    1. ID3只能处理离散型数据 2. C4.5在处理连续型变量时候, 通过对数据排序以后找到类别不同的分割线作为切割点, 根据切割点把连续型变量转化为布尔型, 从而将连续型变量转化为离散型数据。 3. CART 采用二值划分的策略处理连续型数据

    决策树处理缺失值的策略;

    1. ID3对缺失值敏感 2. C4.5在可以在每个节点上产出很多分支, 且每个特征在层级之间不会重复 3. CART 每个节点只会生产两个分支形成一个二叉树, 且每个特征可以被重复使用。

    决策树在应用上的不同:

    1. ID3 和C4.5只能用与分类任务 2. CART既可以用于分类任务也可以用于回归任务

    GBDT

    思想: 使用损失函数的负梯度作为当前模型的值作为回归问题提升树算法中的残差近似值, 拟合一颗回归树。

    GADT的损失函数

    GBDT算法的优缺点:

    优点:

    可以灵活处理各种类型的数据, 包括连续值和离散值预测模型阶段计算速度快, 树与树之间可以并行优化具有很好的解释性和鲁棒性不需要进行特殊预处理

    缺点:

    难以并行训练数据在高维数据中, 表现不如SVM或者神将网络在处理文本累问题时, 优势不明显

    RF和GBDT的区别:

    组成RF的树可以是分类树也可以是回归树, 组成GBDT 的只能是回归树 组成RF的树可以

    采用并行的方式, 组成GBDT的树只能采取串行方式 RF对异常值不敏感, GBDT对异常值敏感

    RF通过减小模型的方差来提高模型的性能, GBDT通过减小模型的偏差来提高模型的性能

    RF采用多数投票机制得到最终结果, GBDT通过所有结果加权累加的方式

    XGboost

    GBDT和XGboost算法的区别

    1. GBDT是机器学习算法, XGBoost是该算法的工程实现 2. 在使用CART作为基分类器的时候, XGboost显示的加入了正则化项来控制模型的复杂度, 有利于防止过拟合, 从而提高模型的泛华能力。 3. 传统的GBDT使采用CART作为基分类器, XGboost支持多种基分类器。 4. GBDT在迭代时使用全部的数据, XGBoost支持数据进行采样 5. GBDT使用了损失函数的一阶导数信息, XGboost使用损失函数的二阶泰勒展开 6. GBDT对缺失值敏感, XGBoost 对能够自动学习出缺失值的策略

    为什么xgboost要用泰勒展开优势在哪?

    xgboost使用了一阶和二阶偏导, 二阶导数有利于梯度下降的更快更准. 使用泰勒展开取得函数做自变量的二阶导数形式, 可以在不选定损失函数具体形式的情况下, 仅仅依靠输入数据的值就可以进行叶子分裂优化计算, 本质上也就把损失函数的选取和模型算法优化/参数选择分开了. 这种去耦合增加了xgboost的适用性, 使得它按需选取损失函数, 可以用于分类, 也可以用于回归。

    xgboost如何寻找最优特征?是又放回还是无放回的呢?

    gboost在训练的过程中给出各个特征的增益评分,最大增益的特征会被选出来作为分裂依据, 从而记忆了每个特征对在模型训练时的重要性 – 从根到叶子中间节点涉及某特征的次数作为该特征重要性排序. xgboost属于boosting集成学习方法, 样本是不放回的, 因而每轮计算样本不重复. 另一方面, xgboost支持子采样, 也就是每轮计算可以不使用全部样本, 以减少过拟合. 进一步地, xgboost 还有列采样, 每轮计算按百分比随机采样一部分特征, 既提高计算速度又减少过拟合。

    (仅用于自学记录, 侵权删) 参考资源: 《百面机器学习》 https://zhuanlan.zhihu.com/p/58434325 https://blog.csdn.net/yyy430/article/details/85108797 https://www.jianshu.com/p/0fe45d4e9542 https://www.zhihu.com/people/suan-fa-cai-ji https://blog.csdn.net/v_JULY_v/article/details/78121924

    Processed: 0.010, SQL: 9