协方差矩阵与主成成分分析(整理后)
利用协方差阵求取主成分的步骤和公式

利用协方差阵求取主成分的步骤和公式哎呀,这可是个大学问啊!今天咱就来聊聊如何利用协方差阵求取主成分,让你的数据变得更加简洁明了。
别着急,我们一步一步来,先来看看这个题目的含义。
咱们得了解什么是协方差阵。
协方差阵就是一个矩阵,它表示两个变量之间的相关性。
简单来说,如果两个变量的变化趋势相同,那么它们的协方差就是正数;如果变化趋势相反,协方差就是负数;如果完全不相关,协方差就是0。
有了协方差阵,我们就可以求出主成分了。
那么,如何求主成分呢?这里就涉及到一个叫做“特征值分解”的魔法操作。
想象一下,你手里有一盒巧克力,里面有各种各样的口味,但是你不知道哪个是最好吃的。
这时候,你可以把这些巧克力混在一起,然后尝一尝,看看哪一种味道最受欢迎。
这就是特征值分解的原理。
我们把数据矩阵和协方差阵混在一起,然后对它们进行特征值分解,就可以找到最重要的成分了。
那么,特征值分解到底是什么样子呢?咱们来举个例子。
假设你有一个数据矩阵A,它的第i行第j列的元素是A[i][j]。
那么,A的特征值就是A[i][j]与A[j][i]的乘积除以它们的模长。
而A的主成分就是那些最大的特征值对应的列向量。
现在,我们已经知道了如何求主成分,那么接下来就是如何用协方差阵来求主成分了。
这里有一个小技巧:我们可以把协方差阵看作是一个“中心矩阵”。
也就是说,我们要找的主成分,其实就是协方差阵中最中间的那个元素所对应的列向量。
那么,如何找到这个“中心元素”呢?这里就涉及到一个叫做“奇异值分解”的魔法操作。
想象一下,你手里有一盒巧克力,里面有各种各样的口味,但是你不知道哪个是最好吃的。
这时候,你可以把这些巧克力混在一起,然后尝一尝,看看哪一种味道最受欢迎。
这就是奇异值分解的原理。
我们把协方差阵进行奇异值分解,就可以找到最重要的成分了。
那么,奇异值分解到底是什么样子呢?咱们来举个例子。
假设你有一个协方差阵B,它的第i行第j列的元素是B[i][j]。
那么,B的奇异值就是B[i][j]与B[j][i]的乘积除以它们的模长。
利用协方差阵求取主成分的步骤和公式

利用协方差阵求取主成分的步骤和公式在现代统计学中,主成分分析(PCA)是一种常用的数据降维方法。
它通过将原始数据投影到一个新的坐标系,从而实现对数据的简化和可视化。
PCA的原理基于协方差矩阵,协方差矩阵是一个描述数据之间关系的矩阵。
在这个过程中,我们需要利用协方差阵求取主成分,以下是详细的步骤和公式:我们需要计算数据的均值。
均值是一个重要的特征,它可以帮助我们消除数据中的量纲影响。
例如,如果我们有一个长度为n的数据向量x,那么它的均值就是x的平均值:均值= (1/n) * Σx_i接下来,我们需要计算协方差矩阵。
协方差矩阵是一个描述数据之间线性关系的特征矩阵。
对于一个n维数据向量x,它的协方差矩阵可以表示为:协方差矩阵 = (1/(n-1)) * Σ((x_i μ) * (x_j μ))其中,μ是数据向量的均值,Σ表示求和。
需要注意的是,协方差矩阵的上三角部分是正定的,这意味着我们可以直接求出它的特征值和特征向量。
这些特征值和特征向量构成了主成分。
为了求解协方差矩阵的特征值和特征向量,我们可以使用奇异值分解(SVD)。
奇异值分解是一种将矩阵分解为三个矩阵的乘积的方法。
对于一个n×n的矩阵A,它的奇异值分解可以表示为:A = U * S * V^T其中,U、S和V分别是正交矩阵,且S是一个对角矩阵,其对角线元素称为奇异值。
我们需要找到最大的奇异值对应的特征向量,这个特征向量就是我们要找的主成分。
具体来说,主成分的方向是由最大奇异值对应的特征向量确定的。
接下来,我们需要计算主成分的方差。
主成分的方差可以通过协方差矩阵的最大奇异值来表示。
设最大奇异值为λ1,那么主成分的方差就是:主成分方差= λ1^2 / (n-1)我们可以将原始数据投影到主成分上。
具体来说,对于一个n维数据向量x,它在第一个主成分上的投影就是:x_1 = x * Σ_j^0 * V^T_j^0 * S^(0/2) * U^(0,0)其中,Σ_j^0表示j=1,2,...,n-1时的特征值之和。
主成分相关矩阵与协方差矩阵

主成分相关矩阵与协方差矩阵主成分分析是一种常用的降维技术,用于将高维数据转化为低维空间以便更好地理解和分析数据。
在主成分分析中,我们常常需要使用主成分相关矩阵和协方差矩阵来帮助进行分析。
主成分相关矩阵是主成分分析中的一个重要工具。
它是由原始数据的相关系数矩阵通过线性变换得到的,其中每个元素表示对应两个主成分之间的相关性。
主成分相关矩阵的特征值和特征向量可以给出主成分的方差和方向,从而帮助我们选择合适的主成分。
协方差矩阵是另一个常用的工具,它用于衡量两个随机变量之间的关系。
在主成分分析中,我们常常使用协方差矩阵来计算原始数据的特征值和特征向量,从而得到主成分。
协方差矩阵的特征值表示主成分的方差,特征向量表示主成分的方向。
主成分相关矩阵和协方差矩阵之间有着密切的关系。
事实上,它们是可以通过线性变换相互转化的。
具体来说,主成分相关矩阵可以通过协方差矩阵和主成分的标准差得到。
而协方差矩阵则可以通过主成分相关矩阵和主成分的标准差得到。
主成分相关矩阵和协方差矩阵在主成分分析中起着重要的作用。
它们可以帮助我们理解数据的结构,找到数据中的主要特征,并进行降维处理。
通过分析主成分相关矩阵和协方差矩阵,我们可以得到主成分的方差和方向,从而确定哪些主成分是重要的,哪些是可以忽略的。
在实际应用中,主成分相关矩阵和协方差矩阵可以用于多种领域。
例如,在金融领域中,它们可以用于分析资产之间的相关性,帮助投资者进行资产配置和风险管理。
在生物领域中,它们可以用于分析基因表达数据,帮助研究人员发现关键的基因和生物过程。
在工程领域中,它们可以用于分析传感器数据,帮助工程师识别故障和改进系统性能。
主成分相关矩阵和协方差矩阵是主成分分析中的重要工具。
它们可以帮助我们理解数据的结构,找到数据中的主要特征,并进行降维处理。
通过分析主成分相关矩阵和协方差矩阵,我们可以得到主成分的方差和方向,从而确定哪些主成分是重要的,哪些是可以忽略的。
在实际应用中,它们可以用于多种领域,帮助我们进行数据分析和决策。
主成分分析(PCA)数学原理详解

主成分分析(PCA)数学原理详解PCA的数学原理可以分为以下几个步骤:1.数据中心化PCA首先将原始数据进行中心化处理,即将每个特征的均值减去相应特征的平均值,这是因为PCA假设数据围绕着原点分布,中心化可以消除数据的平移影响。
2.协方差矩阵的计算PCA的关键是计算数据的协方差矩阵。
协方差矩阵描述了不同特征之间的相关性。
对于一个n维的数据集,协方差矩阵是一个n×n的矩阵,其中第(i,j)个元素表示第i个特征和第j个特征的协方差。
协方差矩阵的计算公式如下:$C = \frac{1}{n-1} \sum _{i=1}^{n}(X_i - \overline{X})(X_i - \overline{X})^T$其中,X是一个n×m的矩阵,表示n个样本的m个特征,$\overline{X}$ 表示特征均值向量协方差矩阵是一个对称矩阵,通过对协方差矩阵的特征值分解,可以得到特征值和特征向量。
3.特征值和特征向量的计算对协方差矩阵进行特征值分解,可以得到特征值和对应的特征向量。
特征值代表了数据在特征向量方向上的方差,而特征向量表示了数据的主成分方向。
设协方差矩阵为C,有如下特征值方程:$Cv = \lambda v$其中,v是特征向量,λ是特征值。
将特征值按从大到小的顺序排序,选择前k个最大的特征向量,即主成分,作为新的基向量。
这些特征向量构成了一个新的坐标系,用于表示原始数据的新坐标。
4.数据转换将原始数据投影到新的坐标系上,得到降维后的数据。
设原始数据集为X,新的基向量为V(由前k个特征向量组成),降维后的数据集为Y,可以通过如下公式计算:$Y=XV$其中,X是一个n×m的矩阵,表示n个样本的m个特征,V是一个m×k的矩阵,Y是一个n×k的矩阵。
通过PCA降维,可以获得降维后的数据集Y,它是一个n×k的矩阵。
总结:主成分分析(PCA)通过计算数据的协方差矩阵,得到协方差矩阵的特征值和特征向量。
主成分分析法的原理应用及计算步骤

主成分分析法的原理应用及计算步骤1.计算协方差矩阵:首先,我们需要将原始数据进行标准化处理,即使每个特征都有零均值和单位方差。
假设我们有m个n维样本,数据集为X,标准化后的数据集为Z。
那么,计算协方差矩阵的公式如下:Cov(Z) = (1/m) * Z^T * Z其中,Z^T为Z的转置。
2.计算特征向量:通过对协方差矩阵进行特征值分解,可以得到特征值和特征向量。
特征值表示了新坐标系中每个特征的重要性程度,特征向量则表示了数据在新坐标系中的方向。
将协方差矩阵记为C,特征值记为λ1, λ2, ..., λn,特征向量记为v1, v2, ..., vn,那么特征值分解的公式如下:C*v=λ*v计算得到的特征向量按特征值的大小进行排序,从大到小排列。
3.选择主成分:从特征向量中选择与前k个最大特征值对应的特征向量作为主成分,即新坐标系的基向量。
这些主成分可以解释原始数据中大部分的方差。
我们可以通过设定一个阈值或者看特征值与总特征值之和的比例来确定保留的主成分个数。
4.映射数据:对于一个n维的原始数据样本x,通过将其投影到前k个主成分上,可以得到一个k维的新样本,使得新样本的方差最大化。
新样本的计算公式如下:y=W*x其中,y为新样本,W为特征向量矩阵,x为原始数据样本。
PCA的应用:1.数据降维:PCA可以通过主成分的选择,将高维数据降低到低维空间中,减少数据的复杂性和冗余性,提高计算效率。
2.特征提取:PCA可以通过寻找数据中的最相关的特征,提取出主要的信息,从而减小噪声的影响。
3.数据可视化:通过将数据映射到二维或三维空间中,PCA可以帮助我们更好地理解和解释数据。
总结:主成分分析是一种常用的数据降维方法,它通过投影数据到一个新的坐标系中,使得投影后的数据具有最大的方差。
通过计算协方差矩阵和特征向量,我们可以得到主成分,并将原始数据映射到新的坐标系中。
PCA 在数据降维、特征提取和数据可视化等方面有着广泛的应用。
从协方差矩阵出发求解主成分例题

主题:从协方差矩阵出发求解主成分例题内容:1. 概述- 主成分分析是一种常用的数据降维方法,通过寻找数据中的主要变化方向,将高维数据降为低维,便于数据的分析和可视化。
在主成分分析中,协方差矩阵是一个重要的数学工具,可以帮助我们求解主成分。
2. 协方差矩阵- 我们来介绍一下协方差矩阵。
假设我们有n个样本,每个样本有m个特征,我们可以将这些样本表示为一个n*m的矩阵X。
协方差矩阵的定义如下:- 计算X的每一列的均值向量,记为μ,然后将X的每一列减去对应的均值向量,得到一个新的矩阵X'。
- 计算X'的转置矩阵与X'的乘积,再除以n-1,就得到了协方差矩阵C。
- 协方差矩阵反映了不同维度之间的变化趋势,主成分分析的核心就是通过协方差矩阵找到变化最大的方向,从而实现数据的降维。
3. 求解主成分- 在得到协方差矩阵C之后,我们可以利用它来求解主成分。
假设v 是一个长度为m的单位向量,我们的目标是找到一个v使得v'Cv最大,其中v'表示v的转置。
- 由于C是一个对称矩阵,根据线性代数的知识,我们知道对称矩阵一定可以对角化,也就是存在一个正交矩阵P,使得P'CP为对角矩阵D。
对角矩阵D的对角线元素就是C的特征值,P的列向量就是C的特征向量。
- 我们可以将原问题转化为求解C的特征值和特征向量,然后选取对应的特征向量构成新的基,即为主成分。
4. 例题- 假设我们有一个2维的数据集X,其中有5个样本,每个样本包括两个特征。
我们的目标是对这个数据集进行主成分分析,找到主成分。
- 我们需要计算出X的协方差矩阵C。
求解C的特征值和特征向量。
- 假设计算得到C的特征值为λ1和λ2,对应的特征向量为v1和v2。
我们选择特征值最大的前k个特征向量构成新的基,即为主成分。
5. 结论- 通过以上的例题,我们可以看到主成分分析是一个基于协方差矩阵的方法,通过求解协方差矩阵的特征值和特征向量来实现数据的降维,找到数据中的主要变化方向。
多元分析公式主成分分析因子分析的计算方法

多元分析公式主成分分析因子分析的计算方法多元分析公式——主成分分析和因子分析的计算方法多元分析是一种统计分析方法,用于研究多个变量之间的关系和相互作用。
在多元分析中,一种常见的计算方法是主成分分析和因子分析。
本文将介绍这两种方法的计算公式和步骤,帮助读者了解并掌握它们的应用。
一、主成分分析主成分分析是一种通过线性变换将多个相关变量转换为少数几个无关变量(主成分)的方法。
它可以帮助我们减少数据集的维度,提取主要特征,并发现变量之间的模式。
下面是主成分分析的计算方法:1. 样本协方差矩阵的计算首先,我们需要计算原始变量之间的协方差矩阵。
协方差矩阵的元素是原始变量之间的协方差值,可以通过以下公式计算:Cov(X,Y)=Σ[(X_i-μ_X)(Y_i-μ_Y)]/n其中,X和Y分别表示两个原始变量,X_i和Y_i表示样本中的具体观测值,μ_X和μ_Y分别表示X和Y的样本均值,n是样本数量。
2. 特征值和特征向量的计算在计算样本协方差矩阵后,我们可以计算出它的特征值和特征向量。
特征值代表每个主成分的解释力度,特征向量则代表每个主成分的方向。
特征值和特征向量可以通过使用数学软件或计算工具来进行计算和获取。
3. 主成分的计算接下来,我们根据每个特征值对应的特征向量,将原始变量进行线性组合,得到主成分。
通常,我们选择特征值较大的几个主成分来解释大部分的方差。
主成分的计算公式如下:PC1=a_11X_1+a_12X_2+...+a_1kX_kPC2=a_21X_1+a_22X_2+...+a_2kX_k...PCm=a_m1X_1+a_m2X_2+...+a_mkX_k其中,PC1到PCm分别表示主成分,a_ij表示特征向量矩阵的元素,X_1到X_k表示原始变量。
二、因子分析因子分析是一种用于确定观测数据背后的更基本的、不可观测的潜在变量(因子)的方法。
它可以帮助我们理解数据背后的结构,并将多个指标归结为更少的几个潜在因子。
多元统计分析中的协方差矩阵与主成分分析

多元统计分析中的协方差矩阵与主成分分析在多元统计分析中,协方差矩阵和主成分分析是两个非常重要的概念。
协方差矩阵用于描述随机变量之间的相关性,而主成分分析则是一种通过线性变换将高维数据转化为低维数据的方法。
本文将详细介绍协方差矩阵和主成分分析的原理和应用。
一、协方差矩阵的概念和计算方法协方差矩阵是多元统计分析中用于描述随机变量之间关系的一种矩阵。
对于n个随机变量X1,X2,...,Xn,其协方差矩阵定义为一个n×n的矩阵Σ,其中Σij表示随机变量Xi和Xj之间的协方差。
协方差矩阵的计算方法如下:1. 首先计算随机变量Xi的均值μi和随机变量Xj的均值μj;2. 然后计算随机变量Xi和Xj的协方差Cov(Xi,Xj);3. 将协方差填入协方差矩阵Σ的对应位置。
需要注意的是,协方差矩阵是一个对称矩阵,即Σij=Σji。
同时,协方差矩阵的对角线上的元素是各个随机变量的方差。
二、主成分分析的原理和步骤主成分分析(Principal Component Analysis, PCA)是一种通过线性变换将原始数据转化为具有统计特性的新坐标系的方法。
主成分分析的原理如下:1. 假设我们有m个样本,每个样本有n个特征,可以将这些样本表示为一个m×n的矩阵X;2. 对X进行去均值操作,即将每个特征减去该特征的均值,得到一个新的矩阵X';3. 计算X'的协方差矩阵Σ;4. 对Σ进行特征值分解,得到特征值和对应的特征向量;5. 将特征值按照从大到小的顺序排列,选择前k个特征值对应的特征向量作为主成分;6. 将原始数据X'与主成分构成的新坐标系相乘,得到降维后的数据X''。
通过主成分分析,我们可以将高维的数据降维到低维,并且保留了大部分的信息。
主成分分析在数据降维、特征提取和数据可视化等领域都有广泛的应用。
三、协方差矩阵与主成分分析的应用协方差矩阵和主成分分析在实际应用中有着广泛的应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
今天看论文的时候又看到了协方差矩阵这个破东西,以前看模式分类的时候就特困扰,没想到现在还是搞不清楚,索性开始查协方差矩阵的资料,恶补之后决定马上记录下来,嘿嘿~本文我将用自认为循序渐进的方式谈谈协方差矩阵。
统计学的基本概念学过概率统计的孩子都知道,统计里最基本的概念就是样本的均值,方差,或者再加个标准差。
首先我们给你一个含有n个样本的集合,依次给出这些概念的公式描述,这些高中学过数学的孩子都应该知道吧,一带而过。
均值:标准差:方差:很显然,均值描述的是样本集合的中间点,它告诉我们的信息是很有限的,而标准差给我们描述的则是样本集合的各个样本点到均值的距离之平均。
以这两个集合为例,[0,8,12,20]和[8,9,11,12],两个集合的均值都是10,但显然两个集合差别是很大的,计算两者的标准差,前者是8.3,后者是1.8,显然后者较为集中,故其标准差小一些,标准差描述的就是这种“散布度”。
之所以除以n-1而不是除以n,是因为这样能使我们以较小的样本集更好的逼近总体的标准差,即统计上所谓的“无偏估计”。
而方差则仅仅是标准差的平方。
为什么需要协方差?上面几个统计量看似已经描述的差不多了,但我们应该注意到,标准差和方差一般是用来描述一维数据的,但现实生活我们常常遇到含有多维数据的数据集,最简单的大家上学时免不了要统计多个学科的考试成绩。
面对这样的数据集,我们当然可以按照每一维独立的计算其方差,但是通常我们还想了解更多,比如,一个男孩子的猥琐程度跟他受女孩子欢迎程度是否存在一些联系啊,嘿嘿~协方差就是这样一种用来度量两个随机变量关系的统计量,我们可以仿照方差的定义:来度量各个维度偏离其均值的程度,标准差可以这么来定义:协方差的结果有什么意义呢?如果结果为正值,则说明两者是正相关的(从协方差可以引出“相关系数”的定义),也就是说一个人越猥琐就越受女孩子欢迎,嘿嘿,那必须的~结果为负值就说明负相关的,越猥琐女孩子越讨厌,可能吗?如果为0,也是就是统计上说的“相互独立”。
从协方差的定义上我们也可以看出一些显而易见的性质,如:协方差多了就是协方差矩阵上一节提到的猥琐和受欢迎的问题是典型二维问题,而协方差也只能处理二维问题,那维数多了自然就需要计算多个协方差,比如n维的数据集就需要计算个协方差,那自然而然的我们会想到使用矩阵来组织这些数据。
给出协方差矩阵的定义:这个定义还是很容易理解的,我们可以举一个简单的三维的例子,假设数据集有三个维度,则协方差矩阵为可见,协方差矩阵是一个对称的矩阵,而且对角线是各个维度上的方差。
Matlab协方差实战上面涉及的内容都比较容易,协方差矩阵似乎也很简单,但实战起来就很容易让人迷茫了。
必须要明确一点,协方差矩阵计算的是不同维度之间的协方差,而不是不同样本之间的。
这个我将结合下面的例子说明,以下的演示将使用Matlab,为了说明计算原理,不直接调用Matlab的cov函数(蓝色部分为Matlab代码)。
首先,随机产生一个10*3维的整数矩阵作为样本集,10为样本的个数,3为样本的维数。
1 M ySample = fix(rand(10,3)*50)根据公式,计算协方差需要计算均值,那是按行计算均值还是按列呢,我一开始就老是困扰这个问题。
前面我们也特别强调了,协方差矩阵是计算不同维度间的协方差,要时刻牢记这一点。
样本矩阵的每行是一个样本,每列为一个维度,所以我们要按列计算均值。
为了描述方便,我们先将三个维度的数据分别赋值:123dim1 = MySample(:,1); dim2 = MySample(:,2); dim3 = MySample(:,3); 计算dim1与dim2,dim1与dim3,dim2与dim3的协方差:1 2 3 sum( (dim1-mean(dim1)) .* (dim2-mean(dim2)) ) / ( size(MySample,1)-1 ) % 得到 74.5333sum( (dim1-mean(dim1)) .* (dim3-mean(dim3)) ) / ( size(MySample,1)-1 ) % 得到 -10.0889sum( (dim2-mean(dim2)) .* (dim3-mean(dim3)) ) / ( size(MySample,1)-1 ) % 得到 -106.4000搞清楚了这个后面就容易多了,协方差矩阵的对角线就是各个维度上的方差,下面我们依次计算: 123std(dim1)^2 % 得到 108.3222 std(dim2)^2 % 得到 260.6222 std(dim3)^2 % 得到 94.1778 这样,我们就得到了计算协方差矩阵所需要的所有数据,调用Matlab 自带的cov 函数进行验证: 1c ov(MySample)把我们计算的数据对号入座,是不是一摸一样?Update :今天突然发现,原来协方差矩阵还可以这样计算,先让样本矩阵中心化,即每一维度减去该维度的均值,使每一维度上的均值为0,然后直接用新的到的样本矩阵乘上它的转置,然后除以(N-1)即可。
其实这种方法也是由前面的公式通道而来,只不过理解起来不是很直观,但在抽象的公式推导时还是很常用的!同样给出Matlab 代码实现:1 2 X = MySample - repmat(mean(MySample),10,1); % 中心化样本矩阵,使各维度均值为0C = (X'*X)./(size(X,1)-1);总结理解协方差矩阵的关键就在于牢记它计算的是不同维度之间的协方差,而不是不同样本之间,拿到一个样本矩阵,我们最先要明确的就是一行是一个样本还是一个维度,心中明确这个整个计算过程就会顺流而下,这么一来就不会迷茫了~P.S.写论文要选Latex ,在wordpress 里编辑公式还得用Latex ,用Latex 还真对得起咱学计算机这张脸~自从上次谈了协方差矩阵之后,感觉写这种科普性文章还不错,那我就再谈一把协方差矩阵吧。
上次那篇文章在理论层次介绍了下协方差矩阵,没准很多人觉得这东西用处不大,其实协方差矩阵在好多学科里都有很重要的作用,比如多维的正态分布,再比如今天我们今天的主角——主成分分析(Principal Component Analysis ,简称PCA)。
结合PCA 相信能对协方差矩阵有个更深入的认识~ PCA 的缘起PCA 大概是198x 年提出来的吧,简单的说,它是一种通用的降维工具。
在我们处理高维数据的时候,为了能降低后续计算的复杂度,在“预处理”阶段通常要先对原始数据进行降维,而PCA 就是干这个事的。
本质上讲,PCA 就是将高维的数据通过线性变换投影到低维空间上去,但这个投影可不是随便投投,要遵循一个指导思想,那就是:找出最能够代表原始数据的投影方法。
这里怎么理解这个思想呢?“最能代表原始数据”希望降维后的数据不能失真,也就是说,被PCA 降掉的那些维度只能是那些噪声或是冗余的数据。
这里的噪声和冗余我认为可以这样认识:∙噪声:我们常说“噪音污染”,意思就是“噪声”干扰我们想听到的真正声音。
同样,假设样本中某个主要的维度A,它能代表原始数据,是“我们真正想听到的东西”,它本身含有的“能量”(即该维度的方差,为啥?别急,后文该解释的时候就有啦~)本来应该是很大的,但由于它与其他维度有那么一些千丝万缕的相关性,受到这些个相关维度的干扰,它的能量被削弱了,我们就希望通过PCA处理后,使维度A与其他维度的相关性尽可能减弱,进而恢复维度A应有的能量,让我们“听的更清楚”!∙冗余:冗余也就是多余的意思,就是有它没它都一样,放着就是占地方。
同样,假如样本中有些个维度,在所有的样本上变化不明显(极端情况:在所有的样本中该维度都等于同一个数),也就是说该维度上的方差接近于零,那么显然它对区分不同的样本丝毫起不到任何作用,这个维度即是冗余的,有它没它一个样,所以PCA应该去掉这些维度。
这么一分析,那么PCA的最终目的就是“降噪”和消灭这些“冗余”的维度,以使降低维度的同时保存数据原有的特征不失真。
后面我们将结合例子继续讨论。
协方差矩阵——PCA实现的关键前面我们说了,PCA的目的就是“降噪”和“去冗余”。
“降噪”的目的就是使保留下来的维度间的相关性尽可能小,而“去冗余”的目的就是使保留下来的维度含有的“能量”即方差尽可能大。
那首先的首先,我们得需要知道各维度间的相关性以及个维度上的方差啊!那有什么数据结构能同时表现不同维度间的相关性以及各个维度上的方差呢?自然是非协方差矩阵莫属。
回忆下《浅谈协方差矩阵》的内容,协方差矩阵度量的是维度与维度之间的关系,而非样本与样本之间。
协方差矩阵的主对角线上的元素是各个维度上的方差(即能量),其他元素是两两维度间的协方差(即相关性)。
我们要的东西协方差矩阵都有了,先来看“降噪”,让保留下的不同维度间的相关性尽可能小,也就是说让协方差矩阵中非对角线元素都基本为零。
达到这个目的的方式自然不用说,线代中讲的很明确——矩阵对角化。
而对角化后得到的矩阵,其对角线上是协方差矩阵的特征值,它还有两个身份:首先,它还是各个维度上的新方差;其次,它是各个维度本身应该拥有的能量(能量的概念伴随特征值而来)。
这也就是我们为何在前面称“方差”为“能量”的原因。
也许第二点可能存在疑问,但我们应该注意到这个事实,通过对角化后,剩余维度间的相关性已经减到最弱,已经不会再受“噪声”的影响了,故此时拥有的能量应该比先前大了。
看完了“降噪”,我们的“去冗余”还没完呢。
对角化后的协方差矩阵,对角线上较小的新方差对应的就是那些该去掉的维度。
所以我们只取那些含有较大能量(特征值)的维度,其余的就舍掉即可。
PCA的本质其实就是对角化协方差矩阵。
下面就让我们跟着上面的感觉来推推公式吧。
假设我们有一个样本集X,里面有N个样本,每个样本的维度为d。
即:将这些样本组织成样本矩阵的形式,即每行为一个样本,每一列为一个维度,得到样本矩阵S:。
我们先将样本进行中心化,即保证每个维度的均值为零,只需让矩阵的每一列除以对应的均值即可。
很多算法都会先将样本中心化,以保证所有维度上的偏移都是以零为基点的。
然后,对样本矩阵计算其协方差矩阵,按照《浅谈协方差矩阵》里末尾的update,我们知道,协方差矩阵可以简单的按下式计算得到:下面,根据我们上文的推理,将协方差矩阵C对角化。
注意到,这里的矩阵C是是对称矩阵,对称矩阵对角化就是找到一个正交矩阵P,满足:。
具体操作是:先对C进行特征值分解,得到特征值矩阵(对角阵)即为,得到特征向量矩阵并正交化即为。
显然,。
假如我们取最大的前p(p<d)个特征值对应的维度,那么这个p个特征值组成了新的对角阵,对应的p个特征向量组成了新的特征向量矩阵。