回归树

SIGAI机器学习第六集 决策树

我的未来我决定 提交于 2019-12-04 07:59:08
讲授决策树的基本概念,分类与回归树的原理,决策树的表示能力,决策树的训练算法,寻找最佳分裂的原理,叶子节点值的标记,属性缺失与替 代分裂,决策树的剪枝算法,决策树应用。 非常直观和易于理解的机器学习算法,最符合人的直观思维,因为生活中很多时候做决策就是用这种树状结构做决定的。 大纲: 基本概念 分类与回归树 训练算法 寻找最佳分裂 属性缺失与替代分裂 过拟合与剪枝 实验环节 实际应用 基本概念: ①树是一种分层的数据结构,家谱、书的目录就是一棵树的结构。 ②树是一个递归的结构,树的每个子节点,以它为根同样是一棵树,所以说树里边的很多算法是用递归来实现的。 有一种特殊的树叫二叉树,每个节点最多只有两个孩子节点,左子节点和右子节点,编程的时候很容易实现,树在编程实现的时候是用指针来实现的,非二叉树预留多少空间存储子节点的指针不好确定,所以编程的时候用的一般是二叉树。 非叶子节点叫做判定节点,叶子节点是决策结果。决策树可以用来做分类,也可以用来做回归。 比如医生看病可能也是用一棵决策树来判定的,这棵判定树的规则是他学习的时候和很多年经验的总结,它的特征向量就是一些体检的指标,如体温、白细胞数量、红细胞数量等等。 整个机器学习和模式识别里边特征分两种类型,一是类别型特征,是不能比较大小的,如是否有房产证,二是数值型特征,是可以比较大小的,如收入多少。 决策树整个判定过程是从根节点开始

【机器学习】决策树(下)――CART算法及剪枝处理

匿名 (未验证) 提交于 2019-12-03 00:40:02
原文地址https://blog.csdn.net/HerosOfEarth/article/details/52425952 前言 :上篇博文已经介绍了ID3、C4.5生成决策树的算法。由于上文使用的测试数据以及建立的模型都比较简单,所以其泛化能力很好。但是,当训练数据量很大的时候,建立的决策树模型往往非常复杂,树的深度很大。此时虽然对训练数据拟合得很好,但是其泛化能力即预测新数据的能力并不一定很好,也就是出现了过拟合现象。这个时候我们就需要对决策树进行剪枝处理以简化模型。另外,CART算法也可用于建立回归树。本文先承接上文介绍完整分类决策树,再简单介绍回归树。 四、CART算法 CART,即分类与回归树(classification and regression tree),也是一种应用很广泛的决策树学习方法。但是CART算法比较强大,既可用作分类树,也可以用作回归树。作为分类树时,其本质与ID3、C4.5并有多大区别,只是选择特征的依据不同而已。另外,CART算法建立的决策树一般是二叉树,即特征值只有yes or no的情况(个人认为并不是绝对的,只是看实际需要)。当CART用作回归树时,以最小平方误差作为划分样本的依据。 1.分类树 (1)基尼指数 分类树采用基尼指数选择最优特征 。假设有 K K 个类,样本点属于第 k k 类的概率为 p k pk

决策树

匿名 (未验证) 提交于 2019-12-02 23:42:01
一、随机森林RF与GBDT的区别 二者的共同点 ・ 都是由多棵树组成; ・ 最终的结果都由多棵树共同决定; ・ 生成样本集的时候都使用了boostrap; 二者的不同点 ・ 组成RF的可以是分类树也可以是回归树,但组成GBDT的只能是回归树; ・ RF可以并行,GBDT只能串行; ・ 对于输出结果,RF使用多数表决或简单平均,GBDT使用结果累加或加权平均RF对异常值不敏感,GBDT对异常值敏感(一个注重方差一个注重偏差) 方差和偏差的平衡技术 ・ RF注重减小模型方差来提高性能,GBDT通过减小模型偏差来提高性能RF不需要数据预处理,GBDT需要进行特征归一化(由于权重的问题)(待复查) 二、GBDT vs XGBOOST 二者的共同点 ・ XGBOOST作为GBDT应用层面的算法,基本构建在GB的思想上,在此就不讨论共同点了(太多了) ・ 但我们要知道一点:GBDT系算法在到XGBOOST为止,在生成决策树的时候是要求先对特征进行排序,再选出最显著的特征作为叶子结点进行分类的,这种特征选择方法为精确遍历,这一点在lightGRM上得到了改进。 二者的不同点(XGBOOST的改进) ・ 在优化上,GBDT只用了一阶泰勒展开,XGBOOST用了二阶泰勒展开・ ・ XGBOOST在损失函数中加入了正则项来控制过拟合:内含叶子结点个数、L2范式来代替剪枝 ・

机器学习实战笔记-9-树回归

人走茶凉 提交于 2019-11-29 00:20:59
CART(classification and regression trees)树回归 优点:可对 复杂 和 非线性 的数据建模;缺点:结果不易理解;适用于:数值型和标称型。 构建树函数createTree()的伪代码: 选择最好的划分方式(得到最佳划分的特征与阈值):用于回归树和模型树 如果该节点不能再分,将该节点存为叶节点 执行二元划分 在右子树调用createTree()函数 在左子树调用createTree()函数 选择最好的划分方式 伪代码:用于回归树和模型树 如果所有标签都一样,返回一个叶子节点 计算当前误差 对每个特征: 对每个特征值: 将数据集划分为两份 计算划分的误差 如果当前误差小于当前最小误差,将当前划分设置为最佳划分并更新最小误差 如果误差减小得不大((S-bestS)\<tolS),返回一个叶子节点(不进行划分) (预剪枝) 如果划分出的数据集很小(shape(mat0)[0]\<tolN),返回一个叶子节点(不进行划分)(预剪枝) 返回最佳划分的特征和阈值 回归树中 创建叶子节点 函数代码:回归树中叶子节点是常数值(一堆数据的y平均值) def regLeaf(dataset): return mean(dataset[:,-1]) 树剪枝(可以避免过拟合) 函数伪代码: python 基于已有的树划分测试数据: 如果存在任一子集是一棵树

传统推荐算法(五)LR+GBDT(1)剑指GBDT

大城市里の小女人 提交于 2019-11-28 05:55:27
文章目录 写在前面 1. GBM 1.1 从参数空间到函数空间: 1.2 从非参估计到参数估计 1.3 泰勒展开近似 2. GBM的基学习器 2.1 基学习器选择 2.2 CART回归树 3. GBDT之回归 4. GBDT之分类 4.1 二类逻辑回归和分类 4.2 多类逻辑回归和分类 5. 反思总结 5.1 样本权重调整 5.2 GBDT优缺点 6. GBDT资料推荐 参考 公众号 写在前面 学习GBDT的时候,被网上的几篇文章搞晕了,就去看了下GBDT的论文,整理了一些思路,结合参考中的一些内容,整理了这篇文章。本文将循序渐进,从GB,DT讲到GBDT,细致分析下GBDT的原理。本人才疏学浅,有些地方可能理解得不对,欢迎指出错误。学习过程中,薛大佬的这篇文章给了我很多启发:http://xtf615.com/paper/GBM.html。他本人也很热心地帮我解答疑问,在此特别感谢。 机器学习中的 Boosting 算法族有两大类,一类是 weight_boosting,其中以 adaboost 为主要代表,另一类是 gradient_boosting,其中以 gbdt 为主要代表[1]。GBDT是机器学习竞赛中常用的一种算法,据统计,Kaggle比赛中50%以上的冠军方案都是基于GBDT算法[2]。有人称之为机器学习TOP3算法。 1999年,Jerome Harold

《机器学习实战》9.3树回归之模型树和项目案例

梦想的初衷 提交于 2019-11-27 13:41:28
《机器学习实战》9.3树回归之模型树和项目案例 搜索微信公众号:‘AI-ming3526’或者’计算机视觉这件小事’ 获取更多人工智能、机器学习干货 csdn:https://blog.csdn.net/baidu_31657889/ github:https://github.com/aimi-cn/AILearners 本文出现的所有代码,均可在github上下载,不妨来个Star把谢谢~: Github代码地址 一、引言 这一节我们来介绍模型树以及进行一个简单的树回归的项目实战 二、模型树 2.1 模型树简介 回归树的叶节点是常数值,而模型树的叶节点是一个回归方程。 用树来对数据建模,除了把叶节点简单地设定为常数值之外,还有一种方法是把叶节点设定为分段线性函数,这里所谓的 分段线性(piecewise linear) 是指模型由多个线性片段组成。 我们看一下图中的数据,如果使用两条直线拟合是否比使用一组常数来建模好呢?答案显而易见。可以设计两条分别从 0.0-0.3、从 0.3-1.0 的直线,于是就可以得到两个线性模型。因为数据集里的一部分数据(0.0-0.3)以某个线性模型建模,而另一部分数据(0.3-1.0)则以另一个线性模型建模,因此我们说采用了所谓的分段线性模型。 决策树相比于其他机器学习算法的优势之一在于结果更易理解。很显然

《机器学习实战》9.2树回归之树剪枝(tree pruning)

情到浓时终转凉″ 提交于 2019-11-27 13:40:25
《机器学习实战》9.2树回归之树剪枝(tree pruning) 搜索微信公众号:‘AI-ming3526’或者’计算机视觉这件小事’ 获取更多人工智能、机器学习干货 csdn:https://blog.csdn.net/baidu_31657889/ github:https://github.com/aimi-cn/AILearners 本文出现的所有代码,均可在github上下载,不妨来个Star把谢谢~: Github代码地址 一、引言 本篇文章将会根据上节的回归树的构建过程是否得当来引入的剪枝(tree pruning)技术。 二、树剪枝 一棵树如果结点过多,表明该模型可能对数据进行了“过拟合”。 通过降低树的复杂度来避免过拟合的过程称为剪枝(pruning)。上小节我们也已经提到,设置tolS和tolN就是一种预剪枝操作。另一种形式的剪枝需要使用测试集和训练集,称作后剪枝(postpruning)。本节将分析后剪枝的有效性,但首先来看一下预剪枝的不足之处。 2.1 预剪枝 预剪枝有一定的局限性,比如我们现在使用一个新的数据集。 数据集下载地址: 数据集下载 用上节的代码绘制数据集看一下: 可以看到,对于这个数据集与我们使用的第一个数据集很相似,但是区别在于y的数量级差100倍,数据分布相似,因此构建出的树应该也是只有两个叶结点

各种树模型细节比较(分类树,回归树,随机森林,gbdt, xgboost)

烈酒焚心 提交于 2019-11-27 05:41:49
前言 树模型实在是个庞大的家族,里面有许多细节值得注意,怕自己遗忘,写一期总结方便以后查询。先介绍三种划分方式: 信息增益: 计算数据集D中的经验熵H(D): 计算特征A对数据集D的经验条件H(D/A): 计算休息增益差: 其中D为样本容量,pi代表当前节点D中i类样本比例。设有K个类(1,2,…,K),Ck为属于为K类样本的样本数。设特征A有j个不同的取值(a1,…,aj),根据A的取值将D划分为D1,…,Dj(代表样本数)。 信息增益率: 分裂信息计算公式: 信息增益率定义为: 选择最大增益率作为分裂特征 Gini系数: 在CART树中使用,这里CART先不展开后文会写。 从根节点开始,对节点计算现有特征的基尼指数。 对每一个特征,例如A,再对其每个可能的取值如a,根据样本点对A=a的结果划分为两个部分(这里假设A只有两个值,因为 CART是二叉树 ): 上面的式子表示的是不确定性的大小,越小表示数据纯度越高。 分类树 ID3: ID3算法的核心是在决策树各个节点上根据 信息增益 来选择进行划分的特征,然后递归地构建决策树。 具体方法: 从根节点开始,对节点计算所有可能的特征的信息增益,选择信息增益值最大的特征作为节点的划分特征; 由该特征的不同取值建立子节点; 再对子节点递归地调用以上方法,构建决策树; 到所有特征的信息增益都很小或者没有特征可以选择为止,得到最终的决策树。

决策树介绍

廉价感情. 提交于 2019-11-26 11:36:33
决策树(decision tree) 决策树: 是一种基本的分类和回归方法。它是基于实例特征对实例进行分类的过程,我们可以认为决策树就是很多if-then的规则集合。 优点:1) 训练生成的模型可读性强,我们可以很直观的看出生成模型的构成已经工作方式,因为模型就是由数据属性和类别构成一棵树。 2) 由于是一棵树,所以它的预测分类速度快,想想一棵树能有多大的深度。如果是一颗二叉树即使有N个数据,深度也只有logN。 原则: 根据损失函数最小化的原则建立决策树模型(其实大部分模型都是这个原则) 步骤:1) 特征选择(不同的算法,选择不一样,比如CART就是随机选择m个特征) 2) 决策树的生成(就是通过数据的属性进行不断的分裂,直到叶子节点为止) 现在目前主要的决策树算法: ID3,C4.5,CART,RandomForest ..... 信息熵: (有关信息熵的介绍在吴军的著作《数学之美》有着非常好的介绍,强烈介绍) 说到决策树算法,这个是不得不提的。因为在构建决策树的时候,节点选择的属性是依据信息熵来确定的,就是根据信息熵来确定选择哪个属性用于当前数据集的分类。 ”信息熵“是香农提出来的。我们知道信息是有用的,但是如何来定量描述这个信息量的大小呢。而“信息熵”就是为了解决这个问题而提出来的,用来量化信息的作用。 一条信息的信息量是和它的不确定性有着直接关系的