机器学习---之PCA为什么使用协防差矩阵

2023-10-08 10:50

本文主要是介绍机器学习---之PCA为什么使用协防差矩阵,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PCA为什么要用协方差矩阵?

原创 2015年11月29日 19:04:07

       PCA方法是数据降维的重要手段之一,方法比较简单,就是将样本数据求一个维度的协方差矩阵,然后求解这个协方差矩阵的特征值和对应的特征向量,将这些特征向量按照对应的特征值从大到小排列,组成新的矩阵,被称为特征向量矩阵,也可以称为投影矩阵,然后用改投影矩阵将样本数据转换。取前K维数据即可,实现对数据的降维。

       假设样本数据有r维(组成一个r维向量),共有n个样本。组成r*n矩阵A,矩阵每一列是一个样本,行是各个不同的特征维度。求解协方差矩阵S=AAT(最好先将A进行每个维度上的数据进行中心化A→C再求协方差矩阵S=CCT),S是r*r的方阵,用X(j)表示样本数据的第j维数据,则求解协方差矩阵




其中表示两个维度之间的协方差

很显然S是个对称矩阵,求解S的特征向量以及对应的特征值,按照特征值大小依次排列特征向量,将这些特征向量(列向量)组成一个矩阵,被称为转换矩阵或者投影矩阵。如果只取前K列特征向量组成的矩阵P,再把原样本数据用投影矩阵转换到新的坐标空间A’=PTA,可以实现数据的降维。

 

△为什么要用协方差矩阵来做呢?

       虽然PCA降维方法我很早就知道,但是最近实验室老师让我看稀疏PCA方法解决他的三维人体建模的问题。我心里默默地在想,样本数据固定了,以上的S不就是定了吗?为神马还出来一个稀疏PCA?于是我就抱着理解原理本质的心理来重新看PCA,然后就发现一个关键的问题:PCA为什么要用协方差矩阵的特征向量矩阵来做投影矩阵呢?为神马啊为神马?想不通……这样做出来的投影矩阵一定能保证样本数据投影到另一个坐标系后,前几个坐标的值保证是最大特征?然后我找啊找,终于找到一个资料,尼玛……终于拨云见日啊~现在我用自己的理解用浅显易懂的描述来说明为嘛用协方差矩阵?!


在说PCA的协方差矩阵之前我们先来说说投影矩阵。


1. 关于投影矩阵/变换矩阵

       一个向量经过变换矩阵,只要变化矩阵的基分量之间是相互线性无关的就可以实现转换,什么叫线性无关呢?想象一下三维空间向量(a, b, c),每个基向量不共线就算是线性无关,当然还有一个条件,就是不能共面啊(不然其中一个基向量就可以用其他基向量来组合表示,他们组成的向量矩阵就不是满秩,不是3只有2)。扩展到N维空间就是N个基向量,每个基向量都不能由其他基向量线性组合得到。这种线性无关基向量组成的变换矩阵肯定是可逆的(方阵N*N的秩为N),可逆就可以实现两个坐标系的相互转换啊~


坐标转换1:

V1V2...Vn(均为列向量)是一组标准正交基,x1 x2..... xn是在该基下的一个坐标。则V1*x1+V2*x2+…+Vn*x={y1 y2......yn}T为该点在新基下的坐标。

其中这组新基为{1, 0, ..., 0}T,{0, 1, ..., 0}T…{0, 0, ..., 1}T


坐标转换2:

       若想将 {y1 y2......yn}T转换为在某个基V1V2...Vn下的坐标,只需左乘{V1V2...Vn}-1即可。

       一个样本在投影矩阵P的作用下,转换到另一个坐标空间,相当于求得该样本向量在P不同列向量的投影坐标。

       一个坐标系转换到另一个坐标系,转换矩阵其实不需要标准化(向量单位化,即向量的模为1),也不需要正交基的矩阵(两两向量正交,即相乘为0),只要满足上述“线性无关”的要求,数据就可以从一个度量空间转换到另一个空间,而且可以相互转换A'=P*A,A=P-1A',转换矩阵为P,而A和A'是两个空间中的不同表示。只是正交基和标准基会有一些好处:

  • 如果P是标准化矩阵,由于P-1P=I(恒等式),PTP=I(标准化矩阵性质),就会有PT=P-1,求解坐标转换速度更快,因为求转置矩阵比求逆矩阵快很多。
  • 如果P是正交矩阵,基向量两两正交,说明两个向量相关性很小,相当于数据在这两个维度上的相关性很小。线性无关不等于不相关,一个基向量在另一个基向量上有投影值,说明
  • 更进一步,标准正交矩阵更好,结合了以上两个优点,所以PCA求出来的特征向量矩阵是标准正交矩阵是一个大大大好的东西。

 

2. 协方差矩阵:

       【我们希望去除的信息:

       1. 噪声:我们常说“噪音污染”,意思就是“噪声”干扰我们想听到的真正声音。同样,假设样本中某个主要的维度A,它能代表原始数据,是“我们真正想听到的东西”,它本身含有的“能量”(即该维度的方差),本来应该是很大的,但由于它与其他维度有那么一些千丝万缕的相关性,受到这些个相关维度的干扰,它的能量被削弱了,我们就希望通过PCA处理后,使维度A与其他维度的相关性尽可能减弱,进而恢复维度A应有的能量,让我们“听的更清楚”! 

       2. 冗余:冗余也就是多余的意思,就是有它没它都一样,放着就是占地方。同样,假如样本中有些个维度,在所有的样本上变化不明显(极端情况:在所有的样本中该维度都等于同一个数),也就是说该维度上的方差接近于零,那么显然它对区分不同的样本丝毫起不到任何作用,这个维度即是冗余的,有它没它一个样。

       降维的目的就是“降噪”和“去冗余”。“降噪”的目的就是使保留下来的维度间的相关性尽可能小,而“去冗余”的目的就是使保留下来的维度含有的“能量”即方差尽可能大。那首先的首先,我们得需要知道各维度间的相关性以及个维度上的方差啊!那有什么数据结构能同时表现不同维度间的相关性以及各个维度上的方差呢?自然是协方差矩阵!

       协方差矩阵度量的是维度与维度之间的关系,而非样本与样本之间。协方差矩阵的主对角线上的元素是各个维度上的方差(即能量),其他元素是两两维度间的协方差(即相关性)。我们要的东西协方差矩阵都有了,先来看“降噪”,让保留下的不同维度间的相关性尽可能小,也就是说让协方差矩阵中非对角线元素都基本为零。达到这个目的的方式自然不用说,线代中奖的很明确——矩阵对角化。】

       以上就是为什么要用协方差矩阵的原因!

【而对角化后得到的矩阵,其对角线上是协方差矩阵的特征值,它还有两个身份:

  • 首先,它还是各个维度上的新方差;
  • 其次,它是各个维度本身应该拥有的能量(能量的概念伴随特征值而来)。
这也就是我们为何在前面称“方差”为“能量”的原因。也许第二点可能存在疑问,但我们应该注意到这个事实,通过对角化后,剩余维度间的相关性已经减到最弱,已经不会再受“噪声”的影响了,故此时拥有的能量应该比先前大了。

看完了“降噪”,我们的“去冗余”还没完呢。对角化后的协方差矩阵,对角线上较小的新方差对应的就是那些该去掉的维度。所以我们只取那些含有较大能量(特征值)的维度,其余的就舍掉即可。


       那为什么协方差矩阵求解出来的特征矩阵就能做到以上这点呢?且说我们的目的是:协方差矩阵“对角化”,不如说是我们需要找到一个转换矩阵,使得新的协方差矩阵能够尽量的对角化,即找到一个转换矩阵P使得A→A'=PA,使得新的协方差

       S=(A')(A') T = (PA) (PA)T= (PA)(ATPT) = P(AAT)PT= Λ (Λ为对角矩阵)

       下面就是数学求解的问题。

 

3. PCA与SVD关系

       如果P是一个标准正交矩阵,以上的P(AAT)PT=Λ可以转化为:P-1P(AAT)PTP= P-1ΛP 即S=AAT= P-1ΛP看出什么了吗?看出什么了吗?这就是矩阵SVD分解啊……

 

SVD

a)方阵的分解

      Sr*r方阵,则存在以下矩阵分解

其中U的列为S的特征向量,Λ为对角矩阵,其中对角线上的值为S的特征值,按从大到小排列:

 

      如果S是对称方阵,则存在

      其中U的列为矩阵S单位正交特征向量仍表示对角矩阵,其中对角线上的值为S的特征值,按从大到小排列。最后,QT=Q-1,因为正交矩阵的逆等于其转置

 

b)奇异值分解

      上面讨论了方阵的分解,但是在LSA中,我们是要对Term-Document矩阵进行分解,很显然这个矩阵不是方阵。这时需要奇异值分解对Term-Document进行分解。奇异值分解的推理使用到了上面所讲的方阵的分解。

      假设Am*n矩阵,Um*m矩阵,其中U的列为AAT的正交特征向量,Vn*n矩阵,其中V的列为ATA的正交特征向量,再假设rA矩阵的秩,则存在奇异值分解:

A= UΣVT

其中AATATA的特征值相同,为λ1,λ2, …, λr

Σm*n,其中,其余位置数值为0Σii的值按大小降序排列。以下是Σ的完整数学定义:

       σi称为矩阵A的奇异值。

      A乘以其转置矩阵AT得:AAT=(UΣVT)(VΣUT)=UΣ2UT正是在上面讨论过的对称矩阵的分解。

      奇异值分解的图形表示:


从图中可以看到Σ虽然为m*n矩阵,但从第n+1行到m行全为零,因此可以表示成n*n矩阵,又由于右式为矩阵相乘,因此U可以表示为m*n矩阵,VT可以表示为n*n矩阵。

 

       回归到PCA,需要找到一个转换矩阵P使得P(AAT)PT=Λ也就是对S=AAT= P-1ΛP进行对称矩阵的分解,由以上知识得:P-1为矩阵S的标准正交特征向量的逆矩阵,所以先求解AAT的标准正交特征向量(列向量为特征向量),求逆只要求转置即可。

       以上就是为什么要用协方差矩阵以及它对应的特征向量原理。end!

 

参考资料:

1. http://wenku.baidu.com/link?url=Q28-Q3AuNGAtO6Rq3UxvkZ3AlvRnZaPChnKDoZxfmUKa09HHPeVI4rVpIBr4S7u3DtxPLqMyoWaa-N5K-7FIB0cyqQuufXEQ1ghBQo2-lLS

2. http://blog.csdn.net/wangran51/article/details/7408414

3. http://www.cnblogs.com/tclikang/archive/2012/12/05/2803506.html

4. http://blog.csdn.net/sunuechao/article/details/12717771

5. http://m.blog.csdn.net/blog/Lu597203933/45898411

转载:http://blog.csdn.net/babywong/article/details/50085239

读上面文章总结:

  • PCA的目的:1.就是为了减少一些相关性比较大的特征向量(同一样本间的降噪),2.降低冗余性(不同样本间的同一维特征,它们之间基本上没什么差别,即它对分类的贡献不大),防止过拟合。
  • 做法:既然要减少一些相关性比较大的特征,第一步就要计算,每个维度相关性比较大的特征啊
  • 用到:所以就要用到协防差矩阵咯,找每个维度特征之间的相关性
  • 找到了后怎么办?:找到了后,要使相关性降低或者根本部相关啊,那就把协防差矩阵除对角线以外的元素都置0,也就是将协防差矩阵对角化。
  • 如何对角化?:那就是通过一个矩阵变换,使原始矩阵变成新的矩阵,这个新的矩阵的协防差矩阵是对角矩阵就好了
  • 如何变换?:就是找到和原始矩阵相乘的矩阵,其实通过上文可以发现,就是协防差矩阵的特征矩阵。
  • 结果:这样一乘后除对角线以外的元素基本上都归0了,也就是同一样本间各个维度的相关性已经降到了最低,即完成了降噪。
  • 不够:为什么不够呢,因为之前只是完成了降噪,却没有完成减少冗余啊,冗余是不同样本间的。
  • 怎么减少冗余呢?:因为协防差矩阵的特征矩阵是的对角线元素是按照特征的从大到小的降序排列的,即各个维度的方差从大到小排列,即冗余性从小到大排列(方差越大,数据浮动越大,越不相似,冗余度越低),所以把那些冗余度高的维度去掉,即方差比较小的维度去掉,所以就是我们常说的降维了。

这篇关于机器学习---之PCA为什么使用协防差矩阵的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/164754

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma