原标题:聊聊GBDT和随机森林

欢迎关注天善智能微信公众号,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区。 对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,邀请你进入头条数据爱好者交流群,数据爱好者们都在这儿

GBDT 和 随机森林都是基于决策树而得到的。决策树比较容易理解,它具有比较直观的图示。利用决策树可以发现比较重要的变量,也可以挖掘变量之间的关系。决策树也比较不易受到离群点和缺失值的影响。由于决策树不考虑空间分布,也不考虑分类器的结构,它是一种无参算法。但是决策树比较容易过拟合,另外,决策树不易处理连续型变量。

Gradient Boosting 是一种提升的框架,可以用于决策树算法,即GBDT。通常Boosting基于弱学习器,弱分类器具有高偏差,低方差。决策树的深度较浅时,通常是弱学习器,比如一种比较极端的例子,只有一个根节点和两个叶子节点。Boosting这种策略主要通过减小偏差来降低总体误差,一般来讲,通过集成多个模型的结果也会减小方差。这里的总体误差可以看作由偏差和方差构成。由于GBDT是基于Boosting策略的,所以这种算法具有序贯性,不容易并行实现。

关于偏差和方差随模型复杂度变化,可以参见下图。

随机森林主要通过减小方差来降低总体误差。随机森林是由多个决策树构成的,因此需要基于原始数据集随机生成多个数据集,用于生成多个决策树。这些决策树之间的相关性越小,方差降低得越多。虽然随机森林可以减小方差,但是这种组合策略不能降低偏差,它会使得总体偏差大于森林中单个决策树的偏差。

随机森林利用bagging来组合多个决策树,容易过拟合。由于这种方法基于bagging思想,因此这种算法比较容易并行实现。随机森林能够较好地应对缺失值和非平衡集的情形。

下面给出基于scikit-learn的随机森林示例:

fromsklearn.ensembleimportRandomForestClassifier

X=[[0,0],[1,1]]Y=[0,1]clf=RandomForestClassifier(n_estimators=10)clf=clf.fit(X,Y)

spark也内嵌了随机森林算法,示例如下:

frompyspark.mllib.treeimportRandomForest,RandomForestModelfrompyspark.mllib.utilimportMLUtils# Loadandparsethe datafileintoan RDD ofLabeledPoint.data=MLUtils.loadLibSVMFile(sc,'data/mllib/sample_libsvm_data.txt')# Splitthe dataintotraining andtestsets(30% held outfortesting)(trainingData,testData)=data.randomSplit([0.7,0.3])# Train a RandomForest model.# EmptycategoricalFeaturesInfo indicates all features arecontinuous.# Note: Uselarger numTrees inpractice.# Setting featureSubsetStrategy="auto"lets the algorithm choose.model=RandomForest.trainClassifier(trainingData,numClasses=2,categoricalFeaturesInfo={},

numTrees=3,featureSubsetStrategy="auto",

impurity='gini',maxDepth=4,maxBins=32)# Evaluatemodelontestinstances andcomputetesterrorpredictions=model.predict(testData.map(lambdax:x.features))labelsAndPredictions=testData.map(lambdalp:lp.label).zip(predictions)testErr=labelsAndPredictions.filter(lambda(v,p):v!=p).count()/float(testData.count())print('Test Error = '+str(testErr))print('Learned classification forest model:')print(model.toDebugString())# Saveandloadmodelmodel.save(sc,"target/tmp/myRandomForestClassificationModel")sameModel=RandomForestModel.load(sc,"target/tmp/myRandomForestClassificationModel")

这两种算法也可以用于客户管理或营销领域,比如客户流失预测(Bagging and boosting classification trees to predict churn

) 和点击率预估(

Feature Selection in Click-Through Rate Prediction Based on Gradient Boosting

)等。

转载请保留以下内容:

本文来源自天善社区陈富强老师的博客(公众号)。

责任编辑:

gbdt 算法比随机森林容易_聊聊GBDT和随机森林相关推荐

  1. gbdt 算法比随机森林容易_用Python实现随机森林算法

    CDA数据分析师 出品 拥有高方差使得决策树(secision tress)在处理特定训练数据集时其结果显得相对脆弱.bagging(bootstrap aggregating 的缩写)算法从训练数据 ...

  2. 用python随机生成数字_如何实现python随机生成数字?

    今天小编就生成随机数,整理了多个方式,方便大家在项目时,根据自己的需求,直接拿来套用即可,以下内容相当详细,具体来看看吧~ 说明:python中生成随机数主要用到random模块,方法主要包括:ran ...

  3. vba调用mysql随机出题软件_题库需要随机进行出题

    Function 随机试题()    '产生随机数代码,40个随机数字从1-100中取 '1.声明变量 Dim dx As Integer            '随机单选题数值 Dim dxjh A ...

  4. python实现随机抽取答题_问卷星可以随机抽取题库答题吗

    问卷星可以随机抽取题库答题吗 简介 自动填写问卷并提交 , 然后自动刷新继续填写 , 适用于问卷星 , 欢迎 Star 上个月开源了一个 Python 项目(登上过 GitHub 最流行的 中文语言 ...

  5. gbdt算法_GBDT算法原理及应用

    是新朋友吗?记得先点蓝字关注我哦- 作者介绍 知乎@王多鱼 京东的一名推荐算法攻城狮. 主要负责商品推荐的召回和排序模型的优化工作. 一.GBDT算法原理 Gradient Boosting Deci ...

  6. gbdt 算法比随机森林容易_机器学习(七)——Adaboost和梯度提升树GBDT

    1.Adaboost算法原理,优缺点: 理论上任何学习器都可以用于Adaboost.但一般来说,使用最广泛的Adaboost弱学习器是决策树和神经网络.对于决策树,Adaboost分类用了CART分类 ...

  7. gbdt 算法比随机森林容易_随机森林与GBDT

    Bagging策略 1.总样本数量是n个,从样本中重采样(有放回的)选出n个样本 ,会有约33.2%的样本不会被抽到 2.在所有属性上对这n个样本建立分类器(比如决策树,svm,lr) 3.重复步骤1 ...

  8. 决策树与剪枝、bagging与随机森林、极端随机树、Adaboost、GBDT算法原理详解

    目录 1.决策树 1.1 ID3 1.2 C4.5 1.3 CART 1.4 预剪枝和后剪枝 2 bagging与随机森林 2.1 bagging 2.2 随机森林 3 极端随机树 4 GBDT 5 ...

  9. python随机森林库_随机森林算法入门(python)

    目录 1 什么是随机森林 1.1 集成学习 1.2 随机决策树 1.3 随机森林 1.4 投票 2 为什么要用它 3 使用方法 3.1 变量选择 3.2 分类 3.3 回归 4 一个简单的Python ...

最新文章

  1. 资深大佬:基于深度学习的图像边缘和轮廓提取方法介绍
  2. 单片机程序100-300例(付注释详解)
  3. Page页面生命周期——微信小程序
  4. javascript rsa java,用javascript与java执行 RSA加密与解密
  5. JQuery实现树的功能doc
  6. 视觉SLAM学习--RTAB MAP学习(待完善)
  7. 338. Counting Bits(动态规划)
  8. 做音视频开发,你读对书了吗?(内有福利)
  9. linux 内存使用原理,linux中内存使用原理
  10. python怎么暂停爬虫_python Python爬虫防封杀方法集合
  11. Setting the Background Image for a List Control
  12. 互联网产品的测试策略应该如何设计?
  13. Linux系统Ubuntu下部署Tomcat
  14. 四参数拟合曲线_Origin进行体外释药规律的拟合
  15. python xlwt_python的xlwt模块
  16. AtCoder从小白到大神的进阶攻略
  17. Java实现泛型解析工具类-GenericsUtils
  18. 运营进阶:产品运营画布九要素
  19. linux-应用-压缩与解压小结
  20. 如此美妙,Python 处理CSV、JSON和XML数据的方法真简便

热门文章

  1. 计算机毕业设计ssm基于SSM框架的宿舍管控平台6z76b系统+程序+源码+lw+远程部署
  2. 【算法】1041- 图解 LeetCode第 70 题爬楼梯问题
  3. FFmpeg音频提取并截取片段
  4. 河北涿州京南经济开发区
  5. (阿里云笔记)贝勾置阿里云轻量应用服务器CentOS7.6镜像——Linux系统
  6. Three.js零基础入门教程(2023版本)
  7. 智能门锁全国产化电子元件推荐方案
  8. 尘缘浅悟之蹒跚学步:linux命令整理
  9. Vue之xlsx的使用
  10. Modbus RTU 协议详解