| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 决策树与随机森林 -> 正文阅读 |
|
[数据结构与算法]决策树与随机森林 |
目录 Bagging和Boosting的概念与区别 - 多一点 - 博客园 决策树的简介决策树模型是一种树形结构,由一系列节点组成,每一个节点代表一个特征和相应的决策规则。是基于特征对实例进行分类或回归的过程,即根据某个特征把数据分划分到若干个子区域(子树),再对子区域递归划分,直到满足某个条件则停止划分并作为叶子节点,不满足条件则继续递归划分。 ?决策树学习本质是从训练数据集中归纳出一组分类规则;决策树学习的损失函数通常是正则化的极大似然函数,学习策略是由训练数据集估计条件概率模型。 决策树学习的算法通常是一个递归地选择最优特征,并根据该特征进行分割。这一过程对应着决策树的构建,也对应着特征空间的划分。使得划分之后的各个子集能够被基本分类,那么构建叶节点;否则继续递归划分。 决策树可能发生过拟合,因此需要剪枝,从下而上进行,减去过于细分的结点,使其会退到父结点。
上面图中我们为啥要用“是否去健身房”做根节点呢?可不可以用“是否有好看的电影”做根节点呢?这样做有什么原因吗?要回答这些问题,我们首先要理解决策树的思想是什么。决策树实际上就是寻找最纯净的划分方法,这个“最纯净”在数学上叫纯度,纯度通俗点理解就是决策结果要分得足够开(y=1的和y=0的混到一起就会不纯),尽可能让类别一样的数据在树的同一边,当树的叶子节点的数据都是同一类的时候,则停止分类。 ? 其中:??为随机变量??取值为??的概率,??代表种类,每一个类别中,??代表某个种类的概率乘以当前种类的概率取,然后将各个类别计算结果累加。 ? ?信息增益?? 如何构建决策树根节点以及树节点是从最重要到次重要依次排序的,ID3算法用的是信息增益,C4.5算法用信息增益率;CART算法使用基尼系数。决策树方法是会把每个特征都试一遍,然后选取那个能够使分类分的最好的特征,也就是说将A属性作为父节点,产生的纯度增益(GainA)要大于B属性作为父节点,则A作为优先选取的属性。 三种方法对比: ID3算法:信息增益越大,则选取该分裂规则,多分叉树。信息增益可以理解为,有了x以后对于标签p的不确定性的减少,减少的越多越好,即信息增益越大越好。倾向于选择水平数量较多的变量,可能导致训练得到一个庞大且深度浅的树;另外输入变量必须是分类变量(连续变量必须离散化);最后无法处理空值。 C4.5选择了信息增益率替代信息增益作为分裂准则。此方法避免了ID3算法中的归纳偏置问题,因为ID3算法会偏向于选择类别较多的属性(形成分支较多会导致信息增益大)。多分叉树。连续属性的分裂只能二分裂,离散属性的分裂可以多分裂,比较分裂前后信息增益率,选取信息增益率最大的。 CART以基尼系数替代熵;最小化不纯度而不是最大化信息增益。既可以用于分类也可以用于回归。CART用Gini系数最小化准则来进行特征选择,生成二叉树。 ? 先构建决策树(训练阶段),再使用决策树(分类阶段) 如何避免过拟合如果决策树考虑了所有的训练数据集,得到的决策树将会过于庞大。虽然这个决策树对于训练数据集的拟合概率为100%,但是由于过分考虑所有的数据,将数据切得太碎太碎了,这样就会使得决策树学习到一些噪音点、错误点,出现过拟合的现象。 两种方法可以避免过拟合:剪枝和随机森林。 剪枝剪枝分为预剪枝和后剪枝。
随机森林随机森林就是通过集成学习的思想将多棵决策树集成的一种算法,它的基本单元是决策树,本质是一种集成学习(Ensemble Learning)方法。 从直观角度来解释,每棵决策树都是一个分类器,那么对于一个输入样本,N棵树会有N个分类结果。而随机森林集成了所有的分类投票结果,将投票次数最多的类别指定为最终的输出,这就是一种最简单的 Bagging?(下面介绍)思想。 随机森林属于集成学习(ensemble learning)中的bagging算法,在集成算法中主要分为bagging算法与boosting算法, 随机森林体现了两方面的随机:
随机森林中的每棵树是怎么生成的呢?
从这里我们可以知道:每棵树的训练集都是不同的,而且里面包含重复的训练样本(理解这点很重要)。 问题1:为什么要随机抽样训练集? 如果不进行随机抽样,每棵树的训练集都一样,那么最终训练出的树分类结果也是完全一样的,这样的话完全没有bagging的必要; 问题2:为什么要有放回地抽样? 如果不是有放回的抽样,那么每棵树的训练样本都是不同的,都是没有交集的,这样每棵树都是"有偏的",都是绝对"片面的"(当然这样说可能不对),也就是说每棵树训练出来都是有很大的差异的;而随机森林最后分类取决于多棵树(弱分类器)的投票表决,这种表决应该是"求同",因此使用完全不同的训练集来训练每棵树这样对最终分类结果是没有帮助的,这样无异于是"盲人摸象"。 2. 如果每个样本的特征维度为M,指定一个常数m<<M,随机地从M个特征中选取m个特征子集,每次树进行分裂时,从这m个特征中选择最优的; 3. 每棵树都尽最大程度的生长,并且没有剪枝过程。 一开始我们提到的随机森林中的“随机”就是指的这里的两个随机性。两个随机性的引入对随机森林的分类性能至关重要。由于它们的引入,使得随机森林不容易陷入过拟合,并且具有很好得抗噪能力(比如:对缺省值不敏感)。 随机森林分类效果(错误率)与两个因素有关:
减小特征选择个数m,树的相关性和分类能力也会相应的降低;增大m,两者也会随之增大。所以关键问题是如何选择最优的m(或者是范围),这也是随机森林唯一的一个参数。 Bagging算法(套袋发)
Boosting(提升法)
Bagging和Boosting 的主要区别
将决策树与以上框架组合成新的算法
特征选择
A.熵(entropy)与基尼(Gini)系数 熵:物体内部的混乱程度或不确定性,熵值越大,则物体内部的混乱程度越大;反之,熵值越低,物体内部纯净度越高。 由熵的公式可知,当物体内部某个类的概率 较小时,则 (负数)的绝对值就越大由此可知,当物体或集合内部的类别非常多时(即物体内部混乱程度很高),每个类别的概率就会很小,就会导致物体的熵值很高。 ? 决策树的生成目的:得到熵值降低速度最快的决策树 构造决策树的基本思想:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 8:29:46- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |