七、决策树算法和集成算法

一、决策树算法

Ⅰ,树模型

决策树:从根节点开始一步步走到叶子节点(决策)
所有的数据最终都会落到叶子节点,既可以做分类也可以做回归
对于分类:是由众数决定的,例如爷爷奶奶妈妈都是负数,狗蛋儿是正数
对于回归:主要是利用方差来进行计算的,例如按照年龄划分,不同年龄划分到一块,优劣主要看方差的大小数值进行判断。节点的值就是每个划分到一块的年龄的平均值。

举个例子:若要判断谁喜欢打王者农药,如何判断?
首先很容易明白,一般喜欢打农药都是青少年,所以先通过年龄划分,接着,男孩子多数喜欢,然后通过性别划分,最后找到狗蛋儿。这里的年龄和性别判决的先后顺序,能互换吗?不能!换了之后结果可能会大变。在这个案例中,这里的年龄为主要判定决策,其分类效果最强,性别是次要的判定决策。那么问题又来了,凭什么年龄是主要判定决策?凭啥?这就是树模型中主要解决的问题。
在这里插入图片描述

Ⅱ,树的组成

根节点:第一个选择点(age<15)
非叶子节点与分支:中间过程(is male?)
叶子节点:最终的决策结果(狗蛋儿、小红、爷爷奶奶妈妈)
学过数据结构的童鞋理解起来很容易,当然光看字面意思也比较容易,这里就不再过多赘述了。

Ⅲ,决策树的训练和测试

训练阶段:从给定的训练集构造出来一棵树(从跟节点开始选择特征,如何进行特征切分)
测试阶段:根据构造出来的树模型从上到下去走一遍就好了
一旦构造好了决策树,那么分类或者预测任务就很简单了,只需要走一遍就可以了,那么难点就在于如何构造出来一颗树,这就没那么容易了,需要考虑的问题还有很多的!

Ⅳ,如何切分特征,选择节点

根节点的选择该用哪个特征呢?接下来呢?如何切分呢?

我们的目标应该是根节点就像一个老大似的能更好的切分数据(分类的效果更好),根节点下面的节点自然就是二当家了。

通过一种衡量标准,来计算通过不同特征进行分支选择后的分类情况,找出来最好的那个当成根节点,以此类推。

Ⅴ,衡量标准:熵

熵是表示随机变量不确定性的度量。说白了,越混乱熵越大
公式:H(X)=- ∑ (pi * log pi), i=1,2, … , n,其中p为概率取值在0-1之间。为啥捏?主要是对数函数的功劳,对数函数,当取值趋向于1的时候,值趋向于0,公式中前面有负号,故不需要考虑对数的负号问题。也就是说,概率越趋于1,对应的熵越小,越稳定。
在分类任务中我们希望通过节点分支后数据类别的熵值小。熵越小越稳定,表示对象都是一类。

概率对熵值的影响:在这里插入图片描述
很明显,概率值越模糊,熵值越混乱。越趋于中间,越不好判断,熵值越高。

信息增益:表示特征X使得类Y的不确定性减少的程度。(分类后的专一性,希望分类后的结果是同类在一起)也就是说分类完之后,熵变小了。信息增益就是分类前后熵的变化值。

Ⅵ,决策树构造实例

这里有狗蛋儿14天的打王者农药情况,看看是什么元素影响狗蛋儿打游戏。如何构建决策树?
在这里插入图片描述

①选哪个因素当根节点?

在这里插入图片描述

②初始熵值

14天内,有9天打农药,5天不打农药。根据上述的熵的计算公式可得:在这里插入图片描述
初始的熵为0.940。

③outlook

开始对四个因素进行逐一分析,先从outlook开始:
在这里插入图片描述

Outlook = sunny时,熵值为0.971。- ((2/5 * log 2/5) + (3/5 * log 3/5))
Outlook = overcast时,熵值为0。
Outlook = rainy时,熵值为0.971。- ( (3/5 * log 3/5) + (2/5 * log 2/5))

根据数据统计,outlook取值分别为sunny,overcast,rainy的概率分别为:5/14, 4/14, 5/14
由于sunny、overcast、rainy出现的天数不一样,故需要在加权求和一下:5/14 * 0.971 + 4/14 * 0 + 5/14 * 0.971 = 0.693
系统的熵值从原始的0.940下降到了0.693,增益为0.247

④temperature

同样的道理可得:gain(temperature)=0.029

⑤humidity

同样的道理可得:gain(humidity)=0.152

⑥windy

同样的道理可得:gain(windy)=0.048

选择最大的那个Outlook ,相当于是遍历了一遍特征,找出来了大当家,然后再其余的中继续通过信息增益找二当家!

Ⅶ,决策树版本

ID3:信息增益
C4.5:信息增益率(解决ID3问题,考虑自身熵)
CART:使用GINI系数来当做衡量标准
GINI系数:在这里插入图片描述(和熵的衡量标准类似,计算方式不相同)

Ⅷ,连续值的解决

贪婪算法:例如 60 70 80 90 110 220 300 400,分别依次划分
60、70 80 90 110 220 300 400
60 70、80 90 110 220 300 400
60 70 80、90 110 220 300 400
60 70 80 90、110 220 300 400
60 70 80 90 110、 220 300 400
60 70 80 90 110 220、300 400
60 70 80 90 110 220 300、400
然后依次去计算信息增益,挑选大当家的。实际上就是离散化的过程。

Ⅸ,剪枝策略

决策树过拟合风险很大,理论上可以完全分得开数据,如果树足够庞大,每个叶子节点就成为了一个数据,这样就出现了过拟合现象了。

①预剪枝

边建立决策树边进行剪枝的操作(更实用)
限制深度、叶子节点个数、叶子节点样本数、信息增益量等

②后剪枝

当建立完决策树后来进行剪枝操作
建立完成决策树之后开始后剪枝计算某个节点是否可以去掉,若去掉可以明显减少熵值,那就剪掉。
通过一定的衡量标准在这里插入图片描述叶子节点越多,损失越大
在这里插入图片描述

二、集成算法

1,Bagging:训练多个分类器取平均在这里插入图片描述

2,Boosting:从弱学习器开始加强,通过加权来进行训练在这里插入图片描述加入一棵树,要比原来强

3,Stacking:聚合多个分类或回归模型(可以分阶段来做)

Ⅰ,Ensemble learning

目的:让机器学习效果更好,单个不行,群殴走起

Ⅱ,Bagging模型

全称: bootstrap aggregation(说白了就是并行训练一堆分类器)
最典型的代表就是随机森林
随机:数据采样随机,特征选择随机
森林:很多个决策树并行放在一起
在这里插入图片描述

①随机森林

构造树模型:在这里插入图片描述
由于二重随机性,使得每个树基本上都不会一样,最终的结果也会不一样

树模型:
在这里插入图片描述
在这里插入图片描述

之所以要进行随机,是要保证泛化能力,如果树都一样,那就没意义了!

②随机森林优势

它能够处理很高维度(feature很多)的数据,并且不用做特征选择
在训练完后,它能够给出哪些feature比较重要
容易做成并行化方法,速度比较快
可以进行可视化展示,便于分析
在这里插入图片描述

③KNN模型

在这里插入图片描述
在这里插入图片描述
KNN就不太适合,因为很难去随机让泛化能力变强!

树模型:
在这里插入图片描述
理论上越多的树效果会越好,但实际上基本超过一定数量就差不多上下浮动了

Ⅲ,Boosting模型

典型代表:AdaBoost, Xgboost
Adaboost会根据前一次的分类效果调整数据权重(如果某一个数据在这次分错了,那么在下一次我就会给它更大的权重)
最终的结果:每个分类器根据自身的准确性来确定各自的权重,再合体

①Adaboost工作流程

每一次切一刀
最终合在一起
弱分类器这就升级了
在这里插入图片描述

Ⅳ,Stacking模型

堆叠:很暴力,拿来一堆直接上(各种分类器都来了)
可以堆叠各种各样的分类器(KNN,SVM,RF等等)
分阶段:第一阶段得出各自结果,第二阶段再用前一阶段结果训练
为了刷结果,不择手段!
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
堆叠在一起确实能使得准确率提升,但是速度是个问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/377893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode 538. 把二叉搜索树转换为累加树 思考分析

题目 给出二叉 搜索 树的根节点&#xff0c;该树的节点值各不相同&#xff0c;请你将其转换为累加树&#xff08;Greater Sum Tree&#xff09;&#xff0c;使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。 提醒一下&#xff0c;二叉搜索树满足下列约束条件&…

SQL中GROUP BY语句与HAVING语句的使用

最近在学习SQL Server相关知识&#xff0c;一直不知道怎么使用GROUP BY语句&#xff0c;经过研究和练习&#xff0c;终于明白如何使用了&#xff0c;在此记录一下同时添加了一个自己举的小例子&#xff0c;通过写这篇文章来加深下自己学习的效果&#xff0c;还能和大家分享下&a…

八、决策树算法实验可视化展示

一、树模型的可视化展示 官网下载安装包 右击管理员身份运行&#xff0c;直接下一步即可。 配置环境变量&#xff1a; 将安装好的可视化软件的bin文件夹路径添加到系统环境变量Path下即可 打开cmd&#xff0c;输入dot -version&#xff0c;出现相关信息即安装成功 二、决策…

机器学习笔记:PCA的简单理解以及应用建议

用notability做的笔记&#xff0c;比较随意&#xff0c;对于第五点的PCA错误使用需要特别强调。 目录1、PCA与线性回归2、PCA主成分数量选择3、压缩重现4、PCA应用建议5、PCA的错误使用1、PCA与线性回归 2、PCA主成分数量选择 3、压缩重现 4、PCA应用建议 5、PCA的错误使用

一、信用卡卡号识别

一、思路分析 大体思路&#xff1a;首先拿到一张银行卡&#xff0c;我们得有银行卡号数字的0-9样式的模板&#xff0c;然后再通过不同数字的轮廓的外接矩形来进行匹配&#xff0c;最终识别出银行卡号所对应的数字。 银行卡数字模板&#xff1a; 银行卡信息&#xff1a; 拿到…

bootstrap网格系统_如何使用Bootstrap网格系统?

bootstrap网格系统In the last article, we learned how to create a simple page of Bootstrap? Now, we will learn what is "Grid System" in Bootstrap and how we can use or implement it in our bootstrap page? As you know bootstrap is a mobile-friendl…

回溯法初步

本文为参考公众号所做的笔记。 代码随想录原文 回溯法本质是穷举&#xff0c;穷举所有可能&#xff0c;然后选出我们想要的答案&#xff0c;所以它并不是一个高效的算法。但是由于有些问题本身能用暴力搜出来就不错了&#xff0c;所以回溯法也有很多的应用。 回溯法解决的问题…

二、文档扫描OCR

一、思路分析 首先&#xff0c;拿到一张文档&#xff0c;我们需要对文档进行预处理操作&#xff0c;再进行轮廓检测&#xff0c;因为就算拿到文档轮廓&#xff0c;但是这些轮廓也有可能是歪歪扭扭的&#xff0c;这时候需要通过一系列的透视变换操作&#xff0c;将文档摆正。通…

leetcode 77. 组合 思考分析

目录1、题目2、回溯法思路3、参考其他思路&#xff0c;更深入了解这个问题4、剪枝优化可能需要回顾到的知识文章&#xff1a;1、常用算法总结(穷举法、贪心算法、递归与分治算法、回溯算法、数值概率算法)2、回溯法初步删除vector容器中的对象元素的三种方法:pop_back, erase与…

三、全景拼接

一、项目所涉及到的一些知识点 Ⅰ&#xff0c;BF(Brute-Force)暴力匹配&#xff1a;把两张图像的特征点全部给算出来&#xff0c;然后使用归一化的欧氏距离比较这两张图像上特征点之间的大小关系&#xff0c;越小越相似。 SIFT算法 import cv2 import numpy as np import ma…

leetcode 216. 组合总和 III 思考分析

可能需要回顾的文章; leetcode 77. 组合 思考分析 1、题目 找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数&#xff0c;并且每种组合中不存在重复的数字。 说明&#xff1a; 所有数字都是正整数。 解集不能包含重复的组合。 2、递归 这一题和之前…

约束执行区域(CER)

受约束的执行区域 (CER) 是创作可靠托管代码的机制的一部分。CER 定义一个区域&#xff0c;在该区域中公共语言运行库 (CLR) 会受到约束&#xff0c;不能引发可使区域中的代码无法完全执行的带外异常。在该区域中&#xff0c;用户代码受到约束&#xff0c;不能执行会导致引发带…

四、模拟英语四六级答题卡识别阅卷评分

一、思路分析 首先拿到答题卡照片的时候&#xff0c;需要对照片进行一系列预处理操作&#xff0c;通过透视变换将图像摆正方便后续的操作。每一道题五个选项&#xff0c;有五道题&#xff0c;通过字典存放准确答案。没有依次对答题卡进行轮廓检测&#xff0c;这里采用的是正方…

leetcode 17. 电话号码的字母组合 思考分析

题目 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 思考与递归程序 解空间树的宽度是输入数字对应的字符的个数&#xff0c;深度是输入的数字的个数…

BHMS的完整形式是什么?

BHMS&#xff1a;顺势疗法医学和外科学士 (BHMS: Bachelor of Homeopathic Medicine and Surgery) BHMS is an abbreviation of Bachelor of Homeopathic Medicine and Surgery. It is a medical degree program for under graduation in Homeopathy; an alternative move towa…

WordPress Event Easy Calendar插件多个跨站请求伪造漏洞

漏洞名称&#xff1a;WordPress Event Easy Calendar插件多个跨站请求伪造漏洞CNNVD编号&#xff1a;CNNVD-201309-083发布时间&#xff1a;2013-09-11更新时间&#xff1a;2013-09-11危害等级&#xff1a; 漏洞类型&#xff1a;跨站请求伪造威胁类型&#xff1a;远程CVE编号&…

XML转txt格式脚本

一、东北大学老师收集的钢材缺陷数据集是XML格式的&#xff0c;但是YOLOv5只允许使用txt文件标签 例如其中一种缺陷图片所对应的标签&#xff1a;crazing_1.xml <annotation><folder>cr</folder><filename>crazing_1.jpg</filename><source&…

python程序生成exe_使用Python程序生成QR代码的Python程序

python程序生成exeQR code is a short form of the quick response code. It is a type of matrix barcode that contains some information like some specific link, important message, email-id, etc. In Python, the qrcode module is used to generate the QR code of so…

leetcode 242. 有效的字母异位词 思考分析

题目 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 我们先考虑低阶版本&#xff0c;认为字符只有26种可能&#xff0c;然后将a ~ z的字符映射到数组的索引0 ~ 25&#xff0c;数组中存放的则是该索引出现的频次。 记录下s的频次和t的频次…

js \n直接显示字符串_显示N个字符的最短时间

js \n直接显示字符串Problem statement: 问题陈述&#xff1a; You need to display N similar characters on a screen. You are allowed to do three types of operation each time. 您需要在屏幕上显示N个相似的字符。 每次允许您执行三种类型的操作。 You can insert a c…