PCA学习总结

1. PCA整体思想

PCA,Principle Componet Analysis,主成分分析,主要用于数据降维。它通过计算给定数据集的协方差矩阵的特征值和特征向量,来得到数据集最关键的方向(数据集在此方向的投影方差最大,这个能保持最多的信息),并从关键的方向中选取前k个构成k维空间,在此空间中重新表示原始数据以达到降维的目的。

2. 推导过程

http://www.cs.otago.ac.nz/cosc453/student_tutorials/principal_components.pdf

3. 算法的基本步骤

输入:数据集X(DxN)

输出:特征值E(Dx1),特征向量V(DxD,特征向量按列存放),样本每一维的均值(Dx1)

过程:1. 计算X的协方差矩阵C

   2. 求C的特征值E和特征向量V,并按照特征值递减的顺序排列

   3. 选取V的前k个特征向量(即前K列),构成矩阵P(DxK)

   4. 将X的每个元素x在P的前K个特征向量上进行投影,得到xx(K,1),最终得到X在K个特征向量上的投影矩阵Z(KxN)

   5. 用Z重构XX,并与X比较,计算重构误差

4. matlab实现PCA

[V, E] = eig( cov(X‘) )
[E index] = sort(diag(E),‘descend‘);
V = V(:,index);
meanX = mean(X‘)‘;

P=V(:,[1:K])
[r,c] = size(X);
Y = P‘*(X-repmat(meanX,1,c));

[r,c] = size(Y);
XX = P * Y + repmat(meanX, 1, c);

5. PCA主要应用

人脸识别,手写识别中用的相对较多。

相当好的一份PCA介绍资料:http://pan.baidu.com/s/1wDfKq

时间: 2024-10-23 10:28:09

PCA学习总结的相关文章

Rubost PCA 优化

Rubost PCA 优化 2017-09-03 13:08:08 YongqiangGao 阅读数 2284更多 分类专栏: 背景建模 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u010510350/article/details/77803572 最近一直在看Robust PCA做背景建模的paper, 顺便总结了一下了Robust PCA.前面一篇博客介绍了PCA与Robust

阅读记录(2016年12月)

本文记录本人曾经阅读过的一些文章,其中主要包括在编程.学习过程中搜集的一些琐碎知识点等. 由于文章过多,此处只记录文章的地址,可点击查看原网页. 由于内容很多,放在一篇文章中显得太长,故每个月一篇. 2016-12-30 C++内嵌第三方EXE程序窗口 C++内嵌第三方EXE程序窗口 - 笨师兄 - 博客频道 - CSDN.NET VC可执行程序中打开另一个可执行程序并将其嵌入到主程序中-CSDN论坛-CSDN.NET-中国最大的IT技术社区 QT怎么把别的exe程序嵌入到自己的窗口中-CSDN

CVPR2019论文解读:单眼提升2D检测到6D姿势和度量形状

CVPR2019论文解读:单眼提升2D检测到6D姿势和度量形状 ROI-10D: Monocular Lifting of 2D Detection to 6D Pose and Metric Shape 论文链接地址:https://arxiv.org/pdf/1812.02781.pdf 摘要内容: 本文提供了基于端到端单目3D目标检测和度量形状检索的深度学习方法.为了在3D中提升2D检测,定位,以及缩放,提出了一种新的loss函数.不同于各自独立的优化这些数量,3D示例允许适当的度量box

深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening

主成分分析与白化是在做深度学习训练时最常见的两种预处理的方法,主成分分析是一种我们用的很多的降维的一种手段,通过PCA降维,我们能够有效的降低数据的维度,加快运算速度.而白化就是为了使得每个特征能有同样的方差,降低相邻像素的相关性. 主成分分析PCA PCA算法可以将输入向量转换为一个维数低很多的近似向量.我们在这里首先用2D的数据进行试验,其数据集可以在UFLDL网站的相应页面http://ufldl.stanford.edu/wiki/index.php/Exercise:PCA_in_2D

深度学习UFLDL教程翻译之PCA白化

一.引入 主成分分析(PCA)是一种降维算法,能大大加速你的无监督特征学习算法.更重要的是,理解PCA能让我们后面实现白化,这是一个对所有算法适用的重要的预处理步骤. 假设你在图像上训练你的算法.不过输入稍微有点冗余,因为图像中相邻的像素值是高度相关的.具体来说,假设我们在16*16的灰度图像块上训练.那么x∈R256是256维的向量,一个特征xj对应着图像中每个像素强度.由于相邻像素之间的相关性,PCA使我们能够以一个维数小得多的输入来近似原输入,而造成误差极小. 二.例子与数学背景 对我们运

Deep Learning五:PCA and Whitening_Exercise(斯坦福大学UFLDL深度学习教程)

前言 本文是基于Exercise:PCA and Whitening的练习. 理论知识见:UFLDL教程. 实验内容:从10张512*512自然图像中随机选取10000个12*12的图像块(patch),然后对这些patch进行99%的方差保留的PCA计算,最后对这些patch做PCA Whitening和ZCA Whitening,并进行比较. 实验步骤及结果 1.加载图像数据,得到10000个图像块为原始数据x,它是144*10000的矩阵,随机显示200个图像块,其结果如下: 2.把它的每

数据挖掘算法学习(四)PCA算法

算法简介 主成分分析(PrincipalComponentAnalysis,简称PCA)是一种常用的基于变量协方差矩阵对信息进行处理.压缩和抽提的有效方法.主要用于对特征进行降维. 算法假设 数据的概率分布满足高斯分布或是指数型的概率分布.方差高的向量视为主元. 算法输入 包含n条记录的数据集 算法输出 降维或压缩后的数据集 算法思想 ?1.计算所有样本的均值m和协方差矩阵S: ?2.计算S的特征值,并由大到小排序: ?3.选择前n'个特征值对应的特征矢量作成一个变换矩阵E=[e1,e2, -,

Sklearn -PCA 人脸识别 百度网盘sklearn学习API

PCA脸部识别现在让我们用PCA来解决一个脸部识别问题.脸部识别是一个监督分类任务,用于从照片中认出某个人.本例中,我们用剑桥大学AT&T实验室的Our Database of Faces数据集(http://www.cl.cam.ac.uk/research/dtg/attarchive/facedatabase.html),这个数据集包含40个人每个人10张照片.这些照片是在不同的光照条件下拍摄的,每张照片的表情也不同.照片都是黑白的,尺寸为92 x 112像素.虽然这些图片都不大,但是每张

PCA(matlab)学习,与记录

最近学习ML(Matlab),用到了PCA,参考了网上的一些资料,现在总结如下,以后忘记的话,可以回来看看.参考地址:https://blog.csdn.net/qq1987924/article/details/45965431 先来看个例子:(借用参考地址的数据)load hald; %载入matlab内部数据[pc,score,latent,tsquare] = pca(ingredients); %调用pca分析函数pc:是ingredients的协方差矩阵特征值对应的特征向量,排列按照