机器学习算法-模型融合和提升算法

1 bagging和boosting的区别

1) 样本选择: Bagging :在训练集集中是有选择放回选取的。

2)样例权重

3) 预测函数

4) 并行计算

https://www.nowcoder.com/tutorial/95/1febc9ddb91f46098f7341b05831db69

2 XGBoost 和GDBT 的区别

GDBT 在函数空间中利用梯度下降法进行优化而XGB 在函数空间中使用了牛顿法进行优化,即GDBT 在优化中使用了一阶导数信息,而XGB 对损失函数进行了二阶泰勒展开,用到了一阶和二阶倒数信息,XGB 在损失函数中加入了正则项(树叶子节点个数,每个叶子节点上输出score 的L2 模平方和,对于缺失的样本,XGB 可以自动学习出它的分裂方向)。GDBT的节点分裂方式是用的是gini系数,XGB 通过优化推导出分类前后的增益来选择分裂节点。XGB 在处理每个特征时可以做到并行。

3 GDBT 的原理,以及常用的调参参数

先用一个初始值去学习一棵树,然后在叶子处得到预测值以及预测后的残差,之后的树则基于之前树的残差不断的拟合得到,从而训练出一系列的树作为模型。

n_estimators基学习器的最大迭代次数,learning_rate 学习率,max_lead_nodes 最大叶子节点数,max_depth树最大的深度,min_sanple_leaf 叶子最少的样本数

4 Adaboost和GDBT的区别

AdaBoost通过·调整错分的数据点的权重来改进模型,而GBDT 是负梯度方向去拟合改进模型

Adaboost 改变了训练数据的权重,即样本的概率分布,减少上一轮被正确分类的样本权值,提高被错误分类的样本权值,而随机森林在训练每棵树的时候,随机挑选部分训练集进行训练,在对新数据进行预测是,Adaboost 中所有树加权投票进行预测,每棵树的权重和错误率有关,而随机森林对所有树的结果按照少数服从多数的原则进行预测。

5 rf和gdbt基分类器的区别,里面的决策树长啥样,怎么剪枝?

GDBT 的核心是通过用分类器(如CART ,RF)拟合损失函数梯度,而损失函数的定义就决定了在子区域内各个步长,其中就是期望输出与分类器预测输出的差,即bias。而RF的核心就是样本随机和属性随机,样本数相同下不同训练集产生的各个分类器,即数据的扰动导致模型学习性能的变化,即variance。

GBDT 和随机森林的相同点:

1) 都是多棵树组成,2)结果都是由多棵树一起决定

GBDT 和RF 的不同点:

1) RF 可以是分类树也可以是回归树,GBDT 是回归树

2)随机森林的树可以并行,GBDT 只能串行

3)对最终的输出结果,RF 采用的是多数投票,GBDT 是将所有结果累加起来或者加权起来

4) 随机森林对异常值不敏感,GBDT 对异常值敏感

5)RF 对训练集一视同仁,GBDT 是基于权值的弱分类器的集成

6)RF 是通过减少模型方差提高性能,GBDT 是基于权值的弱分类器的集成

6 xgboost的特征重要性计算

xgboost 根据结构分数的增益情况来计算出来选择哪个特征作为分割点,而某个特征的重要性就是它在所有树中出现的次数之和。

7 xgboost ,rf,lr 优缺点场景

1)xgboost 在寻找最佳分割点时,考虑传统的枚举每个特征的所有可能分割点的贪心法效率太低,xgboost 实现了一种类似的算法,大致的是思想是根据百分位法列举几个可能成为分割点的候选者,然后从候选者中根据上面求分割点的公式计算找出最佳的分割点,2) xgboost 考虑了训练数据为稀疏值的情况,可以为缺失值或者指定的值指定分支的默认方向,这能大大提升算法的效率,paper 提到50倍,3) 特征排列后以块的形式存储在内存中,在迭代中可以重复使用,虽然boosting 算法迭代必须串行,但是在处理每个特征时可以做到并行。4)按照特征列方式存储能优化寻找最佳的分割点,但是当以行计算梯度数据时会导致内存的不连续访问,严重时会导致cache miss,降低算法效率,paper 提到可以先将数据收集到线程内部的buffer,然后再计算提高效率。5)Xgboost 还考虑了当数据量比较大,内存不够时怎么有效的使用磁盘,主要是结合多线程,数据压缩,分片的方法,尽可能的提高算法效率。

rf: 1) 表现性能好,与其他算法相比有很大优势,2) 随机森林能处理很高维度的数据,并且不用做特征选择,3) 训练后可以给出哪些特征比较重要。4) 速度快,容易做并行化方法,5)对不平衡的数据集,可以平衡误差,当存在分类不平衡时,随机森林能提高平衡数据集误差的有效方法,7) 如果有很大一部分的特征丢失,RF 可以维持准确度,9) 过拟合能力比较强 10)能解决分类和回归,并在这两方面都有相当好的估计表现 10)在创建随机森林是,对generlization error 使用的是无偏差估计模型,泛化能力强。

缺点:

1) 随机森林在解决回归问题时,没有像分类中表现的那么好,因为它并不能给出一个连续的输出,当进行回归时随机森林不能做出超越训练集数据范围的预测,这可能导致在某些特定噪声的数据进行建模时出现过度拟合。2) 对于许多统计建模者来说,RF 感觉像一个黑盒子,无法控制模型内部的运行,只能在不同的参数和随机种子之间尝试,3)可能有很多相似的决策树,掩盖了真实的结果,4) 对小数据或低维数据,可能不能产生很好的分类,5)执行数据虽然比boosting等快,但比单只决策树慢多了。

适用场景:数据维度相对低,同时对准确性有较高的要求,不需要很多参数就能达到不错的效果,,基本上不知道用什么方法的时候都可以先试随机森林。

lr: 优点: 简单,广泛用于工业界,分类时计算量很小,速度快,存储资源低,便利的观测样本概率分数,对LR而言,多重共线性并不是问题,它可以结合L2正则化来解决该问题。

缺点: 当特征空间很大时,LR性能并不是很好,容易欠拟合,一般准确率不太高。

不能很好地处理多类特征或变量,只能处理两分类问题,必须线性可分,但对非线性特征需要进行转换。

适用: LR 同样式很多分类算法的基础组件,它的好处是输出值自然地落在0到1之间,并且有概率意义,因为它本质上式一个线性分类器,所有处理不好特征之间相关的情况。

8 xgb和lgb 的区别和适用场景

1)xgb 采用的是level-wise 的分裂策略,lgb 采用的是leaf-wise的策略,区别是xgb 对每一层所有节点做无差别的分裂,可能有些节点的增益非常小,对结果影响不大,但是xgb 也进行了 分裂,带来了开销,leaf-wise 的做法是在当前所有叶子节点中选择分裂收益最大的节点进行分裂,如此递归进行,leaf-wise 容易过拟合,因此要对最大深度做限制。

2) lgb 使用了基于histogram的决策树算法,这一点不同于exg的exact 算法,histogram 算法在内存和计算代价上有不小优势,(1) 内存上优势:直方图算法的内存消耗为(#data*#feature*1bytes),而xgb的exact 算法内存消耗为:(2*#data*#feature*4bytes).因为xgboost 既要保存原始feature 的值,也要保存这个值的顺序索引,这些值需要32位的浮点数来保存,2) 计算上的优势,预排序算法在选择好分裂特征计算分裂收益时需要遍历所有样本的特征值,时间为(#data),而直方图算法只需要遍历桶就行了,时间为(#bin)

3)直方图做差加速

4)lgb 支持直接输入categorical 的feature,在对离散特征分裂时,每个取值都当作一个桶,分裂时增益算的是: 是否属于某个category 的feature,在对离散特征分裂时,每个取值都当作一个桶,分裂时的增益算的“ 是否属于某个category ”的gain ,类似于One-hot 编码,

5)xgboost 在每层都动态构建直方图,因为xgboost 的直方图算法不是针对某个特定的feature,而是所有feature 共享一个直方图(每个样本的权重是二阶导),所以每一层都要重新构建直方图,而lightgbm中对每个特征都有一个直方图,所以构建一个直方图就够了。

其适用场景根据实际项目和两种算法的优点进行选择。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值