PCA主成分分析 从零理解

news2024/11/19 18:34:46

一、PCA的目的

假设我们有一堆观测到的数据。
数据的格式是observation*feature,每一行是一个观测(也就是图里的一个点),每一列是这个数据的某个特征(即一个维度)。
假设数据矩阵是A,有m个观测和n个特征。那么我们的数据 A ∈ R m × n A \in \R^{m \times n} ARm×n
举例1:每一行是一个人类,每列分别是身高、体重等等。
举例2:每一行是一个细胞,每列是某一个基因。
数据在以特征张成的空间(每个维度都是一个特征的空间)中符合某种分布。
我们可以给这个数据画一个图(假设只有两个特征):
请添加图片描述
那么,PCA的目的就是,在空间里找到某一组正交基(一组PC),使得我们能够在更少的维度下,保留尽可能多的数据内的信息。

二、PCA的作用

大家可能或多或少听过,"PCA的作用是降维“。它降维的方法就是找到一组正交基,使得序号在前的基(也就是PC)包含更多的信息,然后选取前x个基,从而保留尽可能多信息(即损失尽可能少的信息)。
比如我们有1000张同样大小(200×200像素)的图片,那么把每张图片用一个向量表示(向量长度40000,前200个值是图片的第一行,200-400是图片的第二行,以此类推),再把每个向量/图片作为一行,每个像素点的值作为一列,就可以得到一个1000*40000的矩阵。
如果我们想把这些图片进行压缩,就可以对这个矩阵进行PCA,得到一组正交基;然后选取这些正交基的前n个,这样就得到了压缩过的1000张图片(1000×n)。
那么,PCA是如何实现的呢?实现的思路是什么?

三、PCA的思路

  1. 假设我们想把数据降维到1维。也就是把数据投影到一个方向上,使得数据在这个方向上保留的信息最多。
    如何体现”信息多“?可以有两种理解方法:
    ① 损失的信息少,也就是所有点到这个方向上的投影距离之和最小。
    projection error
    Image credit: [1]
    为了使投影距离之和最小,投影到的这条线一定是过数据的中心点的(就是mean点)。
    所以在做后续操作之前,我们需要把数据中心化,也就是 A = A − m e a n ( A ) A=A-mean(A) A=Amean(A)
    ② 保留的信息多。也就是当每个点投影到当前维度之后,所有投影点的方差最大。
    (为什么方差大就代表信息多?需要从方差的计算来思考。)
    V a r i a n c e = ∑ ( x i − x ˉ ) 2 m − 1 Variance =\frac{\sum\left(x_i-\bar{x}\right)^2}{m-1} Variance=m1(xixˉ)2,方差正比于所有点到均值点的距离平方和。
    这两种方法其实是等价的。
    请添加图片描述
    如上图,红线是投影目标向量,p是当前点的投影距离,d是投影点到中心点的距离,r是当前点到中心点的距离。
    我们把投影目标向量绕中心点旋转,r不变,有: r 2 = p 2 + d 2 r^2=p^2+d^2 r2=p2+d2。因此,最大化距离和最小化方差是在做同一个事情。
  2. 假设我们已经确定了降维到的前x维的方向,需要确定第x+1维的方向。
    那么首先,我们找到的方向必须和之前的x维正交。因为如果不正交,那么两个方向向量之间是有一部分”重复信息“的,会导致新的这个方向能够引入的新信息变少。
    其次,我们希望这个新方向在排除之前的维度所包含的信息之后,仍然包含最多信息的。(也就是投影距离最大,方差最小)
    以此类推,找到最多n个方向。

四、PCA的实现

了解了PCA的思路之后,我们就可以考虑怎么实现了。
目前常用的实现方式有两种:①基于协方差矩阵的,和②基于特征值分解(SVD)的。
先说方法:
①基于协方差矩阵
先求出A的协方差矩阵,然后对协方差矩阵进行特征值分解,得到的特征向量和特征值就是想要的PC及其对应的variance。
②基于特征值分解
对A进行特征值分解 A = U Σ V T A=U\Sigma V^T A=UΣVT,得到的V就包含想要的PC, Σ \Sigma Σ里面对应的奇异值大小就是PC的排序。

Q: 那么为什么要这样做,以及为什么基于协方差矩阵的V和基于特征值分解的V是相同的呢?
A: 把矩阵A(已经去中心化,后文提到的也都是去中心化的)投影到一个方向 v v v,可以表示为: A v Av Av。这就是矩阵A投影到向量v的结果。
如果我们想求投影点的方差,也就是 ∑ ( x i − x ˉ ) 2 m − 1 \frac{\sum\left(x_i-\bar{x}\right)^2}{m-1} m1(xixˉ)2,由于A已经去中心化, x ˉ = 0 \bar{x}=0 xˉ=0
所以方差就是 1 m − 1 × ∑ x i 2 \frac{1}{m-1}\times \sum{x_i^2} m11×xi2,也就是 1 m − 1 × ∣ ∣ A v ∣ ∣ 2 \frac{1}{m-1}\times ||Av||_2 m11×∣∣Av2
∣ ∣ A v ∣ ∣ 2 = ( A v ) T ( A v ) = v T A T A v ||Av||_2=(Av)^T(Av)=v^TA^TAv ∣∣Av2=(Av)T(Av)=vTATAv
因此,我们想要找到一个方向 v v v,使得 v T A T A v v^T A^TAv vTATAv最大。
v T A T A v = λ v^TA^TAv=\lambda vTATAv=λ,那么有 A T A v = λ v A^TAv=\lambda v ATAv=λv,即 v v v A T A A^TA ATA的特征向量。
所以,问题就变成了:试图找到使得 A T A A^TA ATA的特征值最大的特征向量
①当A是中心化的矩阵时,A的协方差矩阵为 A T A m − 1 \frac{A^TA}{m-1} m1ATA,基于谱定理[2]。所以对协方差矩阵进行特征值分解就可以得PC。
②基于SVD, A = U Σ V T , A T A = V Σ 2 V T A=U\Sigma V^T,A^TA=V \Sigma^2 V^T A=UΣVT,ATA=VΣ2VT。由于 V V V是正交矩阵,有 V T = V − 1 V^T=V^{-1} VT=V1,所以 V V V就是对 A T A A^TA ATA进行特征值分解得到的特征向量矩阵。

参考
[1] https://www.efavdb.com/principal-component-analysis
[2] https://stats.stackexchange.com/a/219344/371987

附:一个从浅到深讲解PCA的方法

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

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

相关文章

辉煌优配|刚刚!“中字头”再度爆发

今天早盘,A股全体持续震动收拾,上证50指数跌破2700点整数关口,沪深300亦失守4100点。 盘面上,国防军工、种业、中字头、电气设备等板块涨幅居前,前期抢手的人工智能、半导体、信创、软件服务等板块全线回调。北上资金净…

零售店铺管理系统有哪些作用?选择零售管理系统要注意这4大问题

零售店铺管理系统主要是帮助实体零售店提高销售效率、降低成本、提升服务质量和客户满意度。 对于零售店铺来说,选择一款合适的零售店铺管理系统,可以有效提高其管理效率和精准度,同时也有利于自家店铺在市场竞争中占据优势。 一、零售店铺管…

Keil系列教程02_新建基础软件工程

1写在前面 目前Keil的四款产品(软件):MDK-ARM、C51、C251、C166,在用法上极为相似,包括本文讲述的新建软件工程。 本文以目前(2018年10月)最新Keil MDK-ARM V5.26、STM32F103标准外设库为例&am…

晨控CK-FR208-PN与西门子PLC工业Profinet协议通讯指南

晨控CK-FR208-PN是一款支持标准工业Profinet协议的多通道工业RFID读写器,读卡器工作频率为13.56MHZ,支持对I-CODE 2、I-CODE SLI等符合ISO15693国际标准协议格式标签的读写。 读卡器同时支持标准工业通讯协议Profinet,方便用户通集成到PLC等…

电子模块|外控集成 LED 光源 WS2812模块---软件驱动stm32版

电子模块|外控集成 LED 光源 WS2812模块---软件驱动stm32版 模块简介单线归零码通讯方式24bit 数据结构 stm32 驱动 模块简介 WS2812是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个5050LED灯珠相同,每个元件即为一个像素点。像素点内部包含了智…

CxImage学习使用1:环境搭建

目录 前言 一、CxImage相关介绍 二、编译源码 三、将CxImage使用到自己的工程中 前言 CxImage是一个可以用于MFC 的C图像处理类库类,它可以打开,保存,显示,转换各种常见格式的图像文件,比如BMP, JPEG, GIF, PNG, TI…

“cnpm : 无法加载文件 C:\Users\xx\AppData\Roaming\npm\cnpm.ps1,因为在此系统上禁止运行脚本“ 解决办法

系统安全策略原因导致cnpm安装依赖包的时候提示以下错误,解决方案: 错误详情: cnpm : 无法加载文件 C:\Users\xx\AppData\Roaming\npm\cnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsof…

大家经常说的java八股文到底是什么?让我来总结一下吧!

八股文问题集合 面试必看java八股文 问题正在收录中,累了休息一会,如果有需要请,先关注,这几天会更帖子,答案后续补上 文章目录 八股文问题集合问题正在收录中,累了休息一会,如果有需要请&#…

AI大数据可视化EasyCVR视频融合平台的部署操作流程详解

EasyCVR视频融合平台基于云边端一体化架构,具有强大的数据接入、处理及分发能力,平台支持海量视频汇聚管理,能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频直播、云端录像、云存储、…

使用MyBatis实现CRUD操作

文章目录 简介(一)学习方向(二)学习事项 一,准备工作二,查询表记录(一)在映射器配置文件里引入结果映射元素(二)添加按姓名查询用户记录功能1,添加…

day02_第一个Java程序

在开发第一个Java程序之前,我们必须对计算机的一些基础知识进行了解。 常用DOS命令 Java语言的初学者,学习一些DOS命令,会非常有帮助。DOS是一个早期的操作系统,现在已经被Windows系统取代,对于我们开发人员&#xf…

5 个有效好用的恢复文件和照片的 Android恢复软件推荐

当我们使用移动设备时,有时会发现设备出现问题并不少见,但最好的 android 数据恢复应用程序可能会非常有帮助。虽然大多数电话故障只需一​​两天即可修复,但在某些情况下,电话几乎没电了,您无法访问宝贵的数据。幸运的…

知识图谱学习笔记——(三)知识图谱的存储与查询

一、知识学习 声明:知识学习中本文主体按照浙江大学陈华钧教授的《知识图谱》公开课讲义进行介绍,并个别地方加入了自己的注释和思考,希望大家尊重陈华钧教授的知识产权,在使用时加上出处。感谢陈华钧教授。 (一&…

分子共价对接

共价对接 随着人们对共价抑制剂的发现越来越重视,越来越多的软件开始支持共价抑制的虚拟筛选。常用的共价对接软件有CovDock,AutoDock4,FITTED,GOLD,ICM-Pro与MOE等。共价抑制剂的典型特征是配体的亲电部分&#xff08…

【Maven】修改编码格式的多种方式

文章目录 方式一方式二方式三是否生效 为什么修改? 中文操作系统编码为GBK,Maven安装后会使用系统默认编码,编译含有中文字符的UTF-8格式源码文件时就出现编码不匹配的问题 场景:使用Maven编译项目,虽然提示编译成功&…

python-day6(补充四:私有属性与函数)

私有属性与函数 私有属性与函数的用途如何定义私有属性与函数如何访问私有属性与函数 私有属性与函数的用途 在面向对象的封装中,私有的属性与函数其根本目的是防止它们在类的外部被使用,python中主要通过命名来进行区分。 把可能使用到的东西封装起来…

用requestAnimationFrame替代setInterval制作匀速动画

了解过事件循环机制的朋友应该知道,siteTimeout和setInterval并不是精准的时间间隔,他们要等待其他优先的执行队列执行完成以后才能继续执行。 于是就引入了一个新的动画执行方式-- window.requestAnimationFrame()。它告诉浏览器——你希望执行一个动画…

少儿编程 电子学会图形化编程等级考试Scratch二级真题解析(判断题)2022年9月

2022年9月scratch编程等级考试二级真题 判断题(共10题,每题2分,共20分) 26、程序中要判断角色是否碰到舞台边缘,可以使用运动模块中的“碰到舞台边缘”积木 答案:错 考点分析:考查积木分类,碰到舞台边缘积木是侦测模块中的积木而不是运动模块中的,所以错误 27、运行…

通信原理 数字基带信号之码间串扰

通信原理 数字基带信号之码间串扰目录 1.码间串扰 2.满足无码间串扰的条件 3.例题 1.码间串扰 2.满足无码间串扰的条件 nyquist带宽 Bfnw/2Π。 nyquist速率 RB2fn (最高码元传输速率)。 若RB满足等于nRB‘ n=1、2、3、4.....时 RB’为实际…

基于mybatis的网上招聘系统源码数据库论文

目 录 摘 要 Abstract 1 绪 论 1.1 开发背景 1.2 开发意义 1.3 国内外研究现状 1.4 论文结构 2 相关技术原理和开发工具 2.1 程序语言的选择 2.1.1 Java概述 2.1.2 Java特点 2.1.3 Servlet简介 2.2 Oracle数据库 2.3 B/S模式 2.3.1 B/S架构概…