[降维] PCA 主成分分析

其实早该整理一下PCA了,怎奈一直没有时间,可能是自己对时间没有把握好吧,下面进入正题。


降维的概念

所谓降维,就是降低数据的维数。在机器学习中尤其常见,之前做过对一幅图片提取小波特征,对于一幅大小为800*600的图片,如果每个点提取五个尺度、八个方向的特征,那么每一个像素点提取40个特征,那么一副图片的话就是40*800*600=19200000个特征。也就是我们用一个19200000的向量描述一幅图片。如果有m幅图片,那么特征为m*19200000的大小。显然这个维数太大了,所以需要降维。

形式化的描述:假设数据矩阵为Xm,n(这个矩阵可能是feature矩阵,也可能是其他矩阵)。m代表数据的大小,n代表维数,通常n非常大。降维的目的是我们希望找到一个矩阵Y=XP,使得Y满足以下两个条件:

(a) Y的维度小于X的维度(这样就起到了降维的目的)。

(b) Y的各个维度之间的差异越大越好(差异越大,表示包含的信息越多,对描述数据越有效);

条件(a)比较容易满足,我们只需要Pn,t(t<m),那么得到的Y就是Ym,t显然起到了降维的目的。因此我们的重点是找到P满足(b)。

为此,我们首先给出差异性度量的准则-方差和协方差。

方差和协方差

对于数据矩阵Xm,n,它的第 j 维数据的差异性可以用方差来表示:

            

对于数据Xm,n,我们希望的是它的所有的维与维之间的差异性越大越好,维p与维q之间的差异性可以用协方差表示:

这样,数据Xm,n的各个维度的差异性可以用协方差矩阵C表示

显然,协方差矩阵是一个实对阵矩阵。通过上面的式子计算协方差矩阵还是比较麻烦的,我们直接在矩阵上操作,对矩阵X进行中心化

那么协方差矩阵可以通过下式得到

可见协方差矩阵计算起来还是挺简单的。

有了协方差矩阵的概念以后,我们继续前面的讨论:前面提到,我们需要一个这样的Y=XP(中心化的),它的各个维度之间的差异越大越好,也就是Y的协方差矩阵D的不同维度之间的协方差越小越好,形式化的表述为

到了这一步就比较明了了。还记得我们需要一个什么样的D吗,这个D最好是一个对角阵,使得不在对角线上的元素均为0。问题转化为实对称矩阵的对角化问题。根据矩阵论的知识我们知道,一个是对称矩阵必存在一个正交矩阵P使得PTAP为对角阵。

原则上说讲到这里就算讲完了,但是这个定力还有一个限制,A是线性无关的(或者说A有n个不同的特征值),此时把A的特征值从大到小排序,每一个特征值对应一个特征向量,我们把这些特征向量从左到右排起来就得到了P。如果我们取前 t 个特征值,那么P的大小为n*t,通过Y=XP,我们得到的 Y 就是一个m*t的矩阵(X是m*n的矩阵),从而起到了降维的作用。当然,如果P的大小为n*n,那么没有起到降维的目的,但是将X映射到了一个新的空间。

从几何的角度来讲,其实线性变换就是空间映射,我们没有改变数据在空间中的位置,但是用了不同的基来表示他,关于基感觉这篇博客讲的很到位:

http://blog.codinglabs.org/articles/pca-tutorial.html

给出简单的matlab代码

m=10;
n=100;
t=50;

X=100*rand([m,n]);%% original data

X=X-repmat(mean(X),m,1);%Centralization

C=(X‘*X)/m;

[E,D]=eig(C);

[dummy,order] = sort(diag(-D));
E = E(:,order);%将特征向量按照特征值大小进行降序排列,每一列是一个特征向量
D =D(:,order);

Y=X*E(:,1:t); %Y
时间: 2024-10-13 21:49:01

[降维] PCA 主成分分析的相关文章

【机器学习算法-python实现】PCA 主成分分析、降维

1.背景 PCA(Principal Component Analysis),PAC的作用主要是降低数据集的维度,然后挑选出主要的特征. PCA的主要思想是移动坐标轴,找到方差最大的方向上的特征值,什么叫方差最大的方向的特征值呢.就像下图中的曲线B,一样,它的覆盖范围最广. 基本步骤:(1)首先计算数据集的协方差矩阵 (2)计算协方差矩阵的特征值和特征向量 (3)保留最重要的n个特征 what is 协方差矩阵: 定义是变量向量减去均值向量,然后乘以变量向量减去均值向量的转置再求均值.例如x是变

机器学习——降维(主成分分析PCA、线性判别分析LDA、奇异值分解SVD、局部线性嵌入LLE)

机器学习--降维(主成分分析PCA.线性判别分析LDA.奇异值分解SVD.局部线性嵌入LLE) 以下资料并非本人原创,因为觉得石头写的好,所以才转发备忘 (主成分分析(PCA)原理总结)[https://mp.weixin.qq.com/s/XuXK4inb9Yi-4ELCe_i0EA] 来源:?石头?机器学习算法那些事?3月1日 主成分分析(Principal components analysis,以下简称PCA)是最常用的降维方法之一,在数据压缩和消除冗余方面具有广泛的应用,本文由浅入深的

机器学习之PCA主成分分析

前言            以下内容是个人学习之后的感悟,转载请注明出处~ 简介 在用统计分析方法研究多变量的课题时,变量个数太多就会增加课题的复杂性.人们自然希望变量个数较少而得到的 信息较多.在很多情形,变量之间是有一定的相关关系的,当两个变量之间有一定相关关系时,可以解释为这两个变量反 映此课题的信息有一定的重叠.主成分分析是对于原先提出的所有变量,将重复的变量(关系紧密的变量)删去多余,建立 尽可能少的新变量,使得这些新变量是两两不相关的,而且这些新变量在反映课题的信息方面尽可能保持原有

PCA主成分分析Python实现

作者:拾毅者 出处:http://blog.csdn.net/Dream_angel_Z/article/details/50760130 Github源代码:https://github.com/csuldw/MachineLearning/tree/master/PCA PCA(principle component analysis) .主成分分析,主要是用来减少数据集的维度,然后挑选出基本的特征.原理简单,实现也简单.关于原理公式的推导,本文不会涉及,你能够參考以下的參考文献,也能够去W

PCA(主成分分析)方法浅析

PCA(主成分分析)方法浅析 降维.数据压缩 找到数据中最重要的方向:方差最大的方向,也就是样本间差距最显著的方向 在与第一个正交的超平面上找最合适的第二个方向 PCA算法流程 上图第一步描述不正确,应该是去中心化,而不是中心化 具体来说,投影这一环节就是:将与特征值对应的k个特征向量分别作为行向量组成特征向量矩阵P 直接乘以特征变量就好.原来是二维数据,降维之后只有一维. 我们想保留几个维度的特征,就留下几个特征值和对应的特征向量. 原文地址:https://www.cnblogs.com/j

数据降维PCA

简介 @维基百科 在多元统计分析中,主成分分析(英语:Principal components analysis,PCA)是一种统计分析.简化数据集的方法.它利用正交变换来对一系列可能相关的变量的观测值进行线性变换,从而投影为一系列线性不相关变量的值,这些不相关变量称为主成分(Principal Components).具体地,主成分可以看做一个线性方程,其包含一系列线性系数来指示投影方向.PCA对原始数据的正则化或预处理敏感(相对缩放). 本文内容皆源自Andrew Ng 目的 1.实现数据压

[机器学习之13]降维技术——主成分分析PCA

始终贯彻数据分析的一个大问题就是对数据和结果的展示,我们都知道在低维度下数据处理比较方便,因而数据进行简化成为了一个重要的技术.对数据进行简化的原因: 1.使得数据集更易用使用.2.降低很多算法的计算开销.3.去除噪音.4.使得结果易懂 这里我们关心的数据降维技术为主成分分析(PCA).在PCA中,数据原来的坐标系转换成了新的坐标系,新的坐标系是由数据本身决定的.第一个新的坐标轴的选择是原始数据中方差最大的方向,第二个新的坐标轴的选择和第一个坐标轴正交且具有最大方差方向.这个过程一直重复,重复次

降维之主成分分析法(PCA)

一.主成分分析法的思想 我们在研究某些问题时,需要处理带有很多变量的数据,比如研究房价的影响因素,需要考虑的变量有物价水平.土地价格.利率.就业率.城市化率等.变量和数据很多,但是可能存在噪音和冗余,因为这些变量中有些是相关的,那么就可以从相关的变量中选择一个,或者将几个变量综合为一个变量,作为代表.用少数变量来代表所有的变量,用来解释所要研究的问题,就能从化繁为简,抓住关键,这也就是降维的思想. 主成分分析法(Principal Component Analysis,PCA)就是一种运用线性代

第十三章:降维:主成分分析PCA

第13章:利用PCA来简化数据