Forest

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$

7. 集成学习(Ensemble Learning)Stacking

南楼画角 提交于 2020-04-27 05:35:12
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. 前言 到现在为止我们还剩一种集成学习的算法还没有涉及到,那就是Stacking。Stacking是一个与Bagging和Boosting都不一样的算法。它的主要突破点在如何集成之前的所有算法的结果,简单的说就是在弱学习器的基础上再套一个算法。 2. Stacking原理 Stacking是在弱学习器的基础上再套一个算法,用机器学习算法自动去结合之前的弱学习器。 Stacking方法中,我们把个体学习器叫做初级学习器,用于结合的学习器叫做次级学习器,次级学习器用于训练的数据叫做次级训练集。 次级训练集是在训练集上用初级学习器得到的。 如下图所示: 数据集为$D$,样本数量为$m$,分为$D_{train}$和$D_{test}$。 Stacking的初级学习器有$n$种。 对每一个初级学习器进行以下处理。

机器学习(八)—GBDT 与 XGBOOST

帅比萌擦擦* 提交于 2020-04-27 02:42:57
  RF、GBDT和XGBoost都属于集成学习(Ensemble Learning),集成学习的 目的 是通过结合多个基学习器的预测结果来改善单个学习器的泛化能力和鲁棒性。   根据个体学习器的生成方式,目前的集成学习方法大致分为两大类:即个体学习器之间存在强依赖关系、必须串行生成的序列化方法,以及个体学习器间不存在强依赖关系、可同时生成的并行化方法;前者的代表就是Boosting,后者的代表是Bagging和“随机森林”(Random Forest)。 1、 GBDT和XGBoost区别    XGBOOST相比于GBDT有何不同?XGBOOST为什么快?XGBOOST如何支持并行? 传统的GBDT以CART树作为基学习器,XGBoost还支持线性分类器,这个时候XGBoost相当于L1和L2正则化的逻辑斯蒂回归(分类)或者线性回归(回归); 传统的GBDT在残差梯度方向拟合只用到一阶导数信息,XGBoost则对代价函数进行了二阶泰勒展开,得到 一阶和二阶导数 ,xgboost工具支持 自定义代价函数 ,只要函数可一阶和二阶求导; XGBoost在代价函数中 加入了正则项 ,用于控制模型的复杂度。从权衡方差偏差来看,它 降低了模型的方差 ,使学习出来的模型更加简单,放置过拟合,这也是XGBoost优于传统GBDT的一个特性;正则项里包含了树的叶子节点个数

文本情感分析(二):基于word2vec、glove和fasttext词向量的文本表示

泪湿孤枕 提交于 2020-04-22 03:54:13
上一篇博客用词袋模型,包括词频矩阵、Tf-Idf矩阵、LSA和n-gram构造文本特征,做了Kaggle上的电影评论情感分类题。 这篇博客还是关于文本特征工程的,用词嵌入的方法来构造文本特征,也就是用word2vec、glove和fasttext词向量进行文本表示,训练随机森林分类器。 一、训练word2vec和fasttext词向量 Kaggle情感分析题给出了三个数据集,一个是带标签的训练集,共25000条评论,一个是测试集,无标签的,用来做预测并提交结果,这两个数据集是上一篇文章里我们用过的。 此外还有一个无标签的数据集,有50000条评论,不用太可惜了。我们可以想到,用无标签的数据可以训练word2vec词向量,进行词嵌入。与词袋模型相比,word2vec词向量能解决文本表示维度过高的问题,并且把单词之间的位置信息考虑进去了。或许,用word2vec词向量进行文本表示,能取得更好的预测结果。 另外,我们也可以训练fasttext词向量。fasttext这个模型就是为了文本分类而造出来的,词向量是其副产品,它的结构和word2vec的CBOW模型的结构类似,但是输入是整篇文本而不是上下文信息,而且用字符级别的n-gram来得到单词的词向量表示,捕捉有相同后缀的词的语义关联。 gensim中集成了训练word2vec词向量和fasttext词向量的包,用法非常类似

[数据结构与算法] 002—树与二叉树(Python)

假装没事ソ 提交于 2020-04-18 03:10:59
概念 树 树是一类重要的非线性数据结构,是以分支关系定义的层次结构 定义: 树(tree)是n(n>0)个结点的有限集T,其中: 有且仅有一个特定的结点,称为树的根(root) 当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,……Tm,其中每一个集合本身又是一棵树,称为根的子树(subtree) 特点: 树中至少有一个结点——根 树中各子树是互不相交的集合 基本术语 结点(node)——表示树中的元素,包括数据项及若干指向其子树的分支 结点的度(degree)——结点拥有的子树数 叶子(leaf)——度为0的结点 孩子(child)——结点子树的根称为该结点的孩子 双亲(parents)——孩子结点的上层结点叫该结点的~ 兄弟(sibling)——同一双亲的孩子 树的度——一棵树中最大的结点度数 结点的层次(level)——从根结点算起,根为第一层,它的孩子为第二层…… 深度(depth)——树中结点的最大层次数 森林(forest)——m(m0)棵互不相交的树的集合 二叉树 二叉树是有限个元素的集合,该集合或者为空、或者有一个称为根节点(root)的元素及两个互不相交的、分别被称为左子树和右子树的二叉树组成。 二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。 二叉树的第i层至多有2^{i-1}个结点

currentVersion

北战南征 提交于 2020-04-12 12:06:59
这是无线通信 发展中的一些精选 事件(摘自《无线历史》,Tapan Sarkar等,Wiley,2006年)。 1807 年–法国数学家让·巴蒂斯特·约瑟夫·傅立叶(JourBaptiste Joseph Fourier)发现了傅立叶定理。 1820 年–丹麦物理学家汉斯·克里斯汀·奥尔斯特(HansChristian Orsted)发现了电流引起的电磁场。法国物理学家多米尼克·弗朗索瓦·让·阿拉格(DominiqueFrancois Jean Arago)指出,当电流流过时,电线变成了磁铁。法国数学家和物理学家安德烈·玛丽·安培(Andre-Marie Ampere)发现了电动力学,并提出了电磁电报。 1831 年–英国科学家迈克尔·法拉第(MichaelFaraday)发现了电磁感应并预测了电磁波的存在。 1834 年-美国发明家塞缪尔·芬利·布雷斯·莫尔斯(Samuel Finley Breese Morse)发明了以他命名的电报代码。 1847 年–德国生理学家和物理学家赫尔曼·路德维希·费迪南德·冯·亥姆霍兹建议进行电振荡。 1853 年–威廉·汤姆森(Lord Kelvin)计算了振荡电路的容量,自感和电阻的周期,阻尼和强度。 1857 年– Feddersen通过实验验证了1847年Helmholtz建议的调谐电路的谐振频率。 1864 年

scikit_learn分类器详解

╄→гoц情女王★ 提交于 2020-04-08 18:01:13
1 分类 分类是将事物按特性进行分类,例如将手写数字图片分类为对应的数字。 1.1 MINIST数字图片集分类 MINST就是一个70000张规格较小的手写数字图片,如何将他们分类为对应的数字?MINIST这个数据集是由矩阵数组结构,70000个矩阵,每个矩阵28*28=784,每个点代表一个像素值,取值范围在0-256之间。 (1 )获取数据集 Scikit-Learn 提供了许多辅助函数,以便于下载流行的数据集。 from sklearn.datasets import fetch_mldata >>> mnist = fetch_mldata('MNIST original')#获取数字数据集 >>> mnist {'COL_NAMES': ['label', 'data'], 'DESCR': 'mldata.org dataset: mnist-original', 'data': array([[0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0], ..., [0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0]], dtype=uint8), 'target': array([ 0.,

若干Halcon官方自带的案例学习

扶醉桌前 提交于 2020-04-06 17:31:31
2D物体识别 C:\Users\Public\Documents\MVTec\HALCON-19.11-Progress\examples\hdevelop\Applications\Object-Recognition-2D forest.hdev 识别森林中的树,这个例子是主要讲解了如何通过无人机拍摄的图像识别其中的对象。smooth_image 、watersheds 等算子被应用。 dem_trees.hdev roads.hdev 提取道路 texture.hdev 查找纹理区域(树木和灌木丛) 点胶质量检测 apply_bead_inspection_model.hdev *此示例显示了如何使用磁珠检查来验证胶珠。 珠检查可用于检测以下错误: *-缺少粘合剂的线段 *-粘合剂太多或太少的段 *-胶粘剂离预定位置太远的部分 * apply_bead_inspection_model要求检查图像 *已与参考轮廓对齐。 在这个例子中对齐基于平面可变形匹配。 https://blog.csdn.net/cashmood/article/details/104965126 检查瓶口缺陷 inspect_bottle_mouth.hdev 圆环类缺陷检测的一种方法(极坐标变换法) https://blog.csdn.net/cashmood/article/details

「网易官方」极客战记(codecombat)攻略-游戏开发1-行为驱动开发behavior-driven-development

落花浮王杯 提交于 2020-03-06 18:24:57
你可以使用行为属性来改变单位的 AI。 简介 单位的行为可以通过 behavior 属性来设置。 skeleton3.behavior = "Scampers" 这句代码会让 skeleton3 变量中存储的骷髅怪随机移动。 skeleton3.behavior = "AttacksNearest" 则是攻击最近的敌人。 skeleton3.behavior = "Defends" 则只在敌人接近时发起攻击。 skeleton3.behavior = "RunsAway" 会让单位从玩家周围逃开。 记得选取正确的变量,如 skeleton3 、 ogre2 、 ogre3 、 archer1 ! 默认代码 # 使用behavior属性为单位指定行为。 skeleton1 = game.spawnXY("skeleton", 60, 48) skeleton2 = game.spawnXY("skeleton", 60, 30) skeleton3 = game.spawnXY("skeleton", 60, 12) skeleton1.behavior = "Scampers" skeleton2.behavior = "Scampers" # 将"Scampers"指定给 skeleton3.behavior ogre1 = game.spawnXY("ogre", 70, 50

「网易官方」极客战记(codecombat)攻略-游戏开发1-森林入侵forest-incursion

穿精又带淫゛_ 提交于 2020-03-05 21:04:23
(点击图片进入关卡) Okar 慢而弱。让他变快变强! 简介 调用 spawnPlayerXY() 会返回一个可用于程序修改的英雄对象。 你可以修改英雄的属性,例如最大速度 maxSpeed 、最大生命值 maxHealth 、生命值 health 、攻击伤害值attackDamage ! player = game.spawnPlayerXY("goliath", 20,20) player.maxSpeed = 12 player.maxHealth = 300 player.health = 300 player.attackDamage = 9000 默认代码 # Okar需要干掉这些讨人厌的矮人! # 不幸的是,他速度很慢,而且攻击伤害很低。 # 不过,作为游戏开发者,你能够完全控制游戏世界! # 将Okar的属性提高,方便他屠戮食人魔! # 您可以在DOC面板上找到单位的默认值。 game.addDefeatGoal() game.addSurviveGoal() player = game.spawnPlayerXY("goliath", 12, 10) # 使用spawnPlayerXY(type, x, y)来生成一个英雄。 player.maxSpeed = 25 # 增加英雄的maxHealth,让他能够更持久地作战。 # 增加英雄的attackDamage