主成分分析法(PCA)原理和步骤
主成分分析法(PCA)原理和步骤
主成分分析(Principal Component Analysis,PCA)是一种多变量统计方法,它是最常用的降维方法之一,通过正交变换将一组可能存在相关性的变量数据,转换为一组线性不相关的变量,转换后的变量被称为主成分。
可以使用两种方法进行 PCA,分别是特征分解或奇异值分解(SVD)。
准备工作
PCA 将 n 维输入数据缩减为 r 维,其中 r<n。简单地说,PCA 实质上是一个基变换,使得变换后的数据有最大的方差,也就是通过对坐标轴的旋转和坐标原点的平移,使得其中一个轴(主轴)与数据点之间的方差最小,坐标转换后去掉高方差的正交轴,得到降维数据集。
这里使用 SVD 方法进行 PCA 降维,假定有 p×n 维数据样本 X,共有 p 个样本,每行是 n 维,p×n 实矩阵可以分解为:
这里,正交阵 U 的维数是 p×n,正交阵 V 的维数是 n×n(正交阵满足:UUT=VTV=1),Σ 是 n×n 的对角阵。接下来,将 Σ 分割成 r 列,记作 Σr;利用 U 和 V 便能够得到降维数据点 Yr:
具体做法
- 导入所需的模块,除了 TensorFlow,还需要 numpy 进行基本的矩阵计算,用 matplotlib、mpl_toolkit 和 seaborn 绘制图形:
加载数据集,此处使用常用的 MNIST 数据集:
定义类 TF_PCA,此类初始化如下:
定义 fit 函数,计算输入数据的 SVD。定义计算图,以此计算奇异值和正交矩阵 U,self._X 以占位符的形式读入数据 self.data,tf.svd 以递减顺序返回形状为 […,p] 的奇异值 s(singular_values),然后使用 tf.diag 将奇异值转换为对角矩阵:
现在有了 sigma 矩阵、正交矩阵 U 和奇异值,下面定义 reduce 函数来计算降维数据。该方法需要 n_dimensions 和 keep_info 两个输入参数之一,n_dimensions 参数表示在降维数据中保持的维数,keep_info 参数表示保留信息的百分比(0.8意味着保持 80% 的原始数据)。该方法创建一个计算图,对 sigma 矩阵进行分割并计算降维数据集 Yr:
TF_PCA 类已经准备就绪,下面会将 MNIST 的每个输入数据从维度为 784(28×28)减小到每个维度为 3。在这里为了对比效果只保留了 10% 的信息,但通常情况下需要保留大约 80% 的信息:
代码输出如下:
- 绘制三维空间中的 55000 个数据点:
在这里插入图片描述
解读分析
前面的代码对 MNIST 图像进行了降维操作。原图的大小为 28×28,利用 PCA 方法把尺寸压缩得更小。通常在图像处理中经常用到降维操作,因为太大的图像尺寸包含大量的冗余数据。
TensorFlow 中的 embeddings 技术可以实现从对象到向量的映射,TensorBoard 中的 Embedding Projector 可以交互式地对模型的 embeddings 进行可视化,并提供了三种降维的方法:PCA、t-SNE 和自定义方式,可以使用 Embeddings Projector 来得到与上面类似的结果。
这需要从 tensorflow.contrib.tensorboard.plugins 中导入 projector,并且通过简单的三个步骤就可以完成:
加载数据:
新建一个 metadata 文件(用制表符分隔的 .tsv 文件):
将 embeddings 保存在 Log_DIR 中:
现在就可以使用 TensorBoard 查看 embeddings 了,通过命令行 tensorboard–logdir=log,在 Web 浏览器中打开 TensorBoard,然后进入 EMBEDDINGS 选项卡。下图显示的就是使用 PCA 方法运算的前三个主成分为轴的 TensorBoard 投影:
主成分分析法(PCA)原理和步骤相关推荐
- 数据降维之主成分分析法PCA
主成分分析法PCA 参考链接:https://www.bilibili.com/video/BV1E5411E71z 主成分分析(Principal Component Analysis,PCA), ...
- 主成分分析(PCA)方法步骤以及代码详解
主成分分析(PCA)方法步骤以及代码详解 前言 上一节我们了解到在构建神经网络模型,除了掌握如何搭建神经网络架构,了解参数具体含义,规避风险等方法.第一步是要对采用数据集的详细了解,无需接触任何神经网 ...
- sklearn 主成分分析法 PCA和IPCA
主成分分析法 (PCA) 是一种常用的数据分析手段.对于一组不同维度 之间可能存在线性相关关系的数据,PCA 能够把这组数据通过正交变换变 成各个维度之间线性无关的数据.经过 PCA 处理的数据中的各 ...
- 一文速学数模-降维模型(一)PCA(主成分分析法)原理以及应用+代码实现
目录 前言 一.为什么需要PCA?(为什么要降维) 二.PCA简介 三.PCA算法推导 1.投影 2.基 3.基变换的矩阵表示 编辑 4.方差 5.协方差 6.协方差矩阵 7.特征值与特征向量 8. ...
- 主成分分析法PCA(一):算法原理
一:算法概述: 主成分分析法,principle component analysis,PCA.也称主分量分析,是一种大样本,多变量数据间内在关系的一种方法.这种方法利用降维的思想,通过向量变换的方法 ...
- pca 矩阵 迹_主成分分析法(PCA)推导
主成分分析法(principal component analysis, PCA)是最常用的无监督高维数据降维方法之一,它旨在降维的过程中保留原数据中最重要的几个分量,从而达到最大化原数据方差的作用. ...
- 主成分分析法(PCA)及其python实现
主成分分析法(Principal Component Analysis,PCA)是一种用于把高维数据降成低维,使分析变得更加简便的分析方法.比如我们的一个样本可以由nnn维随机变量(X1,X2,... ...
- 机器学习 - 主成分分析法 (PCA)
文章目录 1. 主成分分析问题 2. 主成分分析算法 3. 重建的压缩表示 4. 选择主成分的数量 1. 主成分分析问题 主成分分析(PCA)是最常见的降维算法. 在PCA中,要做的是找到一个方向向量 ...
- Python 主成分分析法 PCA
主成分分析法是一种利用相关系数对数据进行降维的方法,可用于处理维数过多.指标意义不明确的数据.求相关系数的方法有很多种,下面只以协方差法为例 相关系数 输入是 shape 为 [sample, fea ...
- 从优化角度推导主成分分析法(PCA)的数学原理
PCA是Principle Component Analysis的简称,它的基本原理是:在保证数据总信息量尽可能大的前提下,将高维数据投影到低维空间内. 记原数据为 x = ( X 1 ...
最新文章
- 我家的漫路超市——怎么开淘宝网店
- 定制或外购适配器规格需求列表
- rtt 打印 float
- ios 内存管理的理解(五)ARC使用特点及注意事项
- c++ opencv4.5.0 头文件_简单的C程序分析(first.c程序)
- idea使用maven私服时下载源码
- 华硕fx60vm拆机图解_华硕fx60vm安装macOS10.13.6和Windows10双系统
- 王者荣耀苹果微信哪个服务器最强,王者荣耀:国服最高战力!这三个英雄最高战力比拼ios微信区完胜...
- 关于微信开放平台配置-网站应用
- Django开发了个人博客以及开通公众号
- C语言经典一百题(六)用*号输出字母C的图案。
- excel 删除多余回车
- 单机版swarm安装
- 17. A Unified Generative Framework for Aspect-Based Sentiment Analysis
- notepad++设置中文刷新后还是英文解决方法
- kafka面试题知识点整理
- 吾生也有涯,吾知也无涯_乌拉(7)
- DS1302实时时钟及实验【时序定义、数据读写】
- 《深度思维》跨越式*
- 英特尔诺基亚联手研发Symbian系统的智能手机