决策树

20172303 2018-2019-1 《程序设计与数据结构》实验二报告

百般思念 提交于 2020-04-29 12:48:10
20172303 2018-2019-1 《程序设计与数据结构》实验二报告 课程:《程序设计与数据结构》 班级: 1723 姓名: 范雯琪 学号:20172303 实验教师:王志强 助教:张师瑜/张之睿 实验日期:2018年11月5日 必修/选修: 必修 实验内容 本次实验主要是关于树的应用, 涉及了二叉树、决策树、表达式树、二叉查找树、红黑树五种树的类型,是对最近学习内容第十章和第十一章的一个总结。 节点一 参考教材P212,完成链树LinkedBinaryTree的实现(getRight,contains,toString,preorder,postorder),用JUnit或自己编写驱动类对自己实现的LinkedBinaryTree进行测试。 节点二 基于LinkedBinaryTree,实现基于(中序,先序)序列构造唯一一棵二㕚树的功能,比如给出先序ABDHIEJMNCFGKL和中序HDIBEMJNAFCKGL,构造出附图中的树,用JUnit或自己编写驱动类对自己实现的功能进行测试。 节点三 自己设计并实现一颗决策树。 节点四 输入中缀表达式,使用树将中缀表达式转换为后缀表达式,并输出后缀表达式和计算结果(如果没有用树,则为0分)。 节点五 完成PP11.3。 节点六 参考 Java Collections API源码分析 对Java中的红黑树(TreeMap

OpenCV-Python 级联分类器训练 | 六十三

北慕城南 提交于 2020-04-28 16:24:52
作者|OpenCV-Python Tutorials 编译|Vincent 来源|OpenCV-Python Tutorials 简介 使用弱分类器的增强级联包括两个主要阶段:训练阶段和检测阶段。 对象检测教程 中介绍了使用基于HAAR或LBP模型的检测阶段。本文档概述了训练自己的弱分类器的级联所需的功能。当前指南将逐步完成所有不同阶段:收集训练数据,准备训练数据并执行实际模型训练。 为了支持本教程,将使用几个官方的OpenCV应用程序:opencv_createsamples,opencv_annotation,opencv_traincascade和opencv_visualisation。 重要的事项 如果您遇到任何提及旧的opencv_haartraining工具( 不推荐使用,仍在使用OpenCV1.x界面 )的教程,请忽略该教程并坚持使用opencv_traincascade工具。此工具是较新的版本,根据OpenCV 2.x和OpenCV 3.x API用C ++编写。opencv_traincascade支持类似HAAR的小波特征[227]和LBP(局部二进制模式)[127]特征。与HAAR特征相比,LBP特征产生整数精度,产生浮点精度,因此LBP的训练和检测速度都比HAAR特征快几倍。关于LBP和HAAR的检测质量,主要取决于所使用的训练数据和选择的训练参数

梯度提升树(GBDT)原理小结

喜欢而已 提交于 2020-04-28 11:46:17
    在 集成学习之Adaboost算法原理小结 中,我们对Boosting家族的Adaboost算法做了总结,本文就对Boosting家族中另一个重要的算法梯度提升树(Gradient Boosting Decison Tree, 以下简称GBDT)做一个总结。GBDT有很多简称,有GBT(Gradient Boosting Tree), GTB(Gradient Tree Boosting ), GBRT(Gradient Boosting Regression Tree), MART(Multiple Additive Regression Tree),其实都是指的同一种算法,本文统一简称GBDT。GBDT在BAT大厂中也有广泛的应用,假如要选择3个最重要的机器学习算法的话,个人认为GBDT应该占一席之地。 1. GBDT概述     GBDT也是集成学习Boosting家族的成员,但是却和传统的Adaboost有很大的不同。回顾下Adaboost,我们是利用前一轮迭代弱学习器的误差率来更新训练集的权重,这样一轮轮的迭代下去。GBDT也是迭代,使用了前向分布算法,但是弱学习器限定了只能使用CART回归树模型,同时迭代思路和Adaboost也有所不同。     在GBDT的迭代中,假设我们前一轮迭代得到的强学习器是$f_{t-1}(x)$, 损失函数是$L(y, f_{t-1

机器学习算法 --- Pruning (decision trees) & Random Forest Algorithm

限于喜欢 提交于 2020-04-28 09:08:05
一、Table for Content   在之前的文章中我们介绍了Decision Trees Agorithms,然而这个学习算法有一个很大的弊端,就是很容易出现 Overfitting ,为了解决此问题人们找到了一种方法,就是对Decision Trees 进行 Pruning(剪枝)操作。   为了提高Decision Tree Agorithm的正确率和避免overfitting,人们又尝试了对它进行集成,即使用多棵树决策,然后对于分类问题投票得出最终结果,而对于回归问题则计算平均结果。下面是几条是本篇要讲的主要内容。 Pruning (decision trees) What is Random forest algorithm? Why Random Forest algorithm? How Random Forest algorithm works? Advantages of Random Forest algorithm. Random Forest algorithm real life example.  本文主要参考一下几篇文章,有能力的读者可自行前往阅读原文:   1. Wikipedia上的 Pruning (decision trees) 和 Random Froest algorithm 。   2. Dataaspirant上的《 HOW

机器学习算法中GBDT和XGBOOST的区别有哪些?

谁都会走 提交于 2020-04-28 02:56:37
转自: https://www.zhihu.com/question/41354392 作者:wepon 链接:https://www.zhihu.com/question/41354392/answer/98658997 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 最近赞忽然多了起来,我猜是校招季来了吧。但如果面试官问你这个问题,我建议不要按我的回答来,背答案不如自己理解透了,况且我这是十分得五分的答案。最初的GBDT发展到现在的XGBoost,改进是一点一滴来的,是一篇篇论文的积累,很多方法并非XGBoost第一次提出,当然也不是说XGBoost没改进,可以说XGBoost把算法和系统实现都做得淋漓尽致。所以如果不是为了速成,不是为了校招,建议把经典的论文拿出来读一读,相信对算法的理解能更进一层。 最近实习刚好在组内分享了GBDT,所以有了这番感悟,看了更多资料,发现自己理解还是有偏差,附上我做的ppt,若再有偏差,欢迎跟我邮件交流: http:// wepon.me/files/gbdt.pdf 以下原答案: ----------------------------------- xgboost相比传统gbdt有何不同?xgboost为什么快?xgboost如何支持并行? 看了陈天奇大神的文章和slides,略抒己见,没有面面俱到

3. 集成学习(Ensemble Learning)随机森林(Random Forest)

偶尔善良 提交于 2020-04-27 05:43:53
1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random Forest) 4. 集成学习(Ensemble Learning)Adaboost 5. 集成学习(Ensemble Learning)GBDT 6. 集成学习(Ensemble Learning)算法比较 7. 集成学习(Ensemble Learning)Stacking 1. 前言 相信看了之前关于集成学习的介绍,大家对集成学习有了一定的了解。本文在给大家介绍下远近闻名的随机森林(RF)算法。 随机森林是集成学习中可以和梯度提升树GBDT分庭抗礼的算法,尤其是它可以很方便的并行训练,在如今大数据大样本的的时代很有诱惑力。 2. 随机森林原理 随机森林是Bagging算法的进化版,也就是说,它的基本思想仍然和Bagging,但是进行了独有的改进。 RF使用了CART决策树作为弱学习器,这让我们想到了梯度提示树GBDT。 在使用决策树的基础上,RF对决策树的建立做了改进,对于普通的决策树,我们会在节点上所有的n个样本特征中选择一个最优的特征来做决策树的左右子树划分, 但是RF通过随机选择节点上的一部分样本特征 ,这个数字小于n,假设为$n_{sub}$,然后在这些随机选择的$n_

5. 集成学习(Ensemble Learning)GBDT

南楼画角 提交于 2020-04-27 05:40:26
1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random Forest) 4. 集成学习(Ensemble Learning)Adaboost 5. 集成学习(Ensemble Learning)GBDT 6. 集成学习(Ensemble Learning)算法比较 7. 集成学习(Ensemble Learning)Stacking 1. 前言 如果读了我之前的几篇集成学习的博文,相信读者们已经都对集成学习大部分知识很有了详细的学习。今天我们再来一个提升,就是我们的集大成者GBDT。GBDT在我们的Kaggle的比赛中基本获得了霸主地位,大部分的问题GBDT都能获得异常好的成绩。 2. GBDT原理 GBDT的中文名叫梯度提升树,GBDT也是集成学习Boosting家族的成员,但是却和传统的Adaboost有很大的不同。回顾下Adaboost,我们是利用前一轮迭代弱学习器的误差率来更新训练集的权重,这样一轮轮的迭代下去。GBDT也是迭代,使用了前向分布算法,但是弱学习器限定了只能使用CART回归树模型,同时迭代思路和Adaboost也有所不同。 在GBDT的迭代中,假设我们前一轮迭代得到的强学习器是$f_{t-1}(x)$, 损失函数是

4. 集成学习(Ensemble Learning)Adaboost

百般思念 提交于 2020-04-27 05:37:25
1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random Forest) 4. 集成学习(Ensemble Learning)Adaboost 5. 集成学习(Ensemble Learning)GBDT 6. 集成学习(Ensemble Learning)算法比较 7. 集成学习(Ensemble Learning)Stacking 1. 前言 前面我们已经详细的介绍了什么是集成学习,集成学习的种类有哪些,并且也介绍了集成学习里面相对比较简单的Bagging。今天我们开始涉及到集成学习里面比较难理解的Boosting中的Adaboost。 2. Boosting原理 Boosting算法的工作机制: 首先从训练集用初始权重训练出一个弱学习器1. 根据学习器1的学习误差率来更新训练样本的权重,使得之前弱学习器1学习 误差率高的训练样本点的权重变高 ,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。 然后基于调整权重后的训练集来训练弱学习器2。 如此重复进行,直到弱学习器数达到事先指定的数目$T$。 最终将这$T$个弱学习器通过集合策略进行整合,得到最终的强学习器。 这里有几个相关概念: 学习误差率$e$ 学习器权重$\alpha$

随机森林RF、XGBoost、GBDT和LightGBM的原理和区别

╄→尐↘猪︶ㄣ 提交于 2020-04-27 04:28:43
[TOC] 1、基本知识点介绍 RandomForest、XGBoost、GBDT和LightGBM都属于集成学习。 集成学习通过构建并结合多个分类器来完成学习任务,也称为多分类系统,集成学习的目的是通过结合多个机器学习分类器的预测结果来改善基本学习器的泛化能力和鲁棒性。 集成学习方法大致分为两类: 基本学习器之间存在强依赖关系、必须串行生成的序列化方法,即Boosting提升方法。 基本学习器之间不存在强依赖关系、可同时生成的并行化方法,即Bagging方法。 2、各个算法原理 2.1 随机森林 -- RandomForest RF原理 :RF是Bagging的扩展变体,它在以决策树为基础学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机特征选择,其流程大概分为四个步骤: 随机选择样本(放回抽样)。 随机选择特征属性。 构建决策树。 随机森林投票(平均)。 因此防止过拟合能力更强,降低方差。 Bagging,即套袋法,算法过程如下: 从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本,共进行k轮抽取,得到k个训练集。 每次使用一个训练集得到一个模型,k个训练集共得到k个模型。(模型可以根据具体问题具体选取,如决策树,SVM,感知机。) 对于分类问题:将上面得到的k个模型采用投票的方式得到分类结果; 对于回归问题

RF,GBDT,XGBoost,lightGBM的对比

女生的网名这么多〃 提交于 2020-04-27 04:20:46
转载地址:https://blog.csdn.net/u014248127/article/details/79015803 RF,GBDT,XGBoost,lightGBM都属于集成学习(Ensemble Learning),集成学习的目的是通过结合多个基学习器的预测结果来改善基本学习器的泛化能力和鲁棒性。 根据基本学习器的生成方式,目前的集成学习方法大致分为两大类:即基本学习器之间存在强依赖关系、必须串行生成的序列化方法,以及基本学习器间不存在强依赖关系、可同时生成的并行化方法;前者的代表就是Boosting,后者的代表是Bagging和“随机森林”(Random Forest)。 关于集成学习的介绍参考: 机器学习模型优化之模型融合 这篇文章主要对集成学习中重要的、使用广泛的方法进行对比:RF(随机森林),ET(极端随机树),GBDT(梯度提升决策树),XGBoost,lightGBM 一、RF(随机森林): 1,RF的原理: RF是Bagging算法的优化版本,改进一:基本学习器限定为决策树,改进二:除了bagging的在样本上加上扰动,同时在属性上也加上扰动,即是在决策树学习的过程中引入了随机属性选择,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。 2,RF的生成: 算法如下 输入为样本集D={(x