大数据-273 Spark MLib - 基础介绍 机器学习算法 决策树 分类原则 分类原理 基尼系数 熵

点一下关注吧!!!非常感谢!!持续更新!!!

大模型篇章已经开始!

  • 目前已经更新到了第 22 篇:大语言模型 22 - MCP 自动操作 Figma+Cursor 自动设计原型

Java篇开始了!

  • MyBatis 更新完毕
  • 目前开始更新 Spring,一起深入浅出!

目前已经更新到了:

  • Hadoop(已更完)
  • HDFS(已更完)
  • MapReduce(已更完)
  • Hive(已更完)
  • Flume(已更完)
  • Sqoop(已更完)
  • Zookeeper(已更完)
  • HBase(已更完)
  • Redis (已更完)
  • Kafka(已更完)
  • Spark(已更完)
  • Flink(已更完)
  • ClickHouse(已更完)
  • Kudu(已更完)
  • Druid(已更完)
  • Kylin(已更完)
  • Elasticsearch(已更完)
  • DataX(已更完)
  • Tez(已更完)
  • 数据挖掘(已更完)
  • Prometheus(已更完)
  • Grafana(已更完)
  • 离线数仓(已更完)
  • 实时数仓(正在更新…)
  • Spark MLib (正在更新…)

在这里插入图片描述

决策树简介

基本介绍

决策树是一种非线性有监督分类模型,程序设计中的条件分支结构就是 if-else 结构

决策树的特点:
● 是一种树形结构,本质上一颗由多个判断节点组成的树
● 其中每个内部节点表示一个属性上的判断
● 每个分支代表一个判断结果的输出
● 最后每个叶节点比代表一种分类结果

下面是一个简单的例子:
在这里插入图片描述

核心思想

通过一系列“如果 … 那么 …”的分裂规则,把复杂的决策过程拆解成若干简单判断,最终落到叶节点给出预测或决策。

适用任务

分类(Classification)与 回归(Regression)皆可;也常用于特征工程(如自动分箱)与可解释性分析。

代表算法

ID3、C4.5、CART(最常用),以及衍生的集成方法:随机森林(Random Forest)、梯度提升树(GBDT / XGBoost / LightGBM / CatBoost)。

结构与术语

            root┌─┴───────┐internal     internalnode1         node2┌──┴──┐          │leaf  leaf       leaf
  • 根节点 (root):包含完整样本集
  • 内部节点 (internal/decision node):依据某特征和阈值把样本划分成更“纯净”的子集
  • 叶节点 (leaf / terminal node):输出类别标签或数值预测结果
  • 路径 (path):从根到叶的一条决策链,相当于一个规则组合

分类原则

在这里插入图片描述
要按照前四列的信息,使用决策树预测车祸的发生,如何选择根节点呢?

按照天气

按照“天气”列作为根节点,使用决策树预测,如图:

按照温度

按照“温度”列作为根节点,使用决策树预测,如图:
在这里插入图片描述

在这里插入图片描述

按照湿度

在这里插入图片描述

按照风

在这里插入图片描述

简单总结

只有使用天气作为根节点时,决策树的高度相对低而且树的两边能将数据分类的更彻底(其他列作为根节点时,树两边分类不纯粹,都有天气)

分类原则总结:
决策树构建过程就是数据不断分裂的递归过程,每一次分裂,尽可能让类别一样的数据在树的一边,当树的叶子节点的数据都是一类的时候,则停止分类。这样分类的数据,每个节点两边的数据不同,将相同的数据分类到树的一侧,能将数据分类的更加纯粹,减少树的高度和训练决策树的迭代次数。

分类原理

熵的介绍

物理学上,熵 Entropy 是 “混乱”程度的量度,系统越有序,熵值越低,系统越混乱或者分散,熵值越高。1948年香农提出了信息熵的概念。

在这里插入图片描述
如何衡量纯粹和混乱(信息量的大小)指标,可以使用信息熵或者基尼系数。
在这里插入图片描述
熵的定义如下:
在这里插入图片描述
● 某个类别下信息量越多,熵越大
● 信息量越少,熵越小
● 假设“有工作”这列下只有“否”这个信息类别,那么“有工作”这列的信息熵为:H=-(1xlog1)=0

上图中,如果按照“有工作”、“年龄”、“信贷情况”、“有房子”列使用决策树来预测“类别”。如何选择决策树的根节点分类条件,就是找到某列作为分类条件时,使“类别”这列分类更彻底,也就是找到在某个列作为分类条件下时,“类别”信息熵相对于没有这个分类条件时信息熵降低最大(降低最大,就是熵越低,分类越彻底),这个条件就是分类节点的分类条件,这里要使用条件熵和信息增益。

条件熵

定义:在某个分类条件下某个类别的信息熵叫做条件熵,在知道Y的情况下,X的不确定性。
在这里插入图片描述
在这里插入图片描述

信息增益

定义:代表熵的变化程度,分类前的信息熵减去分类后的信息熵
在这里插入图片描述
在构建决策树时,选择信息增益大的属性作为分类节点的方法也叫ID3分类算法。

基尼系数

基尼系数也可以表示样本的混乱程度,公式如下:
在这里插入图片描述
其中,K代表当前列表有K个类别。
基尼系数越小代表信息越纯,类别越少,基尼系数越大,代表信息越混乱,类别越多。基尼增益的计算和信息增益相同,假设某列只有一类值,这列基尼系数为0。

信息增益率

在这里插入图片描述
在上图中,如果将“记录ID”也作为分类条件的话,由于“记录ID”对于“是否贷款”列的条件熵为0,可以得到“是否贷款”在“记录ID”这个分类条件下信息增益最大。如果选择“记录ID”作为分类条件,可以将样本完全分开,分类后的信息熵为0,分类结果完全正确,信息增益最大,这种方式我们得到了一颗庞大的树,这种分类方式是不合理的。
使用信息增益来筛选分类条件,更倾向于更混杂的属性,容易出现你过拟合的问题,可以使用信息增益率来解决这个问题。

在这里插入图片描述
例如在“记录ID”条件下,“是否贷款”的信息增益最大,信息熵H(记录ID)也比较大,两者相除就是在“记录ID”条件下的增益率,结果比较小,笑出了当某些属性比较混杂时,使用信息增益来选择分类条件的弊端。
使用信息增益率来构建决策树的算法也叫C4.5算法,一般对于信息增益来说,选择信息增益率选择分类条件比较合适。

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

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

相关文章

第十一章 Java基础-继承

文章目录 1.继承来源2.继承特点3.子类能继承父类中哪些内容1.继承来源 是为了解决代码的重复冗余。

Axure项目实战:驾驶舱(数据一张图)制作教程

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!如有帮助请订阅专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 视频展示(本文第三部分含所有echarts示例JS代码,可复制使用): Axure项目实战:驾驶舱(数据一张图…

针对Python开发的工具推荐及分析,涵盖集成开发环境(IDE)、轻量级工具、在线开发平台、代码管理工具等)

以下是针对Python开发的工具推荐及全面分析,涵盖集成开发环境(IDE)、轻量级工具、在线开发平台、代码管理工具等,结合不同场景和需求进行分类说明: 目录 一、集成开发环境(IDE) 1. PyCharm 2…

不使用绑定的方法

public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); // 初始设置 A 控件的宽度 ControlA.Width ControlB.Width / 2; // 监听 B 控件的 SizeChanged 事件 ControlB.SizeChanged (sender, e) > { ControlA.Width ControlB.Actual…

DDR5 ECC详细原理介绍与基于协议讲解

本文篇幅较长,涉及背景原理介绍方便大家理解其运作方式 以及 基于DDR5协议具体展开介绍。 背景原理介绍 上图参考:DDR 内存中的 ECC 写入操作时,On-die ECC的工作过程如下: SoC将需要写入到Memory中的数据发送给控制器控制器将需要写入的数据直接发送给DRAM芯片在DDR5 DR…

基于springboot的益智游戏系统的设计与实现

博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了六年的毕业设计程序开发,开发过上千套毕业设计程序,没有什么华丽的语言&#xff0…

STM32软件spi和硬件spi

核心观点 本文主要介绍了SPI通信的两种实现方式:软件SPI和硬件SPI。详细阐述了SPI通信协议的基本概念、硬件电路连接方式、移位示意图、时序基本单元以及四种工作模式。同时,对W25Q64模块进行了详细介绍,包括其硬件电路、框图以及操作注意事…

NLP学习路线图(十五):TF-IDF(词频-逆文档频率)

在自然语言处理(NLP)的浩瀚宇宙中,TF-IDF(词频-逆文档频率) 犹如一颗恒星,虽古老却依然璀璨。当ChatGPT、BERT等大模型光芒四射时,TF-IDF作为传统方法的代表,其简洁性、高效性与可解…

爱其实很简单

初春时,元元买来两只芙蓉鸟。一只白色的,是雄鸟;另一只黄色的,是雌鸟。 每天清晨日出之前,雄鸟便开始“啁啾——啁啾”地啼鸣,鸣声清脆婉转,充满喜悦,仿佛在迎接日出,又…

CentOS 7 环境下部署 LAMP

在 CentOS 7 环境下部署 LAMP(Linux Apache MySQL 5.7 PHP 7.4) 环境的详细步骤如下: 1. 系统准备 1.1 更新系统 sudo yum update -y 1.2 安装依赖 sudo yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel e…

如何查看电脑电池性能

检查电脑电池性能的方法如下: 按下winR键,输入cmd回车,进入命令行窗口 在命令行窗口输入powercfg /batteryreport 桌面双击此电脑,把刚刚复制的路径粘贴到文件路径栏,然后回车 回车后会自动用浏览器打开该报告 红…

数据结构——优先级队列(PriorityQueue)

1.优先级队列 优先级队列可以看作队列的另一个版本,队列的返回元素是由是由插入顺序决定的,先进先出嘛,但是有时我们可能想要返回优先级较高的元素,比如最大值?这种场景下就由优先级队列登场。 优先级队列底层是由堆实…

在Windows本地部署Dify详细操作

Dify官网文档:产品简介 - Dify Docs 1.硬件要求 2.部署方式选择 本次我选择Docker Compose 部署,接下来我将根据官方文档指引,在windows电脑上完成dify本地部署 3.DockerCompose本地部署Dify 3.1 安装WSL2 官方安装WSL2的操作说明入口&…

Flutter 与 Android 原生布局组件对照表(完整版)

本对照表用于帮助 Android 开发者快速理解 Flutter 中的布局组件与原生布局的关系。 📘 Flutter ↔ Android 布局组件对照表 Flutter WidgetAndroid View/Layout说明ContainerFrameLayout / View通用容器,可设置背景、边距、对齐等RowLinearLayout (hor…

ps填充图层

在Photoshop(PS)中,填充图层是一种强大的工具,它允许用户在不破坏原始图像数据的情况下,快速为图像添加颜色、渐变或图案等填充效果。以下从填充图层的类型、创建方法、编辑与修改、应用场景等方面进行详细介绍。 填充…

网页前端开发(基础进阶1--盒子模型)

颜色表示方法3种: 1.关键字: color:green; gray red yellow 2.rgb表示法:红,绿,蓝三原色。rgb(r,g,b),r表示红色,g表示绿…

第10讲、Odoo 18框架设计原理全解析

前言 Odoo是一套开源的企业资源规划(ERP)系统,以其模块化、可扩展性和全面的业务应用套件而闻名。Odoo 18作为其最新版本,在架构设计、前端技术和后端实现上都有显著的创新和优化。本文将从前端的OWL组件化、模块化,到后端的ORM封装&#xf…

CSS3 渐变、阴影和遮罩的使用

全文目录: 开篇语**前言****1. CSS3 渐变 (Gradient)****1.1 线性渐变 (linear-gradient)****1.2 径向渐变 (radial-gradient)** **2. CSS3 阴影 (Shadow)****2.1 盒子阴影 (box-shadow)****2.2 文本阴影 (text-shadow)** **3. CSS3 遮罩 (Mask)****3.1 基本遮罩 (m…

[Linux]虚拟地址到物理地址的转化

[Linux]虚拟地址到物理地址的转化 水墨不写bug 文章目录 一、再次认识地址空间二、页表1、页表的结构设计2、页表节省了空间,省在哪里?3、页表的物理实现 一、再次认识地址空间 OS和磁盘交互的内存基本单位是4KB,这4KB通常被称为内存块。OS对…

Kubernetes(K8s)核心架构解析与实用命令大全

在容器化技术席卷全球的今天,Kubernetes(简称K8s,以“8”代替“ubernete”八个字母)已成为云原生应用部署和管理的核心基础设施。作为Google基于内部Borg系统开源打造的容器编排引擎,K8s不仅解决了大规模容器管理的难题…