gbdt 算法比随机森林容易_聊聊GBDT和随机森林
原标题:聊聊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和随机森林相关推荐
- gbdt 算法比随机森林容易_用Python实现随机森林算法
CDA数据分析师 出品 拥有高方差使得决策树(secision tress)在处理特定训练数据集时其结果显得相对脆弱.bagging(bootstrap aggregating 的缩写)算法从训练数据 ...
- 用python随机生成数字_如何实现python随机生成数字?
今天小编就生成随机数,整理了多个方式,方便大家在项目时,根据自己的需求,直接拿来套用即可,以下内容相当详细,具体来看看吧~ 说明:python中生成随机数主要用到random模块,方法主要包括:ran ...
- vba调用mysql随机出题软件_题库需要随机进行出题
Function 随机试题() '产生随机数代码,40个随机数字从1-100中取 '1.声明变量 Dim dx As Integer '随机单选题数值 Dim dxjh A ...
- python实现随机抽取答题_问卷星可以随机抽取题库答题吗
问卷星可以随机抽取题库答题吗 简介 自动填写问卷并提交 , 然后自动刷新继续填写 , 适用于问卷星 , 欢迎 Star 上个月开源了一个 Python 项目(登上过 GitHub 最流行的 中文语言 ...
- gbdt算法_GBDT算法原理及应用
是新朋友吗?记得先点蓝字关注我哦- 作者介绍 知乎@王多鱼 京东的一名推荐算法攻城狮. 主要负责商品推荐的召回和排序模型的优化工作. 一.GBDT算法原理 Gradient Boosting Deci ...
- gbdt 算法比随机森林容易_机器学习(七)——Adaboost和梯度提升树GBDT
1.Adaboost算法原理,优缺点: 理论上任何学习器都可以用于Adaboost.但一般来说,使用最广泛的Adaboost弱学习器是决策树和神经网络.对于决策树,Adaboost分类用了CART分类 ...
- gbdt 算法比随机森林容易_随机森林与GBDT
Bagging策略 1.总样本数量是n个,从样本中重采样(有放回的)选出n个样本 ,会有约33.2%的样本不会被抽到 2.在所有属性上对这n个样本建立分类器(比如决策树,svm,lr) 3.重复步骤1 ...
- 决策树与剪枝、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 ...
- python随机森林库_随机森林算法入门(python)
目录 1 什么是随机森林 1.1 集成学习 1.2 随机决策树 1.3 随机森林 1.4 投票 2 为什么要用它 3 使用方法 3.1 变量选择 3.2 分类 3.3 回归 4 一个简单的Python ...
最新文章
- 资深大佬:基于深度学习的图像边缘和轮廓提取方法介绍
- 单片机程序100-300例(付注释详解)
- Page页面生命周期——微信小程序
- javascript rsa java,用javascript与java执行
RSA加密与解密
- JQuery实现树的功能doc
- 视觉SLAM学习--RTAB MAP学习(待完善)
- 338. Counting Bits(动态规划)
- 做音视频开发,你读对书了吗?(内有福利)
- linux 内存使用原理,linux中内存使用原理
- python怎么暂停爬虫_python Python爬虫防封杀方法集合
- Setting the Background Image for a List Control
- 互联网产品的测试策略应该如何设计?
- Linux系统Ubuntu下部署Tomcat
- 四参数拟合曲线_Origin进行体外释药规律的拟合
- python xlwt_python的xlwt模块
- AtCoder从小白到大神的进阶攻略
- Java实现泛型解析工具类-GenericsUtils
- 运营进阶:产品运营画布九要素
- linux-应用-压缩与解压小结
- 如此美妙,Python 处理CSV、JSON和XML数据的方法真简便