谈主成分分析/因子分析中的特征值“矩阵近似”

news2025/2/2 16:43:09

主成分分析和因子分析是数据降维的常用手段,其中以特征值为载体,在不断降维“近似”原本的协方差矩阵。

CSDN中一些文章在介绍这个问题或者叫“特征值分解”时,讲得都比较学术化,今天用一个小例子,还是面向新人,来引导理解“特征值分解”和“矩阵近似”(图像近似 也是同样的原理)。

在主成分分析和因子分析中,都是从协方差矩阵入手的。(PS:有的人会说数据先单位化,然后求出相关矩阵,随后从相关矩阵入手。其实,数值上是这样算,但是原理说的不对。主成分分析和因子分析的入手点一定是协方差矩阵,之所以能够使用相关系数矩阵,那是因为单位化后的数据,它的协方差矩阵和相关系数矩阵是相等的。)

咱们还是先介绍例子,然后再讲原理。如果你的理论基础好,后面的原理一看就明白了。

有一个单位化后的协方差矩阵如下:

10.80.6
0.810.4
0.60.41

它的3个特征值分别是如下:

特征值2.214934720.62264180.16242348

3个特征值对应的单位化的特征向量如下(每一列对应一个特征值,与上面的特征值相对应):

特征向量
0.6345775-0.15497890.75716113
0.5843738-0.5449251-0.6013018
0.50578520.82403773-0.2552316

我们知道,原始矩阵可以使用特征向量矩阵加上特征值矩阵进行等价计算,也就是下面的公式:

A=P*\Lambda *P^{-1}

其中,P 是这个矩阵 A 的特征向量组成的矩阵,Λ 是特征值组成的对角矩阵,Λ里面的特征值可以由大到小排列后面用。

由于原始矩阵A是对角矩阵,所以,由特征向量组成的矩阵P是正交矩阵。所以,P的逆矩阵P^(-1)就是P的转置矩阵P'。

这样,上面的公式就变为:

A=P*\Lambda *P'

下面开始对原始协方差矩阵A的“近似”实验。

当我们用到全部3个特征值和对应的特征向量来计算时,这是一个100%对原始矩阵A进行了还原,即

 这个计算下得到的就是原始的矩阵A:

10.80.6
0.810.4
0.60.41

下面,我们不用3个特征值和特征向量,减少为用2个特征值和对应的特征向量,也就是:

 这个计算下得到的就是对原始矩阵A只采用2个特征值和特征向量进行近似的结果,近似的结果如下:

0.9070.8740.631
0.8740.9410.375
0.6310.3750.989

最后,我们不用2个特征值和特征向量,减少为只用1个特征值和对应的特征向量,也就是:

 这个计算下得到的就是对原始矩阵A只采用1个特征值和特征向量进行近似的结果,近似的结果如下:

0.8920.8210.711
0.8210.7560.655
0.7110.6550.567

可以看到,对原始矩阵A的“近似”效果来看,只采用1个特征值来近似,图像有点失真的太多了。而采用2个特征值来近似的矩阵结果,矩阵近似的还算可以。

接下来,谈一下采用2个特征值来近似的矩阵结果的方差解释占比为多少?用近似矩阵的主对角线求和=0.907+0.941+0.989=2.838。而原始矩阵A的主对角线求和=1+1+1=3。所以,近似矩阵的方差解释率为 2.838/3=94.6%,这个数值也就是最大的2个特征值之和除以3的结果,即 (2.21493472+0.6226418)/3=94.6%。

这就是利用特征值对原始协方差矩阵进行不同“像素”近似的结果。

所以,关于数据降维,我们可以从多个角度去理解这件事,而上面提到的比较直观的矩阵“近似”的角度,从学术上讲不一定很严谨,但是对于给新手一个直观的感性认识,那是相当有帮助的,供新人参考。

  (An Actuary)

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

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

相关文章

Redis高可用之哨兵机制实现细节

Redis高可用之哨兵机制实现细节 本文来自我的 technotes [1] Redis篇,欢迎你常来逛逛。 正文 在上一篇的文章《Redis高可用全景一览》中,我们学习了 Redis 的高可用性。高可用性有两方面含义:一是服务少中断,二是数据少丢失。主…

【树莓派不吃灰】兄弟连篇⑥ Linux系统进程管理

目录1、进程查看1.1 ps1.2 top1.3 pstree2、终止进程2.1 kill2.2 killall2.3 pkill3、工作管理4、系统资源查看4.1 vmstat 监控系统资源4.2 dmesg 开机内核检测信息4.3 free 查看内存使用4.4 查看cpu信息4.5 uptime4.6 uname4.7 判断当前系统位数4.8 查询当前linux发行版本4.9 …

Windows及Kail安装配置

apache在kali环境搭建 Kali虚拟机中是包含有Apache的,在/etc目录下ls即可显示出来, 所以这里只需要进行配置就可以了。 图1.1 Apache2目录 打开Apache服务,开启后可以使用status命令查看服务状态。 /etc/init.d/apache2 start /etc/init.d…

【5】控制语句

指针 Go中不用“->”运算符,用的是 “.” 选择符“&”:取地址符“*”:访问目标对象符默认值为:nil (不是NULL)、- -:作为语句,只可以自己放一行,而且放在右边(不是表达式) …

一款强大的API接口文档管理工具(Smart-Doc + Torna)

【本文由龙飞同学供稿】 在团队协作开发项目的时候,接口文档承担着向其他开发人员说明接口相关信息的重要任务,因此,一份清晰而又相近的接口文档至关重要。 但是,写接口文档的痛苦想必各位开发人员都体验过,明明写接…

在职读研有意义么?来社科院与杜兰大学金融管理硕士项目探寻答案

在职场当我们遇到变化,尤其是发展上有瓶颈期的时候,我们会寻找向内突破,通过提升自己的核心竞争力来应对,通过再学习来增加自身的优势。那么在职读研有意义吗?我们来社科院与杜兰大学金融管理硕士项目来探寻。 一、读在…

Postman接口测试之Mock快速入门

一、Mock简介 1.Mock定义 Mock是一种比较特殊的测试技巧,可以在没有依赖项的情况下进行接口或单元测试。通常情况下,Mock与其他方法的区别是,用于模拟代码依赖对象,并允许设置对应的期望值。简单一点来讲,就是Mock创建…

【专业数据】八.2020~2022年北京交通大学【人工智能】专业复试线/分数线差/计划招生数/复试数/录取数/复试比例/录取率

文章目录 1.专业介绍2.2020-2022年国家线/复试线/分数线差2.1.数据总览2.2.数据指标2.2.1.复试分数线2.2.2.分数线差3.2020-2022年计划招生数/复试数/录取数/复试比例/录取率3.1.数据总览3.2.数据指标3.2.1.复试比例3.2.2.录取率4.参考资料欢迎订阅本专栏:《北交计算机复试经验…

python+appium(4)

conftest进阶使用 思路:我们平时导包多,而且经常使用某一段代码,一般我们使用封装的思想进行优化,pytest中conftest模块提供了更高效的方法 你可以添加任何想一次性封装的代码,这里吧代码变成变量,需要使…

Android APP 自动化测试搭建:Appium + Genymotion + [Robot Framework] Open Application

Android APP 自动化测试搭建: Appium Genymotion [Robot Framework] Open Application1. 安装 Android SDK2. 安装 ADB(Android Debug Bridge)3. 配置 platform-tools 目录(1) 复制 adb 等工具(2) 添加 apksigner.jar4. 配置 Appium Server…

C语言—函数

函数&#xff1a;将代码块封装成一个个不同的函数&#xff0c;在使用时可以多次的调用&#xff0c;不需要关心内部的实现&#xff1b; #include <stdio.h>void MyPrint() {printf("&&&&&&&&&&&\n");printf("…

BaseDet: 走过开发的弯路

BaseDet 开源啦&#xff01;该 repo 提供了一些经典的检测 SOTA 模型以及相关组件&#xff0c;欢迎大家按需取用~~GitHub&#xff1a;https://github.com/megvii-research/basedetMegStudio 使用示例&#xff1a;https://studio.brainpp.com/project/28826?nameBaseDet%E4%BD%…

重磅!TDengine 3.2.0 正式发布

近日&#xff0c;TDengine 3.0.2.0 正式发布了。这是自今年 8 月份 TDengine 3.0 发布以来的第一个重要改进版本。 TDengine 3.0 带来了几大核心特性&#xff0c;包括云原生架构、流式计算&#xff0c;还增强了数据订阅功能&#xff1b;更重要的是&#xff0c;3.0 系列版本开始…

Python是个什么鬼?为什么那么多人都要学它?真的有这么牛吗?

为什么那么多人选择学习python&#xff1f; Python在人工智能、大数据、自动化运维、全栈开发等方面具有独特的优势。随着Python继续占据编程语言主流的趋势&#xff0c;全国各城市的招聘岗位和薪酬将大幅增加。此外&#xff0c;随着人工智能在中国的投资和规划&#xff0c;对…

C++ Primer 第三章 Strings, Vectors, and Arrays

C Primer 第三章 Strings, Vectors, and Arrays3.1. Namespace using Declarations3.2. Library string Type3.2.1. Defining and Initializing stringsDirect and Copy Forms of Initialization3.2.2. Operations on stringsReading and Writing stringsUsing getline to Read…

【图像处理】opencv | 形态学运算:腐蚀,膨胀,开运算,闭运算| 二值图像处理

文章目录前言一、腐蚀和膨胀1.1腐蚀1.2膨胀二、开运算与闭运算三、礼帽与黑帽前言 参考视频&#xff1a;opencv教学 参考教材&#xff1a;《数字图像处理基础》 我的代码基本是跟着B站的视频里面敲了一遍&#xff0c;然后结合教材对指定区域做了一些加强学习 一、腐蚀和膨胀 …

华为云APIArts:API全生命周期一体化解决方案,帮助您端到端呵护您的API

摘要&#xff1a;华为云API Arts是API设计、API开发、API测试、API托管、API运维、API变现一体化协作平台&#xff0c;通过维护API各开发阶段数据高度一致&#xff0c;支持开发者高效实现API全流程一站式体验。 伴随数字化浪潮的到来&#xff0c;应用编程接口(API)已经成为一个…

【MySQL】2.MySQL库操作

文章目录1.0 MySQL基本使用1.1 理解数据库操作2.0 MySQL数据库操作详解2.1创建数据库2.2 字符集和校验规则2.2修改数据库2.3删除数据库2.4查看数据库链接1.0 MySQL基本使用 1.1 理解数据库操作 查看数据库配置文件 指令: vim /etc/my.cnf 登录数据库 指令&#xff1a; mysql…

[第十三届蓝桥杯/java/算法]A——排列字母

&#x1f9d1;‍&#x1f393;个人介绍&#xff1a;大二软件生&#xff0c;现学JAVA、Linux、MySQL、算法 &#x1f4bb;博客主页&#xff1a;渡过晚枫渡过晚枫 &#x1f453;系列专栏&#xff1a;[编程神域 C语言]&#xff0c;[java/初学者]&#xff0c;[蓝桥杯] &#x1f4d6…

机器人开发--设计范式

机器人开发--设计范式1 概念范式特点2 三种范式2.1 机器人基元&#xff1a;感知&#xff08;sense&#xff09;、规划&#xff08;plan&#xff09;、执行&#xff08;act&#xff09;2.2 范式分类分级范式 hierarchical paradigm反应范式 reactive paradigm混合范式 hybrid pa…