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

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

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

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

        主成分分析(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.mzph.cn/web/35460.shtml

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

相关文章

深入解读 ThreadLocal 源码及其在 ThreadLocalContext 中的使用

深入解读 ThreadLocal 源码及其在 ThreadLocalContext 中的使用 ThreadLocal 是 Java 中用于提供线程局部变量的一种机制,通过为每个线程提供独立的变量副本,保证了线程之间的数据隔离性。本文将深入解读 ThreadLocal 的源码,并展示其在 Thr…

以数治税时代来临,企业如何应对?

全电发票是数字经济时代发票的新形态,顺应了数字经济潮流。现如今,国家正全力推动行业数字化进程,预计,2025年将基本实现发票全领域、全环节、全要素电子化,实现税务执法、服务、监管与大数据智能化应用深度融合、高效…

Spring事务的源码底层实现

文章目录 事务理论执行过程EnableTransactionManagement底层实现 事务 在线流程图 理论执行过程 通过事务管理器创建一个连接对象connection1设置事务隔离级别、是否只读等conn1.autocommit(false)将conn1存入ThreadLocal中Map<DataSource,Connection>执行目标方法、多…

Session会话与请求域的区别

session会话和请求域&#xff08;也称为request域&#xff09;都是用于存储和管理用户特定信息的重要概念&#xff0c;但它们在作用范围和生命周期上有显著的不同。 请求域 (Request Domain) 作用范围&#xff1a;请求域是面向单次请求的。每次HTTP请求都会创建一个新的request…

Java中的程序异常处理介绍

一、异常处理机制 Java提供了更加优秀的解决办法&#xff1a;异常处理机制。 异常处理机制能让程序在异常发生时&#xff0c;按照代码的预先设定的异常处理逻辑&#xff0c;针对性地处理异常&#xff0c;让程序尽最大可能恢复正常并继续执行&#xff0c;且保持代码的清晰。 Ja…

算法刷题日志 —— 数组和位运算

文章目录 [461. 汉明距离](https://leetcode.cn/problems/hamming-distance/submissions/542447020/)[448. 找到所有数组中消失的数字](https://leetcode.cn/problems/find-all-numbers-disappeared-in-an-array/submissions/)[136. 只出现一次的数字](https://leetcode.cn/pro…

最长回文串

描述&#xff1a; 最长回文串 思路&#xff1a; 统计每个字母出现次数&#xff0c;如果是偶数&#xff0c;ret x;如果是存在奇数的话&#xff0c;就可以放在中间&#xff0c;ret 1. 代码&#xff1a; class Solution { public:int hash[200];int longestPalindrome(str…

记一次rocketMq根据配置文件读取listener consumerGroup异常

记一次rocketMq根据配置文件读取listener consumerGroup异常 引现象处理 引 rocketMq通常需要配置topic和consumerGroup&#xff0c;而这两个参数往往是不会直接定值写死&#xff0c;而是通过application配置文件配置变量的方式来注入。 现象 今天新增了几个topic和consumer…

AI智能修复视频,垃圾画质也变高清 HD——牛小影

很多时候&#xff0c;从网上下载的视频或监控视频都是模糊的。有什么方法或者软件可以让哪些模糊的视频恢复清晰吗&#xff1f;今天就给大家推荐一个可以使模糊的视频变清晰的软件。 我们都知道用PS或者一些修复工具可以修复模糊的图片&#xff0c;但是很多人不知道的是视频也可…

构建LangChain应用程序的示例代码:46、使用 Meta-Prompt 构建自我改进代理的 LangChain 实现

Meta-Prompt 实现 摘要&#xff1a; 本文介绍了 Noah Goodman 提出的 Meta-Prompt 方法的 LangChain 实现&#xff0c;该方法用于构建能够自我反思和改进的智能代理。 核心思想&#xff1a; Meta-Prompt 的核心思想是促使代理反思自己的性能&#xff0c;并修改自己的指令。…

上班族要怎么挑选智能猫砂盆?今年最受欢迎的牌子都在这里了!

对于上班族来说&#xff0c;猫砂盆里的猫屎到底该如何是好&#xff0c;放到下班回来再铲&#xff0c;猫砂的臭味早就飘满屋子&#xff0c;想立刻铲掉吧&#xff0c;班不要上啦&#xff1f;可是不铲就会生细菌&#xff0c;谁也不想花个几千块去给猫咪看病吧&#xff0c;谁不希望…

运算逻辑符的短路特性

在开发时遇到了这样一个问题&#xff1a; public boolean isPasswordNullOrEmpty(Context context) {return getPassword(context) ! null && !getPassword(context).isEmpty; } 这个方法想要实现的效果是获取一个password是否为空的状态&#xff0c;但会出现报错&am…

Linux:进程和计划任务管理

目录 一、程序和进程 1.1、程序 1.2、进程 1.3、线程 1.4、协程 二、查看进程相关命令 2.1、ps命令&#xff08;查看静态的进程统计信息&#xff09; 第一行为列表标题&#xff0c;其中各字段的含义描述如下 2.2、top命令&#xff08;查看进程动态信息&#xff09; 2…

商城积分系统的设计方案(上)-- 需求分析

一、背景 用户在参与公司的促销活动&#xff0c;比如邀请用户下单支付&#xff0c;可以获得虚拟货币。它可以用于解锁学习课程。 商品在定价的时候&#xff0c;需支持虚拟货币&#xff0c;用户在购买该商品的时候&#xff0c;可使用虚拟货币进行支付。 在电商体系中&#xf…

等保2.0自查表,扩展部分

等保2.0自查表&#xff0c;扩展部分&#xff0c;参考标准&#xff1a; GB∕T 22239-2019 《信息安全技术 网络安全等级保护基本要求》 GB∕T 28448-2019 《信息安全技术网络安全等级保护测评要求》 云计算安全 层面 控制点 检查项 三级要求 二级要求 安全物理环境 基础…

android:exported=“false“

书籍&#xff1a; 《第一行代码 Android》第三版 开发环境&#xff1a; Android Studio Jellyfish | 2023.3.1 问题&#xff1a; A launchable activity must be exported as of Android 12, which also makes it available to other apps 新建的activity中的android:exp…

PID算法介绍以及代码实现过程说明

写在正文之前 在上一篇文章就说会在这两天会基于PID写一个文章&#xff0c;这里的原理部分值得大家都看一下&#xff0c;代码部分的实现是基于python的&#xff0c;但是对于使用其他编程语言的朋友&#xff0c;由于我写的很通俗易懂&#xff0c;所以也值得借鉴。 一、PID算法…

最大流的学习代码,匹配问题的学习 使用c++

使用一个例子学习最大流和匹配问题&#xff0c;假如某地有n个出租车司机和m个正在打车的乘客&#xff0c;他们应该如何匹配&#xff1b; #include <iostream> // 用于输入输出 #include <vector> // 用于动态数组 #include <queue> // 用于广度优先…

linux基于wifi,Xshell的远程连接

最近有个比赛&#xff0c;要使用ros小车但是系统是ubuntu20.04无桌面系统刚开始接触linux的我啥都不会&#xff0c;就一个简单的连接wifi都搞了3天才搞通。再此进行一个总结。参考博客原文链接&#xff1a;https://blog.csdn.net/qq_51491920/article/details/126221940 一、什…

短说V4.1.5及PC端V3.1.4正式版发布公告

Hi 大家好&#xff0c; 我是给你们带来惊喜的运营小番茄。 本期更新为短说 4.1.5和PC端3.1.4的正式版。 本次修复上个版本中的问题和功能优化&#xff0c;以及新增了如下功能&#xff1a; PC端支持发布秀米帖&#xff0c;可支持部分秀米格式&#xff1b;后台管理类消息新增…