https://blog.csdn.net/yyy430/article/details/85108797​blog.csdn.net梯度提升树(GBDT)原理小结 - 刘建平Pinard - 博客园​www.cnblogs.comhttps://www.cnblogs.com/peizhe123/p/5086128.html​www.cnblogs.com七月在线:机器学习面试题精讲(二)​zhuanlan.zhihu.com

https://blog.csdn.net/blank_tj/article/details/82262431​blog.csdn.nethttps://blog.csdn.net/zpalyq110/article/details/79527653​blog.csdn.netxxxk:XGBoost与GBDT(二)-算法推导​zhuanlan.zhihu.com

https://blog.csdn.net/yc1203968305/article/details/78251400​blog.csdn.net

Bagging和Boosting区别:
Bagging算法和Boosting都属于集成算法,最重要的假设是:当弱模型被正确组合时,
我们可以得到更精确和/或更鲁棒的模型。bagging 的重点在于获得一个方差比其组成部分更小的集成模型,而 boosting 和 stacking则将主要生成偏差比其组成部分更低的强模型(即使方差也可以被减小)Bagging和Boosting 的主要区别:1. Bagging采取Bootstraping的是随机有放回的取样,Boosting的每一轮训练的样本是固定的,改变的是每个样本的权重。2. Bagging 的各个预测函数可以并行生成;Boosting的各个预测函数必须按照顺序迭代生成将Bagging和Boosting分别和树模型结合分别生成:Bagging+决策树=随机森林Boosting+决策树=GBDT随机森林优缺点:优点:1) 很容易查看模型的输入特征的相对重要性2) 可以处理高维数据  3) 因为是 属于Bagging所以模型的泛化能力强 (方差小)缺点:1)使用大量的树会使算法变得很慢,无法做到实时预测2)对于回归问题,精准度不够3)抗噪声干扰能力弱,无法自动处理异常样本

为什么当GBDT用作分类任务时可以选择deviance lossexponential loss, 而这两个损失函数的y^(i)取值都为0-1标量, 如何计算残差?

答:在GBDT做二分类任务时, y^(i)不再是标量, 而是概率(为正的概率); 另一方面, deviance loss(二分类就是交叉熵损失)和exponential loss都是 评价预测(概率)与真实(概率)之间的差距, 也就是残差, 是一个连续值, 从而是一个回归问题.

残差和负梯度什么关系?

GBDT认为每棵残差树只学到了真实情况的一小部分,希望通过每次走一小步的方式逐渐逼近真实结果,认为这样比每次迈一大步的方式更容易避免过拟合,这就是shrinkage的思想

GBDT缺点1. 基于残差的gbdt在解决回归问题上不算好的选择,对异常值过于敏感2. 不适合高维稀疏特征3. 不好并行计算

gbdt的残差为什么用负梯度代替?

sklearn 中 GBDT 实现 ---> from sklearn.ensemble import GradientBoostingRegressor,GradientBoostingClassifier

RF与GBDT之间的区别与联系?
相同点:
1)都是由多棵树组成
2)最终的结果都由多棵树共同决定不同点:
1)组成随机森林的树可以分类树也可以是回归树,而GBDT只由回归树组成
2)组成随机森林的树可以并行生成(Bagging), GBDT只能串行生成(Boosting)
3)随机森林的结果是多数表决表决的,而GBDT则是多棵树加权累加之和
4)随机森林对异常值不敏感,而GBDT对异常值比较敏感
5)随机森林是减少模型的方差(高方差/过拟合),而GBDT是减少模型的偏差(高偏差/欠拟合)
6)随机森林不需要进行特征归一化,而GBDT则需要进行特征归一化

GBDT主要由Regression Decistion Tree,Gradient Boosting,Shrinkage三个概念组成。
1) 关于DT: GDBT 中的树全部都是回归树,核心就是累加所有树的结果作为最终结果。
只有回归树的结果累加起来才是有意义的,分类的结果加是没有意义的。GDBT 调整之后
可以用于分类问题,但是内部还是回归树。
2) 关于GB:首先 Boosting 是一种集成方法。通过对弱分类器的组合得到强分类器,他是串行的,
几个弱分类器之间是依次训练的。GBDT 的核心就在于,每一颗树学习的是之前所有树结论和的残差。
3) Shrinkage:核心思想在于:Shrinkage 认为每次走一小步来逼近结果的效果,要比每次迈一大步
很快逼近结果的方式更容易防止过拟合。也就是说,它不信任每次学习到的残差,它认为每棵树只学
习到了真理的一小部分,累加的时候只累加一小部分,通过多学习几棵树来弥补不足。


GBDT -算法推导

XGBoost与GBDT都是基于Boost方法的树模型, 是类似的算法模型, 都是函数优化问题. 二者最根本的区别就在于最优化的方法不同,GBDT在函数空间中利用梯度下降法进行优化, 而XGBoost在函数空间中用牛顿法进行优化。

总的来说梯度下降法和牛顿法分别使用了一阶泰勒展开式和二阶泰勒展开式产生了迭代公式。

1.梯度下降法

2. 牛顿法

GBDT可以在参数空间和函数空间分别进行转化从梯度下降变成boosting

XGBoost可以在参数空间和函数空间分别进行转化从牛顿法变成boosting

具体业务中,GBDT一般不直接使用,因为容易出现过拟合问题。比较好的方法是GBDT+LR
GBDT+LR 使用最广泛的场景是CTR点击率预估,即预测当给用户推送的广告会不会被用户点击。(二分类)
点击率预估模型涉及的训练样本一般是上亿级别,样本量大,模型常采用速度较快的LR。
但LR是线性模型,学习能力有限,此时特征工程尤其重要。GBDT算法的特点正好可以用来发掘有
区分度的特征、特征组合,减少特征工程中人力成本。

# gbdt 特征提取  https://www.cnblogs.com/wkang/p/9657032.html
from sklearn.preprocessing import OneHotEncoder
from sklearn.ensemble import GradientBoostingClassifiergbm1 = GradientBoostingClassifier(n_estimators=50, random_state=10, subsample=0.6, max_depth=7,min_samples_split=900)
gbm1.fit(X_train, Y_train)
#model.apply(X_train)返回训练数据X_train在训练好的模型里每棵树中所处的叶子节点的位置(索引)
train_new_feature = gbm1.apply(X_train)
train_new_feature = train_new_feature.reshape(-1, 50)
#OneHotEncoder() 首先fit() 过待转换的数据后,再次transform() 待转换的数据,
#就可实现对这些数据的所有特征进行One-hot 操作。由于transform() 后的数据格式不能直接使用,
#所以最后需要使用.toarray() 将其转换为我们能够使用的数组结构。
enc = OneHotEncoder()enc.fit(train_new_feature)# # 每一个属性的最大取值数目
# print('每一个特征的最大取值数目:', enc.n_values_)
# print('所有特征的取值数目总和:', enc.n_values_.sum())train_new_feature2 = np.array(enc.transform(train_new_feature).toarray())

gbdt 回归 特征重要性 排序_GBDT 理解相关推荐

  1. gbdt 回归 特征重要性 排序_gbdt、xgb、lgb、cat面经整理——from牛客

    注意,下文的原始的gbdt是以sklearn中的gbdt的实现为例子来阐述的,因为gbdt的改进版本有很多,为了叙述方便,使用这个最为人所知的实现来描述. 你有自己用过别的模型然后调参之类的吗?能说一 ...

  2. gbdt 回归 特征重要性 排序_RandomForest、GBDT、XGBoost、lightGBM 原理与区别

    RF,GBDT,XGBoost,lightGBM都属于集成学习(Ensemble Learning),集成学习的目的是通过结合多个基学习器的预测结果来改善基本学习器的泛化能力和鲁棒性. 根据基本学习器 ...

  3. 特征重要性排序--Permutation Importance

    特征重要性排序–Permutation Importance 参考:Permutation Importance | Kaggle 相比于其他衡量特征重要性的方法,Permutation Import ...

  4. 随机森林的特征重要性排序

    OOB计算 用未被选择到的学习的数据,做验证集计算.不必另外做validation了 Feature Selection 如果没有做好这部分,也是有缺点的: 其中最致命的就是,可能得到的是错误的答案, ...

  5. 使用XGboost模块XGBClassifier、plot_importance来做特征重要性排序——修改f1,f2等字段

    如果你还不知道如何使用XGboost模块XGBClassifier.plot_importance来做特征重要性排序,戳这个网址即可. 下面我们讲一个全网都没好好讲的问题:如何修改f1,f2成对应的特 ...

  6. 随机森林做特征重要性排序和特征选择

    随机森林模型介绍: 随机森林模型不仅在预测问题上有着广泛的应用,在特征选择中也有常用. 随机森林是以决策树为基学习器的集成学习算法.随机森林非常简单,易于实现,计算开销也很小,更令人惊奇的是它在分类和 ...

  7. LR模型特征重要性排序

    1.特征重要性的意义 LR模型也就是逻辑回归模型,作为一个简单的常用的模型,其有非常多的优点,除了模型简单,容易实现分布式,还有一个重要的优点就是模型的可解释性非常好.因为每个特征都对应一个模型参数w ...

  8. 利用随机森林进行特征重要性排序

    第一步就是导包,这里我们主要需要用到的就是sklearn和pandas 我们先对自己的数据集进行一下处理 import numpy as np import pandas as pd testset= ...

  9. 随机森林对特征重要性排序

    two methods:  1.Mean decrease impurity 不纯度降低 大概是对于每颗树,按照impurity(gini /entropy /information gain)给特征 ...

最新文章

  1. Java 常用代码汇总
  2. python pytorch fft_PyTorch 中的傅里叶卷积实现示例
  3. (0109)iOS开发之CocoaPods Mac App的安装和使用
  4. Linux下nginx安装与配置
  5. 额外参数_Pytorch获取模型参数情况的方法
  6. mysql传入乱码_mysql 插入中文乱码解决方案 --转了
  7. 2021 Gartner云数据库魔力象限,阿里云、华为云成国内唯二
  8. 华为云ModelArts2.0来袭
  9. mysql如何优化where子句
  10. docker mysql域名访问_Docker中配置MySQL并实现远程访问
  11. Windows cmd下载文件
  12. 谷歌浏览器开发者模式
  13. 遵义微红科技社群直播分销系统精选最具市场营销的功能点
  14. 浅谈MySQL安全加固
  15. 微信支付分(四)--取消支付分订单
  16. 不同分发平台的区别和特点
  17. 腾讯地图 多个异步script互相依赖加载问题
  18. 【笔记】操作系统(六)——进程同步
  19. 祖国(或以梦为马) 海子
  20. C++的html模板库——google-ctemplete

热门文章

  1. JAVA 中BIO,NIO,AIO的理解
  2. 8 关于数据仓库维度数据处理的方法探究系列——父子维
  3. jquery实现后台系统左侧菜单的点击展开/收缩二级菜单效果
  4. android客户端访问服务端tomcat
  5. 2015年10月15日作业
  6. 如何设置putty远程登录linux
  7. 为什么很多人喜欢把软件装在D盘,而不是系统盘C
  8. C# 日志框架的添加
  9. 真我新格调 勇敢使梦想×××
  10. Mssql 之 定期备份数据库