决策树简介与入门

决策树表示对象属性(比如贷款用户的年龄、是否有工作、是否有房产、信用评分等)和对象类别(是否批准其贷款申请)之间的一种映射。使用层层推理来实现最终的分类。

 根节点:包含样本的全集
 内部节点:对应特征属性测试
 叶节点:代表决策的结果

预测时,在树的内部节点处用某一属性值进行判断,根据判断结果决定进入哪个分支节点,直到到达叶节点处,得到分类结果。

这是一种基于 if-then-else 规则的有监督学习算法,决策树的这些规则通过训练得到,而不是人工制定的。

决策树是最简单的机器学习算法,它易于实现,可解释性强,完全符合人类的直观思维,有着广泛的应用。

在这里插入图片描述
决策树学习的三个步骤

一、特征选择

特征选择决定了使用哪些特征来做判断。在训练数据集中,每个样本的属性可能有很多个,不同属性的作用有大有小。因而特征选择的作用就是筛选出跟分类结果相关性较高的特征,也就是分类能力较强的特征。

在特征选择中通常使用的准则是:信息增益

二、决策树生成
选择好特征后,就从根节点出发,对节点计算所有特征的信息增益,选择信息增益最大的特征作为节点特征,根据该特征的不同取值建立子节点;对每个子节点使用相同的方式生成新的子节点,直到信息增益很小或者没有特征可以选择为止。

三、决策树剪枝
剪枝的主要目的是对抗过拟合(模型的泛化能力差),通过主动去掉部分分支来降低过拟合的风险。

三种典型的决策树算法:ID3、C4.5、CART

ID3:最早提出的决策树算法,利用信息增益来选择特征
C4.5:ID3的改进版,不是直接使用信息增益,而是引入“信息增益比”指标作为特征的选择依据
CART:可用于分类,也可用于回归问题。使用基尼系数取代了信息熵模型。

关于信息增益(Information Gain):

信息熵表示的是不确定性。非均匀分布时,不确定性最大,此时熵就最大。当选择某个特征,对数据集进行分类时,分类后的数据集的信息熵会比分类之前小,其差值表示为信息增益。信息增益可以衡量某个特征对分类结果的影响大小。

对于一个数据集,特征A作用之前的信息熵计算公式为:
Info(D)= - ∑_(i=1)^c▒P_i  〖log〗_2 (P_i)

式中,D为训练数据集;c 为类别数量;P_i 为类别 i 样本数量占所有样本的比例。对应数据集 D,选择特征 A 作为决策树判断节点时,在特征 A 作用后的信息熵为 InfoA (D) (特征 A 作用后的信息熵计算公式),计算如下:
在这里插入图片描述

式中,k 为样本 D 被分为 k 个子集。

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

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

相关文章

前端vue实现pdf文件的在线预览

3.前端vue实现pdf文件的在线预览 我是通过 <iframe> 标签就可以满足我工作的 pdf预览需求 如果<iframe> 无法满足需求 &#xff0c; 可以使用pdf.js这个插件&#xff0c;功能强大。 <iframe:src"url"type"application/x-google-chrome-pdf"…

中国科学院院士骆清铭: “看见”大脑

来源&#xff1a;瞭望 新闻周刊编辑&#xff1a;宋若一责任编辑&#xff1a;冀娴贤文&#xff1a;《瞭望》新闻周刊记者 扈永顺 ◇以工业化的方式大规模、标准化地产生数据并绘制脑图谱&#xff0c;将改变神经科学已有的研究方式◇“全脑介观神经联接图谱”大科学计划目前已凝…

Serializer字段和选项

字段 字段构造方式 BooleanField BooleanField() NullBooleanField NullBooleanField() CharField CharField(max_lengthNone, min_lengthNone, allow_blankFalse, trim_whitespaceTrue) EmailField EmailField(max_lengthNone, min_lengthNone, allow_blankFal…

聚类算法 K-Means 简介与入门

K-Means 算法是最简单的一种聚类算法&#xff0c;属于无监督学习算法。 聚类和分类最大的不同在于&#xff1a;分类的目标是事先已知的&#xff0c;而聚类则不一样&#xff0c;聚类事先不知道目标变量是什么&#xff0c;类别没有像分类那样被预先定义出来。 假设我们的样本是 …

聚焦五大领域:浙江大学发布《重大领域交叉前沿方向2021》报告

来源&#xff1a;浙江大学以智能化为特征的第四次工业革命已经全面开启&#xff0c;会聚技术的不断涌现&#xff0c;正引领各领域创新突破性跃迁。学科交叉是这场变革的核心驱动力&#xff0c;主要表现为信息、生命、物质三大学科板块间的深度融合&#xff0c;最终将推动人类生…

分类算法支持向量机(SVM) 简介与入门

在二维平面上&#xff0c;把两类数据分开需要一条直线。到了3微空间&#xff0c;要把两类数据分开&#xff0c;就需要一个平面。把上述分类机制扩展到基本情形&#xff0c;在高维空间里&#xff0c;把两类数据分开&#xff0c;则需要一个超平面。直线和平面是超平面在2维和3维空…

Java Socket NIO

服务端&#xff1a; public class NIOServer {private static final String HOST "localhost";private static final int PORT 10086;public static void main(String[] args) {ServerSocketChannel serverSocketChannel null;ServerSocket serverSocket null;Se…

主宰这个世界的10大算法

来源&#xff1a;算法与数学之美什么是算法&#xff1f;简而言之&#xff0c;任何定义明确的计算步骤都可称为算法&#xff0c;接受一个或一组值为输入&#xff0c;输出一个或一组值。(来源&#xff1a;homas H. Cormen, Chales E. Leiserson 《算法导论第3版》)可以这样理解&a…

关联规则分析 Apriori 算法 简介与入门

关联规则的几个概念&#xff1a; 关联规则是形如 X -> Y 的蕴含式&#xff0c;表示通过 X 可以推导出 Y&#xff0c;X称为关联规则的左部&#xff08;Left Hand Side&#xff0c;LHS&#xff09;&#xff0c;Y 称为关联规则的右部&#xff08;Right Hand Side&#xff0c;R…

OO第一单元总结__多项式求导问题

作业一、含幂函数的简单多项式的求导 &#xff08;1&#xff09;基于度量的程序结构分析 1. 统计信息图&#xff1a; 2. 结构信息图&#xff1a; 3. 复杂度分析 基本复杂度&#xff08;Essential Complexity (ev(G))、模块设计复杂度&#xff08;Module Design Complexity (iv(…

流式处理和批处理的区别

流式处理&#xff08;Stream Processing&#xff09; 是针对 批处理&#xff08;Batch Processing&#xff09;来讲的&#xff0c;即它们是两种截然不同的数据处理模式&#xff0c;具有不同的特点&#xff0c;适用于不同的应用场合。不能简单地认为其中一种数据处理模式优于另一…

Go语言中的`sync`包同步原语

通过sync包掌握Go语言的并发 并发是现代软件开发的基本方面&#xff0c;而Go&#xff08;也称为Golang&#xff09;为并发编程提供了一套强大的工具。在Go中用于管理并发的基本包之一是sync包。在本文中&#xff0c;我们将概述sync包&#xff0c;并深入探讨其最关键的同步原语…

linux 安装svn客户端

安装命令&#xff1a;yum install -y subversion 客户端使用命令&#xff1a; svn help 帮助命令 svn checkout --help 子帮助命令 转载于:https://www.cnblogs.com/wesky/p/10607649.html

AdaBoost 算法 入门

AdaBoost 是一种迭代算法&#xff0c;其核心思想是针对同一个训练集训练不同的分类器&#xff0c;即弱分类器&#xff0c;然后把这些弱分类器集合起来&#xff0c;构造一个更强的最终分类器。算法的适应性在于前一个基本分类器分错的样本会得到加强&#xff0c;加权后的全体样本…

流数据模型

流数据模型和传统的关系模型&#xff08;Relational Model&#xff09;有几个重要的区别&#xff1a; &#xff08;1&#xff09; 数据流的数据元素持续到达 &#xff08;2&#xff09; 流数据处理系统不能控制数据元素到达的顺序 &#xff08;3&#xff09; 数据流有可能是无限…

第一单元总结

一、作业分析 第一次作业 与后两次作业相比&#xff0c;第一次作业非常简单&#xff0c;仅要求对由常数项和幂函数组成的多项式求导。但由于缺少面向对象编程经验&#xff0c;我在这次作业中栽了不少跟头。 &#xff08;1&#xff09;度量分析 在第一次作业中&#xff0c;我还没…

牛客16437 买铅笔

题目描述 P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。她发现商店一共有 3 种包装的铅笔&#xff0c;不同包装内的铅笔数量有可能不同&#xff0c;价格也有可能不同。为了公平起见&#xff0c;P老师决定只买同一种包装的铅笔。 商店不允许将铅笔的包装拆开&#xff0…

牛客16426 玩具谜题

题目描述 南有一套可爱的玩具小人&#xff0c;它们各有不同的职业。 有一天&#xff0c;这些玩具小人把小南的眼镜藏了起来。小南发现玩具小人们围成了一个圈&#xff0c;它们有的面朝圈内&#xff0c;有的面朝圈外&#xff0c;如下图&#xff1a; 这时 singer 告诉小南一个谜…

ubuntu 更新软件源

ubuntu 更新软件源 问题&#xff1a;正在等待packagekitd退出 解决办法&#xff1a;systemctl stop packagekit 或者 systemctl disable packagekit转载于:https://www.cnblogs.com/xpylovely/p/10611394.html

牛客16438 回文日期

date1 input() date2 input()""" 判断是否是闰年 """ def isLeap(year):if (year%4 0 and year%100 ! 0) or (year%400 0):return 1else:return 0""" 判断是否是回文数 """ def isPalindrome(year):for i in …