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

深度神经网络——什么是降维?

引言

什么是降维? 降维是用于降低数据集维度的过程,采用许多特征并将它们表示为更少的特征。 例如,降维可用于将二十个特征的数据集减少到仅有几个特征。 降维通常用于无监督学习任务

降维是一个用于降低数据集维度的过程,采用许多特征并将它们表示为更少的特征。 例如,降维可用于将二十个特征的数据集减少到仅有几个特征。 降维常用于 无监督学习 从许多功能中自动创建类的任务。 为了更好地理解 为什么以及如何使用降维,我们将了解与高维数据相关的问题以及最流行的降维方法。

更多维度导致过度拟合

维度是指数据集中的特征/列的数量。

人们通常认为,在机器学习中,特征越多越好,因为它可以创建更准确的模型。然而,更多的功能并不一定意味着更好的模型。

数据集的特征对于模型的有用程度可能有很大差异,其中许多特征并不重要。 此外,数据集包含的特征越多,需要的样本就越多,以确保数据中能够很好地表示特征的不同组合。 因此,样本数量与特征数量成比例增加。 更多的样本和更多的特征意味着模型需要更加复杂,并且随着模型变得更加复杂,它们对过度拟合变得更加敏感。 该模型对训练数据中的模式学习得很好,但无法推广到样本数据之外。

降低数据集的维数有几个好处。 如前所述,更简单的模型不太容易过度拟合,因为模型必须对特征之间的相互关系做出更少的假设。 此外,维度越少意味着训练算法所需的计算能力就越少。 类似地,维度较小的数据集需要较少的存储空间。 降低数据集的维数还可以让您使用不适合具有许多特征的数据集的算法。

常见的降维方法

降维可以通过特征选择或特征工程来实现。 特征选择是工程师识别数据集最相关特征的地方,而 特征工程 是通过组合或改造其他特征来创建新特征的过程。

特征选择和工程可以通过编程或手动完成。 当手动选择和设计特征时,通常会通过可视化数据来发现特征和类之间的相关性。 以这种方式进行降维可能非常耗时,因此一些最常见的降维方法涉及使用 Scikit-learn for Python 等库中提供的算法。 这些常见的降维算法包括:主成分分析(PCA)、奇异值分解(SVD)和线性判别分析(LDA)。

用于无监督学习任务降维的算法通常是 PCA 和 SVD,而用于监督学习降维的算法通常是 LDA 和 PCA。在监督学习模型的情况下,新生成的特征仅被输入到机器学习分类器中。请注意,此处描述的用途只是一般​​用例,而不是这些技术可能使用的唯一条件。上述降维算法只是统计方法,它们在机器学习模型之外使用。

主成分分析

主成分分析(PCA) 是一种统计方法,分析数据集的特征/特征并总结最有影响力的特征。 数据集的特征组合在一起形成表示,该表示保留了数据的大部分特征,但分布在较少的维度上。 您可以将其视为将数据从较高维度的表示形式“压缩”为只有几个维度的表示形式。

作为 PCA 可能有用的情况的一个例子,请考虑描述葡萄酒的各种方式。 虽然可以使用许多高度具体的特征(例如二氧化碳水平、通气水平等)来描述葡萄酒,但在尝试识别特定类型的葡萄酒时,这些具体特征可能相对无用。 相反,根据味道、颜色和年龄等更一般的特征来识别类型会更加谨慎。 PCA可用于组合更具体的特征并创建更通用、有用且不太可能导致过度拟合的特征。

PCA 的执行方式是确定输入特征之间的平均值如何变化,并确定特征之间是否存在任何关系。 为了做到这一点,创建一个协变矩阵,建立一个由关于数据集特征的可能对的协方差组成的矩阵。 这用于确定变量之间的相关性,负协方差表示逆相关,正相关表示正相关。

数据集的主要(最有影响力)组成部分是通过创建初始变量的线性组合来创建的,这是在线性代数概念的帮助下完成的 特征值和特征向量。 创建组合是为了使主成分彼此不相关。 初始变量中包含的大部分信息被压缩到前几个主成分中,这意味着已经创建了新特征(主成分),其中包含较小维空间中的原始数据集的信息。

奇异值分解

奇异值分解(SVD) is 用于简化矩阵中的值,将矩阵简化为其组成部分,并使该矩阵的计算变得更容易。 SVD 可用于实值矩阵和复数矩阵,但出于本说明的目的,我们将研究如何分解实值矩阵。

假设我们有一个由实值数据组成的矩阵,我们的目标是减少矩阵内的列/特征的数量,类似于 PCA 的目标。 与 PCA 一样,SVD 会压缩矩阵的维数,同时尽可能保留矩阵的可变性。 如果我们想对矩阵 A 进行操作,我们可以将矩阵 A 表示为另外三个矩阵,称为 U、D 和 V。矩阵 A 由原始 x * y 元素组成,而矩阵 U 由元素 X * X 组成(它是正交矩阵)。 矩阵 V 是包含 y * y 元素的不同正交矩阵。 矩阵 D 包含元素 x * y,它是一个对角矩阵。

为了分解矩阵 A 的值,我们需要将原始奇异矩阵值转换为新矩阵中找到的对角线值。 使用正交矩阵时,即使乘以其他数字,它们的属性也不会改变。 因此,我们可以利用这个性质来近似矩阵A。 当我们将正交矩阵与矩阵 V 的转置相乘时,结果是与原始 A 等效的矩阵。

当矩阵 a 分解为矩阵 U、D 和 V 时,它们包含矩阵 A 中找到的数据。但是,矩阵的最左边的列将包含大部分数据。 我们可以只取前几列,并得到矩阵 A 的表示形式,该矩阵的维度要少得多,并且 A 中包含大部分数据。

线性判别分析

左:LDA 之前的矩阵,右:LDA 之后的轴,现在可分离

线性判别分析(LDA) 是一个从多维图中获取数据的过程 将其重新投影到线性图上。 您可以通过考虑一个充满属于两个不同类的数据点的二维图来想象这一点。 假设这些点分散在各处,因此无法绘制出能够整齐地分隔两个不同类的线。 为了处理这种情况,可以将二维图中找到的点简化为一维图(一条线)。 这条线将分布所有数据点,并且有望将其分为两部分,以实现数据的最佳分离。

执行 LDA 时有两个主要目标。 第一个目标是最小化类别的方差,而第二个目标是最大化两个类别的均值之间的距离。 这些目标是通过创建将存在于二维图中的新轴来实现的。 新创建的轴用于根据前面描述的目标分隔两个类。 创建轴后,在 2D 图中找到的点将沿轴放置。

将原始点沿新轴移动到新位置需要三个步骤。 第一步,使用各个类之间的距离均值(类间方差)来计算类的可分离性。 在第二步中,通过确定相关类别的样本与平均值之间的距离来计算不同类别内的方差。 在最后一步中,创建最大化类之间方差的低维空间。

当目标类的均值彼此相距较远时,LDA 技术可获得最佳结果。 如果分布的均值重叠,LDA 无法使用线性轴有效地分离类别。

相关文章:

深度神经网络——什么是降维?

引言 什么是降维? 降维是用于降低数据集维度的过程,采用许多特征并将它们表示为更少的特征。 例如,降维可用于将二十个特征的数据集减少到仅有几个特征。 降维通常用于无监督学习任务 降维是一个用于降低数据集维度的过程,采用许…...

SpringMVC—RequestMapping注解

一、RequestMapping注解 RequestMapping注解:是Spring MVC框架中的一个控制器映射注解,用于将请求映射到相应的处理方法上,具体来说,他可以将指定URL的请求绑定到一个特定的方法或类上,从而实现对请求的处理和响应。 …...

Java线程池基本概念

全局和局部线程池 全局线程池 在Spring框架中,全局线程池如ThreadPoolTaskExecutor通常是作为Spring Bean存在的,它们的生命周期由Spring容器管理。当Spring容器关闭时,这些线程池也会被适当地清理和关闭。因此,开发者通常不需要手…...

智能车联网安全发展形势、挑战

一、技术演进加速车联网安全环境复杂变化 当前,5G、大数据、大算力、大模型等技术正加速在车联网领域实现融合应用。车联网的网络通信能力、感知计算水平以及创新业务应用都在快速发展,与此同时,车联网的网络安全环境也在随之演进变化&#…...

AWS概述

AWS概述EMR Serverless Aamzon Web Services提供了一系列全球范围的云产品,包括计算、存储、数据库、分析、网络、移动、开发工具、管理工具、IoT、安全和企业应用:按需交付、及时可用、采用随用随付的定价模式。你可以畅享200多种服务,从数据…...

MySQL常见面试题自测

文章目录 MySQL基础架构一、说说 MySQL 的架构?二、一条 SQL语句在MySQL中的执行过程 MySQL存储引擎一、MySQL 提供了哪些存储引擎?二、MySQL 存储引擎架构了解吗?三、MyISAM 和 InnoDB 的区别? MySQL 事务一、何谓事务&#xff1…...

c语言回顾-函数递归

1.递归的介绍 1.1什么是递归 递归是指在一个函数的定义中调用自身的过程。简单来说,递归是一种通过重复调用自身来解决问题的方法。 递归包括两个关键要素:基本情况和递归情况。基本情况是指当问题达到某个特定条件时,不再需要递归调用&am…...

消息队列-RabbitMQ-延时队列实现

死信队列 DLX,全称为Dead-Letter-Exchange,死信交换机,死信邮箱。当消息在一个队列中变成死信之后,它能重新发送到另外一个交换器中,这个交换器就是DLX,绑定DLX的队列就称为死信队列。 导致死信的几种原因: ● 消息…...

【热门开源项目推荐】满足不同程序员的需求与关注点

目录 前言一、热门开源项目介绍二、使用开源热门项目的优势(一)经济方面(二)技术方面(三)社区支持及协作方面 三、程序员选择项目模型建议(一)关键步骤(二)示…...

一文理清GO语言日志库实现开发项目中的日志功能(rotatelogs/zap分析)

一文理清GO语言日志库实现开发项目中的日志功能(rotatelogs/zap分析) rotatelogs rotatelogs 是一个用于管理日志文件的 Go 语言库,它提供了自动轮换、压缩和删除旧日志文件的功能。这个库可以帮助你更好地管理和维护你的应用程序日志。要使…...

【Go语言精进之路】构建高效Go程序:了解string实现原理并高效使用

🔥 个人主页:空白诗 🔥 热门专栏:【Go语言精进之路】 文章目录 引言一、Go语言的字符串类型1.1 字符串的定义1.2 字符串的零值可用1.3 字符串的不可变性1.4 字符串的拼接1.5 字符串的常用方法1.6 实际使用示例 二、字符串的内部表…...

HDFS 常见命令

在HDFS创建文件夹:hdfs dfs -mkdir /test 复制本地文件到HDFS中某个目录下:hdfs dfs -put /本地路径 /hdfs 路径 查看文件内容:hdfs dfs -cat /test.txt 查看当前文件夹目录:hdfs dfs -ls / 查看文件夹中的文件数:…...

示例:WPF中应用Grid的SharedSizeGroup设置整齐的布局

一、目的&#xff1a;应用Grid的SharedSizeGroup设置整齐的布局 二、实现 <ItemsControl ItemsSource"{local:GetStudents Count5}"><ItemsControl.ItemTemplate><DataTemplate><Grid ShowGridLines"True"><Grid.ColumnDefinit…...

React的form表单自定义校验规则

使用antd开发的过程中&#xff0c;必定会遇到需要对form表单进行必填校验的处理&#xff0c;正常情况下&#xff0c;我们都会一个空的必填校验&#xff0c;如下&#xff1a;一般我们只需要简单配置rules即可 <FormItem label"管理员姓名" {...itemLayout.wholeLi…...

一种新的一维时间序列信号盲解卷积算法(以旋转机械故障诊断为例,MATLAB环境)

一种新的一维时间序列信号盲解卷积算法&#xff08;以旋转机械故障诊断为例&#xff0c;MATLAB环境&#xff09;&#xff0c;可作为深度学习信号前处理过程&#xff0c;水个SCI不是问题。 机械设备的状态信号中往往蕴含着大量的设备异常信息。如何从繁多的机械状态信号中提取足…...

618电商是社区网站入局的好时机吗?

近日&#xff0c;随着618大促的临近&#xff0c;许多内容平台像B站、小红书等纷纷被电商活动所充斥&#xff0c;让用户感觉仿佛被电商绑架一般。这种用户体验的极度不佳让人开始思考&#xff0c;难道这就是互联网社区的未来发展方向吗&#xff1f; 在所有平台性质的社区中&…...

不知道密码,一样能卸载瑞星esm防病毒终端安全防护系统

离开单位后试图卸载瑞星的时候却发现还需要密码&#xff0c;真是烦死了。研究了几分钟后找到了完美卸载方法。 首先&#xff0c;让我们请出老流氓360安全卫士&#xff0c;下载好它&#xff0c;让右键菜单出现使用 360强力删除这一选项。 之后&#xff0c;进入安全模式&#x…...

Chromium 开发指南2024 Mac篇-安装和配置depot_tools工具(三)

1.引言 在前两篇指南中&#xff0c;我们详细介绍了在 macOS 环境下编译 Chromium 所需的硬件要求和系统依赖&#xff0c;并具体讲解了如何正确安装和配置 Xcode。通过这些步骤&#xff0c;您已经为编译 Chromium 打下了坚实的基础。然而&#xff0c;编译 Chromium 还需要配置一…...

微信小程序-路由和页面跳转API

一.wx.navigateTo wx.navigateTo是通过编程实现页面跳转&#xff0c;和navigator组件组件中&#xff0c;open-type"navigate"属性类似&#xff0c;是保留当前页面跳转新的页面&#xff0c;不适用tabbar页面。 //保留当前页面&#xff0c;跳转到非tabbar页面wx.navig…...

PWR电源控制

一、PWR简介 1、PWR&#xff08;Power Control&#xff09;电源控制 &#xff08;1&#xff09;PWR负责管理STM32内部的电源供电部分&#xff0c;可以实现可编程电压监测器和低功耗模式的功能 &#xff08;2&#xff09;可编程电压监测器&#xff08;PVD&#xff09;可以监控…...

【记录46】【案例】echarts 柱状图

echarts环境4.1.0 <template><div id"threefour"></div> </template> <script> import * as echarts from "echarts" export default {name:"",components:{},data(){return {}},methods:{getdata(){var myChart…...

Github2024-06-12 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-06-12统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4JavaScript项目2Lua项目1PHP项目1Blade项目1非开发语言项目1TypeScript项目1Shell项目1从零开始构建你喜爱的技术 创建周期:2156 天…...

茶艺师服务师傅小程序APP源码(APP+小程序+公众号+H5)

&#x1f375;茶艺师服务小程序&#xff1a;品味生活的茶艺新体验&#x1f331; &#x1f33f;一、引言&#xff1a;茶艺师服务小程序&#xff0c;让生活更有味 在繁忙的生活中&#xff0c;品一杯香茗&#xff0c;感受茶文化的韵味&#xff0c;是许多人向往的休闲方式。然而&…...

【正则表达式】入门

参考视频&#xff1a;10分钟快速掌握正则表达式_哔哩哔哩_bilibili 这个网站用来测试写的正则表达式效果&#xff1a;regex101: build, test, and debug regex 示例&#xff1a; 限定符 ? 表示前一个字符可有可无 比如这里输入&#xff1a;de? 匹配结果可以得到d和de * 前…...

制造业为什么需要ERP企业管理软件?

如今&#xff0c;传统的制造业管理方式逐渐变得力不从心~库存积压、生产效率低下、供应链混乱…想象一下&#xff0c;如果你的企业仍然依赖于手工记录订单、库存和财务数据&#xff0c;那么每当市场发生变动时&#xff0c;你就需要花费大量的时间和精力去重新调整生产计划、更新…...

JavaScript Prototype

JavaScript Prototype JavaScript 是一种高级的、解释执行的编程语言&#xff0c;广泛应用于网页和服务器端开发。JavaScript 的核心特性之一是其原型继承机制&#xff0c;这是理解 JavaScript 对象模型的关键。 什么是 Prototype&#xff1f; 在 JavaScript 中&#xff0c;…...

Web Works API 和 Promise 的对比和区别

Web Workers 和 Promise 都是强大的工具&#xff0c;用于不同的异步处理场景。Web Workers 适用于需要并行处理的复杂任务&#xff0c;通过后台线程避免阻塞主线程。而 Promise 则简化了单线程中的异步操作管理&#xff0c;使代码更加清晰和结构化。根据具体需求选择合适的技术…...

jeecg快速启动(附带本地运行可用版本下载)

版本整理&#xff08;windows x64位&#xff09;&#xff1a; redis&#xff1a;3.0.504 MYSQL&#xff1a;5.7 Maven&#xff1a;3.9.4(setting文件可下载) Nodejs&#xff1a;v16.20.2&#xff08;建议不要安装默认路径下&#xff0c;如已安装在c盘&#xff0c;运行yarn报…...

【PPT教程】一键重置幻灯片背景的方法,新建幻灯片带默认背景

目的是替换18届的研电赛ppt背景为19届 这里写目录标题 1.设计->设置背景格式2.图片或纹理填充->插入3.选择需要替换为背景的照片4.点击下方的应用到全部 1.设计->设置背景格式 2.图片或纹理填充->插入 3.选择需要替换为背景的照片 4.点击下方的应用到全部 此时全部…...

NVIDIA新模型Nemotron-4:98%的训练数据是合成生成的,你敢信?

获取本文论文原文PDF&#xff0c;请公众号 AI论文解读 留言&#xff1a;论文解读 标题&#xff1a;Nemotron-4 340B Technical Report 模型概述&#xff1a;Nemotron-4 340B系列模型的基本构成 Nemotron-4 340B系列模型包括三个主要版本&#xff1a;Nemotron-4-340B-Base、…...

如何用模板做公司网站/信息检索关键词提取方法

题目描述 题解 唉&#xff0c;还是码力不行&#xff0c;写了一个多小时发现想错了又重构了一个多小时。 这道题意图很显然&#xff0c;动态维护联通块&#xff0c;有一个经典做法就是用LCT维护按照删除时间维护的最大生成树。 网上还有一种神奇的做法&#xff0c;线段树套并查集…...

做营销看的网站/排名查询系统

在浏览器地址栏输入地址&#xff0c;在页面上想通过脚本弹出一个框&#xff0c;看到Controller下有个JavaScript方法&#xff0c;返回的类型是JavaScriptResult&#xff0c;于是想用这个方法弹出框&#xff0c; public ActionResult Index(){ return this.JavaScript("&l…...

网站 攻击 刷流量/seo程序

本文详细总结了PHP网站在Linux服务器上面的安全配置&#xff0c;包含PHP安全、mysql数据库安全、web服务器安全、***查杀和防范等&#xff0c;很好很强大很安全。php安全配置&#xff1a;1. 确保运行php的用户为一般用户&#xff0c;如www2. php.ini参数设置open_basedir可将用…...

编写网站策划书/汕头百度推广公司

php对象注入是一个非常常见的漏洞&#xff0c;这个类型的漏洞虽然有些难以利用&#xff0c;但仍旧非常危险。为了理解这个漏洞&#xff0c;请读者具备基础的php知识。类和变量是非常容易理解的php概念。这里先来了解一下什么是php序列化与反序列化&#xff1f;序列化&#xff1…...

邯郸移动网站制作/麒麟seo

2019独角兽企业重金招聘Python工程师标准>>> CentOS下用于查看系统当前登录用户信息的4种方法 2015年07月24日 17:09:09 slovyz 阅读数&#xff1a;5865更多 个人分类&#xff1a; centos 1. 使用w命令查看登录用户正在使用的进程信息 w命令用于显示已经登录系统的用…...

wordpress 模板 国外/网络营销活动案例

最近在学Linux内核编译&#xff0c;在window10&#xff08;版本1809&#xff09;子系统下编译内核成功&#xff0c;想验证一下内核运行。验证过程中&#xff0c;在ubuntu子系统做文件系统挂时“sudo mount -o loop myinitrd4M.img rootfs”报错&#xff1a; mount: rootfs: mo…...