当前位置: 首页 > article >正文

机器学习(六)

一,决策树:

简介:

        决策树是一种通过构建类似树状的结构(颠倒的树),从根节点开始逐步对数据进行划分,最终在叶子节点做出预测结果的模型。

结构组成:

        根节点:初始的数据集全集,没有经过任何划分(最顶层的部分)

        内部节点:代表对某个特征的测试,根据特征值将数据划分为子节点(中间部分)

        叶子节点:代表最终的分类结果或回归值(最底层的部分)

学习过程:

        ①选择根节点:找到一个明显的特征,能将数据最纯净地分为两组

        ②递归:对每个子节点重复上述操作,直到所有样本都同属于一类(完全纯净) or 没有更多的特征可用 or 达到的预设的树的深度(防止过拟合)

测量分类纯度(以区分猫狗为例):

        ①信息熵:

        熵(H)的函数图像如上图所示,当区分后的样本全为猫或狗时,熵为0;当样本中猫和狗的比例越接近于1时,熵越大。

        熵的函数:

        

        Pi是数据集中第i类样本的比例

        当所有样本属于同一类时(完全纯净),熵为0;当样本类别均匀分布时,熵最大。

        ②基尼指数:

                基尼指数衡量随机抽取的两个样本类别不一致的概率,数值越小纯度越高

                公式:

                

                当数据集完全纯净时,基尼指数为0;当数据集类别分布均匀时,基尼指数为0.5

        ③分类误差:

                分类误差表示使用多数类作为标签时误分类的概率

                公式:

                                

                完全纯净时误差为0,二分类均匀分布时误差为0.5

        三者比较:

        计算效率:基尼指数=分类误差>信息熵

        敏感度:信息熵>基尼指数>分类误差

三者在决策树中的应用:

        信息增益(熵):通过父节点减去子节点熵的加权平均值来选择增益最大的特征

        基尼指数:类似信息增益,选择使基尼指数下降最多的分割

信息增益的实现:     

        信息增益:在构建决策树过程中,使用某个特征对数据集实现分割后,学习熵的减少程度。

        核心:选择使信息增益最大的特征进行分割(即使学习熵减少程度最大),最大程度上纯化子节点

实现步骤:

        ①计算父节点的熵:

        ②按照特征分割,计算子节点的熵

        ③计算加权子节点的熵

        ④计算信息增益

举例: 

        假设父节点中有10个样本,6个属于A类,4个属于B类

        ①计算父节点的熵:代入信息熵的公式得到父节点的熵为0.971

        ②按特征分割数据,计算子节点的熵:用特征将这10个样本分为两个子节点,每个子节点有5个样本,分别计算两个子节点的熵。

                                子节点1(4A1B):熵为0.722

                                子节点2(2A3B):熵为0.971

        ③计算加权子节点熵:

                加权熵=(5/10)*子节点1熵+(5/10)*子节点2熵=0.8465

        ④计算信息增益:

               信息增益=父节点熵-加权子节点熵=0.1245

构建决策树:

①数据准备和预处理:

                从决策树的根结点开始,对数据进行数据清洗和特征处理或标签编码

②分割:

                 通过选择该特征后提供的最高信息增益的特性进行分割

③创建树的分支:

                根据所选特性将数据集拆分成两个子集,并创建树的分支,后将数据集划分给分支

④递归:

                对每个子节点重复上述操作,直到满足停止条件

停止条件:

  1. 节点纯度达标
  2. 达到预设的最大树深
  3. 继续分割的信息增益低于阈值(无显著信息增益)
  4. 子节点的样本数小于阈值(样本数过少)
One-Hot编码:

        One-Hot编码是将包含K个类别的离散特征转换为K个二元特征,常用在构建决策树时,处理多类别特征。

        举例:原始特征“颜色”包含三个类别:红,蓝,绿

                  经过One-Hot编码后生成三个新特征:是不是红色,是不是蓝色,是不是绿色

        优点:可以将多类别特征转换为二元特征,每个特征仅对应一个类别,模型可以更灵活的选择分割点;可以避免算法对多取值特征的偏好

        缺点:

                        1.增加特征数量,增加计算负担

                        2.降低单个特征的重要性,使得信息分散

                        3.过拟合风险

拆分连续值的决策树分支:

        连续值的分割目标是找到某个阈值,将数据集分为两个子集,使得分割后的子集纯度最高。

实现步骤:

  1. 排序连续特征值
  2. 根据排完序的特征值点生成候选分割点
  3. 计算每个分割点之间的纯度
  4. 对比执行后分割

二,回归树模型:

        回归树是一种用来预测连续数值的决策树模型,如用来预测房价,温度......。与分类树不同,分类树预测的是类别,而回归树预测的是连续的数值。

        实现原理:

                从根节点到叶节点,分而治之,将数据集划分为多个小区域,每个区域内的样本数尽可能相似,直到每个小区域足够纯净

        拆分步骤:

                        ①遍历所有特征

                        ②遍历每个特征的所有可能分割点:

                        若为连续特征:尝试相邻值的中间点;若为离散特征,尝试每个类别

                        ③选择最优分割点

        衡量指标:均方误差(EMS)

                均方误差是衡量一个区域内样本的数值差异的程度,均方误差越小,该区域内样本越相似。

        通过计算分割后的左右子区域的均方误差和,选择使总均方误差和最小的分割方式。

        回归树的构建流程:

                从根节点开始,遍历所有特征---> 遍历分割点,选择使总均方误差最小的分割方式--->生成子节点,按分割条件将数据分为左右两个部分 ---> 递归处理子节点,重复上述步骤 ---> 达到停止条件(回归树达到预测树深||区域内样本数过少||均方误差下降不明显)

        代码实现及运行结果:

from sklearn.tree import DecisionTreeRegressor
import pandas as pd# 示例数据:房屋面积(㎡)和价格(万元)
data = pd.DataFrame({'面积': [80, 120, 100, 90, 150],'价格': [300, 450, 400, 350, 500]
})# 训练回归树模型
model = DecisionTreeRegressor(max_depth=2)  # 限制树深度为2
model.fit(data[['面积']], data['价格'])# 预测新样本
new_house = pd.DataFrame({'面积': [110]})
predicted_price = model.predict(new_house)
print(f"预测价格:{predicted_price[0]:.1f}万元")  # 输出:预测价格:425.0万元
        决策树模型中的放回抽样:

                从原始的数据集中有放回地随机抽取样本的方法,每次抽取时,每个样本被选中的概率相同,而且可能被重复选中。每个训练子集的样本数与原始数据集相同

三,随机森林算法:

        随机森林算法是一种通过组合多个决策树的算法(集成树)。

        集成方法:

                ①Bagging:通过自助采样,从原始数据集中生成多个子集,每个子集训练一棵决策树

                ②随机特征选择:每棵树节点分裂时,随机选择部分特征作为候选,降低树之间的相关性,防止过拟合

        训练过程:
  1. 有放回地抽样,从原始数据集中随机抽取N个样本作为训练集
  2. 用未参与训练的样本验证模型,无需额外的验证集
  3. 特征抽样:每个节点分裂时,从全部特征中随机选取子集
  4. 每棵树生长到最大深度||叶子节点纯度达标时停止
四,XGBoost:(类似贪心算法) 

        XGBoost是一种基于梯度提升树的集成算法,通过加法模型和前向分布算法逐步优化目标函数。每次训练后,把侧重点放在先前训练过但拟合效果不好的决策树上。

        第一次循环:通过已有的训练集开始训练决策树

        第二-N次循环:根据前一次循环产生的决策树的训练效果,侧重于选择训练不好的决策树,来进行训练。

        XGBoost优点:

                        ①可以选择默认拆分标准和停止标准

                        ②内置正则化防止过拟合

五,决策树 VS 神经网络:        

        决策树:适用于数据量小,特征明显,训练速度快的场景,例如分群,评分。

        神经网络:适用于数据量大,数据种类多样(图像,音频,文件),的场景。

相关文章:

机器学习(六)

一,决策树: 简介: 决策树是一种通过构建类似树状的结构(颠倒的树),从根节点开始逐步对数据进行划分,最终在叶子节点做出预测结果的模型。 结构组成: 根节点:初始的数据集…...

kotlin高级用法总结

Kotlin 是一门功能强大且灵活的编程语言,除了基础语法外,它还提供了许多高级特性,可以帮助你编写更简洁、高效和可维护的代码。以下是 Kotlin 的一些高级用法,涵盖了协程、扩展函数、属性委托、内联类、反射等内容。 协程&#x…...

OCPP扩展机制与自定义功能开发:协议灵活性设计与实践 - 慧知开源充电桩平台

OCPP扩展机制与自定义功能开发:协议灵活性设计与实践 引言 OCPP作为开放协议,其核心价值在于平衡标准化与可扩展性。面对不同充电桩厂商的硬件差异、区域能源政策及定制化业务需求,OCPP通过**扩展点(Extension Points&#xff09…...

docker目录挂载与卷映射的区别

在 Docker 中,目录挂载(Bind Mount)和卷映射(Volume Mount)的命令语法差异主要体现在路径格式上,具体表现为是否以斜杠(/)开头。以下是两者的核心区别及使用场景的总结: …...

【江协科技STM32】ADC数模转换器-学习笔记

ADC简介 ADC(Analog-Digital Converter)模拟-数字转换器ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁,ADC是一种将连续的模拟信号转换为离散的数字信号的设备或模块12位逐次逼近型…...

【kubernetes】service

目录 1. 说明2. 原理2.1 服务注册2.2 服务发现2.3 负载均衡 3. Service的类型3.1 ClusterIP3.2 NodePort3.3 LoadBalancer3.4 ExternalName 4. 使用场景 1. 说明 1.kubernetes中的service主要用于提供网络服务,并实现微服务架构中的几个核心功能:全自动…...

嵌入式学习笔记-卡尔曼滤波,PID,MicroPython

文章目录 卡尔曼滤波卡尔曼滤波的核心思想卡尔曼滤波的数学模型1. 状态转移模型(预测系统状态)2. 观测模型(预测测量值) 卡尔曼滤波的五个关键步骤1. 预测状态2. 预测误差协方差3. 计算卡尔曼增益4. 更新状态5. 更新误差协方差 卡…...

什么是hive

Apache Hive 是一个基于 Hadoop 生态系统构建的数据仓库工具,主要用于处理和分析大规模的结构化数据。它允许用户通过类似 SQL 的查询语言(HiveQL)进行数据操作,而无需直接编写复杂的 MapReduce 程序。以下是 Hive 的核心特点和应…...

MAC电脑常用操作

环境:M3芯片 ,macOS15.2 🚀 快捷键 🖥️ 窗口管理 ✅ 退出/进入全屏模式 • 浏览器等应用:⌘ Command Ctrl F ✅ 最小化当前窗口 • ⌘ Command M • 💡 隐藏窗口但保留应用在后台运行 ✅ 关闭当前标…...

leetcode 1287. 有序数组中出现次数超过25%的元素 简单

给你一个非递减的 有序 整数数组&#xff0c;已知这个数组中恰好有一个整数&#xff0c;它的出现次数超过数组元素总数的 25%。 请你找到并返回这个整数 示例&#xff1a; 输入&#xff1a;arr [1,2,2,6,6,6,6,7,10] 输出&#xff1a;6提示&#xff1a; 1 < arr.length…...

3.8【Q】cv

这个draw_line函数的逻辑和功能是什么&#xff1f;代码思路是什么&#xff1f;怎么写的&#xff1f; 这个t是什么&#xff1f;t.v[0]和t.v[1],[2]又是什么&#xff1f; void rst::rasterizer::draw(rst::pos_buf_id pos_buffer, rst::ind_buf_id ind_buffer, rst::Primitive ty…...

upload-labs文件上传

第一关 上传一个1.jpg的文件&#xff0c;在里面写好一句webshell 保留一个数据包&#xff0c;将其中截获的1.jpg改为1.php后重新发送 可以看到&#xff0c;已经成功上传 第二关 写一个webshell如图&#xff0c;为2.php 第二关在过滤tpye的属性&#xff0c;在上传2.php后使用b…...

PyTorch中Tensor对象的属性和方法

目录 一、核心属性 复数支持 转置与视图操作 ​元信息 ​梯度相关 ​二. 常用方法 ​基本操作 ​转置与视图 ​数学运算 ​深度学习相关 ​3. 使用示例 ​梯度计算 ​设备管理 ​自定义反向传播 ​4. 注意事项 ​总结 一、核心属性 1.requires_grad: _bool: 该…...

C++20 格式化库:强大的字符串格式化工具

文章目录 格式化语法常见用法1. 填充和对齐2. 数值格式化3. 进制格式化4. 自定义类型 示例代码注意事项 C20 的格式化库是一个强大的工具&#xff0c;用于处理字符串的格式化操作。它提供了类似于 Python 中 str.format() 的功能&#xff0c;但语法和用法更符合 C 的风格。以下…...

[傻瓜式教学]如何将MathType公式编辑器内嵌到WPS工具栏中

[傻瓜式教学]如何将MathType公式编辑器内嵌到WPS工具栏中 将MathType公式编辑器内嵌到WPS工具栏中 下载好所需文件 我用夸克网盘分享了「mathtype安装教程超简单易上手.zip」&#xff0c;点击链接即可保存。打开「夸克APP」 链接&#xff1a;https://pan.quark.cn/s/4726c684…...

分析TCP三次握手与四次挥手

TCP&#xff08;传输控制协议&#xff09;通过三次握手建立连接&#xff0c;四次挥手终止连接&#xff0c;确保数据传输的可靠性。 TCP的三个控制标志位&#xff1a; SYN——用于建立连接&#xff0c;同步序列号。 ACK——用于确认收到的数据。 FIN——用于终止连接。 ISN…...

【深度学习】宠物品种分类Pet Breeds Classifier

文章目录 宠物品种数据集制作宠物品种标签图像预处理Presizing 损失函数loss观察模型的性能提升模型的性能learning rate finder使用CLR算法训练选择学习率的策略重新训练 迁移学习微调fine_tunefit_one_cycle有判别力的学习率 选择epoch的数量更深的网络架构 宠物品种数据集 …...

【从零开始学习计算机科学】HLS算子调度

算子调度 调度是HLS 中的核心问题,为无时序或部分时序的输入指定时钟边界,其对最终结果质量具有很大的影响。调度会影响时钟频率、延时、吞吐率、面积、功耗等多种因素。 调度的输入是控制数据流图,其节点表示算子/操作,有向边表示数据依赖,控制依赖,优先依赖。如果没有…...

centos 安装composer 教程

打开命令行 php -r "copy(https://getcomposer.org/installer, composer-setup.php);" sudo php composer-setup.php --install-dir/usr/local/bin --filenamecomposer composer --version sudo chmod us /usr/local/bin/composer Super18120/article/details/14388…...

C语言_数据结构总结2:动态分配方式的顺序表

0——静态分配内存的顺序表和动态分配内存的顺序表的相同之处和不同之处 相同之处 基本操作逻辑相同&#xff1a;无论是静态分配还是动态分配的顺序表&#xff0c;其核心的操作逻辑是一致的。例如插入操作都需要将插入位置之后的元素依次后移&#xff0c;删除操作都需要将删除…...

嵌入式人工智能应用-第6章 人脸检测

嵌入式人工智能应用 人脸检测 嵌入式人工智能应用1 人脸检测1.1 CNN 介绍1.2 人脸检测原理1.3 MTCNN介绍1.4 NCNN介绍2 系统安装2.1 安装依赖库NCNN2.2 运行对应的库3 总结1 人脸检测 1.1 CNN 介绍 卷积神经网络。卷积是什么意思呢?从数学上说,卷积是一种运算。它是我们学习…...

关于无感方波启动预定位阶段

一、预定位的核心目标与原理 消除启动不确定性 无位置传感器下&#xff0c;转子初始位置未知&#xff0c;直接换相可能导致反转或失步。预定位通过施加固定方向磁场&#xff0c;强制转子对齐至预定角度&#xff08;通常0或60电角度&#xff09;&#xff0c;建立初始位置基准。 …...

WSL安装及问题

1 概述 Windows Subsystem for Linux&#xff08;简称WSL&#xff09;是一个在Windows 10\11上能够运行原生Linux二进制可执行文件&#xff08;ELF格式&#xff09;的兼容层。它是由微软与Canonical公司合作开发&#xff0c;开发人员可以在 Windows 计算机上同时访问 Windows 和…...

MySQL中的脏读与幻读:概念、影响与解决方案

在数据库事务处理中&#xff0c;脏读和幻读是两种常见的并发问题&#xff0c;可能导致数据不一致或逻辑错误。本文将结合实际场景&#xff0c;深入解析两者的原理及解决方案。 一、脏读&#xff08;Dirty Read&#xff09; 1. 概念解析 脏读指一个事务读取了另一个事务未提交…...

基于SpringBoot的商城管理系统(源码+部署教程)

运行环境 数据库&#xff1a;MySql 编译器&#xff1a;Intellij IDEA 前端运行环境&#xff1a;node.js v12.13.0 JAVA版本&#xff1a;JDK 1.8 主要功能 基于Springboot的商城管理系统包含管理端和用户端两个部分&#xff0c;主要功能有&#xff1a; 管理端 首页商品列…...

HeidiSQL:一款免费的数据库管理工具

HeidiSQL 是一款免费的图形化数据库管理工具&#xff0c;支持 MySQL、MariaDB、Microsoft SQL、PostgreSQL、SQLite、Interbase 以及 Firebird&#xff0c;目前只能在 Windows 平台使用。 HeidiSQL 的核心功能包括&#xff1a; 免费且开源&#xff0c;所有功能都可以直接使用。…...

Ae 效果详解:VR 色差

Ae菜单&#xff1a;效果/沉浸式视频/VR 色差 Immersive Video/VR Chromatic Aberrations VR 色差 VR Chromatic Aberrations效果用于模拟镜头色散现象&#xff0c;在 VR 视频中制造 RGB 通道错位的色彩偏移&#xff0c;以增强视觉风格或创造数字失真效果。 本效果适用于所有色深…...

计算机毕业设计SpringBoot+Vue.js制造装备物联及生产管理ERP系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

Ubuntu 安装docker docker-compose

Docker 通过提供轻量级、可移植且高效的解决方案&#xff0c;简化了软件开发和部署。“docker build”命令是 Docker 镜像创建过程的核心。本文将探讨 Docker 构建命令、用法以及 Docker 构建的优化。 Docker 构建有什么作用&#xff1f; Docker build 是一个命令行界面 CLI命…...

【Linux内核系列】:深入解析输出以及输入重定向

&#x1f525; 本文专栏&#xff1a;Linux &#x1f338;作者主页&#xff1a;努力努力再努力wz ★★★ 本文前置知识&#xff1a; 文件系统以及文件系统调用接口 用c语言简单实现一个shell外壳程序 内容回顾 那么在此前的学习中&#xff0c;我们对于Linux的文件系统已经有了…...