协方差(矩阵)、特征向量和PCA(Principal Component Analysis,主成分分析)

原创 2014年02月17日 13:57:10

一、约定---从机器学习(Machine Learning)角度

样本集(数据集):

单个样本(观测值):

维度(变量):

上标表示样本序号,下标表示样本的维度序号或特征序号样本实例一般表示为列向量,样本总数为,样本特征维度数为

 

二、协方差(矩阵)、特征值和特征向量的定义

协方差:表示所有样本对应两个维度之间的关系。

协方差矩阵:其每一个元素对应的是相应维度的协方差值。

设样本维度数为3,即n=3.

特征值与特征向量:阶矩阵,若存在常数和非零维向量,使,则称的特征值,的属于特征值的特征向量。一般阶矩阵会有个特征值和个特征向量。

一般向量与矩阵相乘,向量等于旋转了一个角度,并且大小也发生了变化;向量与标量相乘,方向不变或是相反,只是长度改变了。从式子看出,假设为正数,则向量与矩阵相乘后,方向并没有发生变化,只是大小改变了,这可以看出特征向量包含了矩阵中某些本质的信息。

 

三、PCA(主成分分析)的方差最大化理论

PCA的主要思想简单来说就是把原始维数据集"压缩"到,原始数据集中的样本空间需要个坐标轴,经过PCA后能找到个新坐标轴来表示数据,减少数据量。假设有二维的数据集如下图,我们需要把它"压缩"到一维,那我们就需要找到一个方向或称为坐标,原始数据在该坐标轴投影后的投影点方差最大。为什么要方差最大呢?因为在"信号与系统"中,认为信号起伏较大,具有较大的方差,而噪声起伏较小,具有较小的方差,信噪比就是信号与噪声的方差比,越大越好。故投影点方差越大,保留的有用信息就越多。

    在使用PCA之前,往往要先进行预处理(Pre-processing),采用如下步骤:

    

第1-2步是使每个维度的数据平均值为0,第3-4步是使每个维度的数据的方差为1,这个预处理方法在Machine Learning中被称为"Normalization",其中最大的一个优点是使得每个特征维度具有相似的分布范围,利于算法的收敛。为了利于表示,在原始数据集上采五个点,进行预处理后如下图所示:

在上图中有两个方向,明显地,原始数据集在上的投影点方差比上的大。

 

    为了计算预处理后的数据集在哪个方向上投影后的方差最大,我们假设这个方向的单位向量为(与样本具有相同维度),则样本上的投影为,也就是上的投影点距离原点的长度,那整个数据集在投影后的方差:

我们令,这不正是协方差矩阵的定义吗?只不过这里是矢量化(Vectorization)计算罢了,这里也说明了为什么要进行预处理,把数据集的每个维度的均值变为0. 接着,令,是一个标量。则上式改写成

在式子两边皆乘与,则变为

这就变成了特征值和特征向量的定义,分别是阶方阵 的特征向量和特征值。阶方阵会有个特征值和个特征向量,一个特征值对应一个特征向量。

解得式子所有的特征值和特征向量,较大的特征值表示数据集在该特征向量上的投影点的方差较大,在PCA中往往选取前个较大的特征值构成维的特征矩阵

 

其中为列向量

样本投影后表示为

PCA处理后的样本用在个特征向量上投影的长度重新表示。原始的数据集个样本,每个样本维,每列对应一个样本),特征矩阵个特征向量,每个特征向量维,每列对应一个特征向量),则,数据量减少了。

这里还有一个问题,在实际中样本维数是已知的,怎样确定主元个数(Number of principle components),也就是怎样选取特征向量个数?在此,引入保留方差百分比(percentage of variance retained),也可以称之为能量比(Energy ratio),如下:

我们一般取满足能量比大于或等于99%时最小的整数就可以了,不过为了提过系统的准确率,或是其他问题,还可以自己根据实际情况调整。

PS:MATLABprincomp函数已经实现了PCA算法,只要输入数据,就可以直接计算出相应的特征向量和特征值,详细用法可以看MATLAB自带的文档。



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Principal Component Analysis,PCA主成分分析

引言PCA(Principal Component Analysis)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据...

主成分分析(Principal Component Analysis,PCA

主成分分析(Principal Component Analysis,PCA)是将多个变量通过线性变换以选出较少几个重要变量的多元统计分析方法。 原理:在用统计分析方法研究多变量的课题时,变量个数太多...

PCA主成分分析(Principal Component Analysis)

PCA是基本的线性降维方法,同时也是一种监督学习降维方法。PCA是希望降维之后,尽量保留原始数据的方差结构,所以我们需要投影方向a使得投影之后数据的方差最大化。 1. 求解 PCA是通过求...

主成分分析PCA(Principal Component Analysis)介绍

很久之前,有一次做人脸识别的时候用过PCA,大概记得是降维用的,然后前段时间用到LDA的时候顺带看到PCA才发现忘的差不多了,干脆把一些资料整理一下吧。 一.K-L变换 说PCA的...

PCA(Principal Component Analysis)主成分分析

今天给大家说说

SAS:主成分分析(Principal Component Analysis,PCA)

from:http://blog.csdn.net/archielau/article/details/7989735 进行主成分分析主要步骤如下:   1. 指标数据标准化(SPSS软件...

PCA(Principal Component Analysis 主成分分析)原理及MATLAB实现

关于PCA的原理参见:PCA原理PCA:一种通过特征的线性组合来实现降维的方法,目的就是在尽可能好的代表原始数据的前提下,通过线性变换将样本数据投影到地位空间中。 如图示意,二维样本分别投影到e1、...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)