【机器学习300问】134、什么是主成分分析(PCA)?

news2024/10/7 6:49:31

        假设你的房间堆满了各种各样的物品,书籍、衣服、玩具等等,它们杂乱无章地散落各处。现在,你想要清理房间,但又不想扔掉任何东西,只是希望让房间看起来更整洁,更容易管理。

        你开始思考,能否将物品按照某种逻辑分类,比如按颜色、大小或者用途来归类。这样,虽然物品还是那些物品,但通过归类,房间变得更加有序,你也可以更快地找到你需要的东西。

一、初步理解什么是主成分分析?

        主成分分析(Principal Component Analysis,PCA)是一种常用的无监督学习技术,用于降低数据维度并发现数据中潜在的模式。PCA的目标是通过线性变换将高维数据投影到一个低维的子空间,从而找到数据中最大方差的方向,即主成分。这样可以使得投影后的数据尽可能保留原始数据的信息,同时减少冗余和噪声。

        例如,在整理房间的例子中,我们可以将主成分分析(PCA)比作一种高效整理和优化存储空间的方法。你观察到某些物品经常一起出现或被一起使用,比如运动服和运动鞋,或者是电子书阅读器和充电器。这些物品之间的关系相当于数据中的相关性。接下来,你开始将这些物品分类,比如将所有的书籍放在一起,所有的衣物放在衣柜里,电子设备放在书桌上。这些类别可以视为数据中的“主成分”。

        分类之后,你不再需要记住每件物品的确切位置,而是只需要知道它属于哪个类别以及类别所在的大致区域。这减少了你记忆的负担,也减少了查找物品的时间。同样,PCA通过减少数据的维度,让我们能以更少的特征描述数据,同时尽量保持原有的信息量。

二、PCA算法的核心思想与优化目标

(1)PCA算法的核心思想

        PCA算法的核心思想可以理解为寻找一个新的坐标系,这个坐标系由数据的主要变化方向组成。在新的坐标系中,第一个主成分(第一个特征向量)代表了原始数据中方差最大的方向。第二个主成分则是与第一个主成分正交(即垂直)的方向中,方差第二大的方向,以此类推。这样,PCA通过一系列正交方向上的投影,找到了数据的主要变化趋势,并且这些方向之间没有相关性,实现了数据的“离相关”。

图中是二维数据降维到一维

        PCA的目标是通过上述步骤找到能够最大化数据方差的新坐标系,从而在保持尽可能多的原始信息的同时,减少数据的维度。这种方法在诸如图像压缩、生物信息学、金融分析等多个领域都有广泛应用。

(2)PCA算法的优化目标

PCA可以基于两种不同的思路进行优化来实现降维

① 最大方差

        在最大方差的思路下,PCA的目标是找到投影方向,使得数据在投影后具有最大的方差。换句话说,通过最大化数据在新坐标系上的方差,我们保留了数据中最多的信息,同时减少了数据中的冗余性。

投影到M上的点,明显比投影到N上的要分散(也就是方差更大)

        通过最大化方差,我们能够找到数据中主要的变化方向,即主成分,这些主成分代表了数据中最重要的特征和模式。因此,通过最大化方差,PCA能够保留数据中最具信息量的部分,实现高效的降维

② 最小损失

        另一种优化思路是通过最小化数据的重构误差或损失来实现降维。在这种情况下,我们尝试通过将数据从高维空间投影到低维空间并尽量减少重构误差,来保留数据的重要信息。

投影到M上的距离明显比投影到N上的距离要小

        通过最小化损失,PCA试图找到一个低维表示,使得在原始空间中的数据点在低维空间中能够被准确地重构。这种方法可以帮助解决数据噪音和冗余的问题,使得数据在较低维度下能够更好地表示。

三、PCA算法的步骤

(1)去中心化

        在执行PCA之前,首先需要对数据进行预处理。这一步骤主要是为了消除数据中的偏移,确保数据的均值为零。这样做是为了使PCA的效果不受数据尺度的影响,确保PCA能够正确地识别数据的主成分。

计算出数据中心点

        对于每一列(即每个特征)的数据,计算其平均值,然后从每一列的所有元素中减去该平均值。这样处理后,每一列数据的均值都变成了0。

将坐标系的原点移到数据中心点的过程叫做“去中心化”

        去中心化不会影响样本的分布性质,但会简化后续PCA降维算法的计算过程。

(2)计算协方差矩阵

        协方差矩阵反映了数据中各个特征之间的线性关系强度和方向。对于中心化后的数据,计算其协方差矩阵是PCA中的一个重要步骤。

协方差矩阵计算公式(二维降一维)

        使用中心化后的数据计算协方差矩阵。协方差矩阵是一个对称矩阵,其中的每一个元素表示两个特征之间的协方差。

(3)特征值分解

        特征值分解是对协方差矩阵进行的一种数学操作,目的是找到协方差矩阵的特征值和对应的特征向量。对协方差矩阵进行特征值分解,得到一组特征值和对应的特征向量。特征值表示了数据沿该特征向量方向的方差大小,而特征向量则指示了数据的变化方向。

(4)排序特征值

        根据特征值的大小进行排序,特征值越大,表示该特征向量方向上的数据方差越大,即数据在该方向上的变化越多。将(3)中得到的特征值从大到小排序,同时调整相应的特征向量顺序,以保持一致性。

(5)选取主成分

        根据实际需求和数据特性,选择前k个最大的特征值及其对应的特征向量作为主成分。这些主成分将构成新的坐标系,用于数据的降维。选择前k个特征值最大的特征向量,这k个特征向量将构成降维后数据的新坐标系。

(6)数据投影

        将原始数据投影到由选定的主成分构成的新坐标系中,完成数据的降维。使用选定的k个特征向量作为列向量,构建一个转换矩阵。然后,将中心化后的原始数据乘以这个转换矩阵,得到降维后的数据。

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

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

相关文章

Docker之jekins的安装

jekins官网地址:Jenkins Plugins (https://plugins.jenkins.io/) jekins 的docker 官方地址:https://hub.docker.com/r/jenkins/jenkins jekins 的docker 允许命令文档地址: docker/README.md at master jenkinsci…

Linux源码阅读笔记07-进程管理4大常用API函数

find_get_pid find_get_pid(...)函数功能:根据进程编号获取对应的进程描述符,具体Linux内核源码对应函数设计如下: 获取进程描述符,且描述符的count1,表示进程多一个用户 pid_task pid_task(...)函数功能&#xff1…

通达信短线抄底主升浪幅图指标公式源码

通达信短线抄底主升浪幅图指标公式源码: A1:REF(C,1); A2:SMA(MAX(C-A1,0),5,1)/SMA(ABS(C-A1),5,1)*1000; A3:BARSLAST(REF(CROSS("RSI.RSI1"(6,12,24),"RSI.RSI2"(6,12,24)),1)); A4:A2-LLV(A2,10); A5:(MA(A4,2)*3A4*13)/16; A6:IF(A5>1…

cuda 学习笔记4

一 基本函数 在GPU上开辟空间,无论定义的数据是float还是int ,还是****gpu_int,分配空间的函数都是下面固定的形式 (void**)& 1.函数定义,global void 是配套使用的,是在GPU上定义,也就是GPU上执行,CPU上调用的函数…

关于0xc000007b的一种解决方案

今天我在安装qview并运行时时,遇到了这个问题。 我在网上查找了许多解决方案,但它们大多都说是某些dll缺失或错误引起的。 这些说法应该是正确的,但我用了dll修复工具后,一点用都没有。 后来捣鼓半天后,我发现很可能…

Golang 百题(实战快速掌握语法)_2

返回集合中满足指定条件的最后一个元素 本实验将实现判断给定集合中的元素是否符合,并返回符合的最后一个元素。 知识点 forfmt.Error 适合人群 本课程属于基础课程。需要用户掌握 Go 语言编程基础知识、计算机基础知识和 Linux 环境的基本用法。 许可证 内容…

【可控图像生成系列论文(五)】ControlNet 和 IP-Adapter 之间的区别有哪些?

系列文章目录 【可控图像生成系列论文(一)】 简要介绍了 MimicBrush 的整体流程和方法;【可控图像生成系列论文(二)】 就MimicBrush 的具体模型结构、训练数据和纹理迁移进行了更详细的介绍。【可控图像生成系列论文&…

MySQL高级-索引-设计原则小结

文章目录 1、设计原则2、索引小结2.1、索引概述2.2、索引结构2.3、索引分类2.4、索引语法2.5、SQL性能分析2.6、索引使用2.7、索引设计原则 1、设计原则 针对于数据量较大,且查询比较频繁的表建立索引。针对于常作为查询条件(where)、排序&am…

东软睿驰总裁兼CTO杜强受邀出席 CICV 2024智能网联汽车技术首脑(CTO)闭门峰会

近日,第十一届国际智能网联汽车技术年会(CICV 2024)在北京举办,会议期间组织智能网联汽车技术首脑(CTO)闭门峰会,邀请40余位技术领袖围绕智能网联汽车产业生态建设以及智能网联汽车数据、算力和…

使用k8s变更线上版本号

第一步,在镜像仓库中找到历史版本号 第二步,在rancher中在工作负载里 第三步,在rancher找到这个版本号,可以更改之前的版本号 这样就可以很方便的退回到之前的版本了

【技巧】如何检查多个GPU之间是否支持P2P通信

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 需要用到cuda_samples:GitHub - NVIDIA/cuda-samples 该工具的详细解释可以看这个: 【知识】详细介绍 CUDA Samples 示例工程…

时间序列分析入门:概念、模型与应用【ARMA、ARIMA模型】

在这篇博客中,我们将全面探讨时间序列分析的基本概念和分类,深入理解平稳性及其检验方法,并介绍自回归模型(AR)、滑动平均模型(MA)、自回归滑动平均模型(ARMA)以及自回归…

吐血推荐!3款视频生成工具,全部国产,都免费

AI视频大模型的爆发,让创作爆款视频不再是专业人士的能力。 今天二师兄给大家推荐3款免费的视频生成工具。 01 可灵 推荐指数 : 五颗星 先看效果 可灵大模型测试 可灵大模型是快手AI团队自主研发的视频生成大模型,具备强大的视频创作能力&a…

FlinkX学习

FlinkX学习 FlinkX安装 由于flinkx已经改名chunjun 官网已不存在 (https://gitee.com/lugela/flinkx#flinkx)这里可以看到flinkx的操作文档 1、上传并解压 unzip flinkx-1.10.zip -d /usr/local/soft/2、配置环境变量 FLINKX_HOME/usr/local/soft/flinkx-1.10 export PATH$F…

PHP-CGI的漏洞(CVE-2024-4577)

通过前两篇文章的铺垫,现在我们可以了解 CVE-2024-4577这个漏洞的原理 漏洞原理 CVE-2024-4577是CVE-2012-1823这个老漏洞的绕过,php cgi的老漏洞至今已经12年,具体可以参考我的另一个文档 简单来说,就是使用cgi模式运行的PHP&…

零拷贝技术(zero copy),DMA,mmap,sendfile

在一些高性能的IO场景下我们经常能听到零拷贝技术,这是个不错的话题。 零拷贝指的是内核态与用户态之间的数据拷贝,而这两个区域的数据拷贝只能依靠CPU,但是CPU最重要的作用应该是运算。 一、DMA的由来 在没有DMA之前,磁盘的IO…

【NPS】哑终端设备如何实现域VLAN动态分配

在【NPS】微软NPS配置802.1x,验证域账号,动态分配VLAN(有线网络续篇)中,已经通过C3PL策略配置实现了802.1x验证没有通过时,自动分配一个Guest VLAN,以确保用户至少能够访问基本的网络服务。问题…

数字时代的文化革命:Facebook的社会影响

随着数字技术的飞速发展和互联网的普及,社交网络如今已成为人们日常生活中不可或缺的一部分。在众多社交平台中,Facebook作为最大的社交网络之一,不仅连接了全球数十亿用户,更深刻影响了人们的社会互动方式、文化认同和信息传播模…

展开说说:Android列表之RecyclerView

RecyclerView 它是从Android5.0出现的全新列表组件,更加强大和灵活。用于显示列表形式 (list) 或者网格形式 (grid) 的数据,替代ListView和GridView成为Android主流的列表组件。可以说Android客户端只要有表格的地方就有RecyclerView。 RecyclerView 内…

【linux】使用vnc连接远程桌面,需要安装tigervnc,并在服务端期待,然后在客户端使用tigervnc-viewer进行连接即可

vnc 远程设置方法 需要服务端安装软件: sudo apt install -y tigervnc-standalone-server# 先配置密码使用: tightvncpasswd启动服务,禁用本机 vncserver -localhost no -geometry 1924x1080 :1客户端安装软件: sudo apt insta…