主成分分析法(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:

具体做法

  1. 导入所需的模块,除了 TensorFlow,还需要 numpy 进行基本的矩阵计算,用 matplotlib、mpl_toolkit 和 seaborn 绘制图形:

  1. 加载数据集,此处使用常用的 MNIST 数据集:

  2. 定义类 TF_PCA,此类初始化如下:

  3. 定义 fit 函数,计算输入数据的 SVD。定义计算图,以此计算奇异值和正交矩阵 U,self._X 以占位符的形式读入数据 self.data,tf.svd 以递减顺序返回形状为 […,p] 的奇异值 s(singular_values),然后使用 tf.diag 将奇异值转换为对角矩阵:

  4. 现在有了 sigma 矩阵、正交矩阵 U 和奇异值,下面定义 reduce 函数来计算降维数据。该方法需要 n_dimensions 和 keep_info 两个输入参数之一,n_dimensions 参数表示在降维数据中保持的维数,keep_info 参数表示保留信息的百分比(0.8意味着保持 80% 的原始数据)。该方法创建一个计算图,对 sigma 矩阵进行分割并计算降维数据集 Yr:

  5. TF_PCA 类已经准备就绪,下面会将 MNIST 的每个输入数据从维度为 784(28×28)减小到每个维度为 3。在这里为了对比效果只保留了 10% 的信息,但通常情况下需要保留大约 80% 的信息:

代码输出如下:

  1. 绘制三维空间中的 55000 个数据点:

    在这里插入图片描述

解读分析
前面的代码对 MNIST 图像进行了降维操作。原图的大小为 28×28,利用 PCA 方法把尺寸压缩得更小。通常在图像处理中经常用到降维操作,因为太大的图像尺寸包含大量的冗余数据。
TensorFlow 中的 embeddings 技术可以实现从对象到向量的映射,TensorBoard 中的 Embedding Projector 可以交互式地对模型的 embeddings 进行可视化,并提供了三种降维的方法:PCA、t-SNE 和自定义方式,可以使用 Embeddings Projector 来得到与上面类似的结果。
这需要从 tensorflow.contrib.tensorboard.plugins 中导入 projector,并且通过简单的三个步骤就可以完成:

  1. 加载数据:

  2. 新建一个 metadata 文件(用制表符分隔的 .tsv 文件):

  3. 将 embeddings 保存在 Log_DIR 中:

现在就可以使用 TensorBoard 查看 embeddings 了,通过命令行 tensorboard–logdir=log,在 Web 浏览器中打开 TensorBoard,然后进入 EMBEDDINGS 选项卡。下图显示的就是使用 PCA 方法运算的前三个主成分为轴的 TensorBoard 投影:

主成分分析法(PCA)原理和步骤相关推荐

  1. 数据降维之主成分分析法PCA

    主成分分析法PCA 参考链接:https://www.bilibili.com/video/BV1E5411E71z 主成分分析(Principal Component Analysis,PCA), ...

  2. 主成分分析(PCA)方法步骤以及代码详解

    主成分分析(PCA)方法步骤以及代码详解 前言 上一节我们了解到在构建神经网络模型,除了掌握如何搭建神经网络架构,了解参数具体含义,规避风险等方法.第一步是要对采用数据集的详细了解,无需接触任何神经网 ...

  3. sklearn 主成分分析法 PCA和IPCA

    主成分分析法 (PCA) 是一种常用的数据分析手段.对于一组不同维度 之间可能存在线性相关关系的数据,PCA 能够把这组数据通过正交变换变 成各个维度之间线性无关的数据.经过 PCA 处理的数据中的各 ...

  4. 一文速学数模-降维模型(一)PCA(主成分分析法)原理以及应用+代码实现

    目录 前言 一.为什么需要PCA?(为什么要降维) 二.PCA简介 三.PCA算法推导 1.投影 2.基 3.基变换的矩阵表示 ​编辑 4.方差 5.协方差 6.协方差矩阵 7.特征值与特征向量 8. ...

  5. 主成分分析法PCA(一):算法原理

    一:算法概述: 主成分分析法,principle component analysis,PCA.也称主分量分析,是一种大样本,多变量数据间内在关系的一种方法.这种方法利用降维的思想,通过向量变换的方法 ...

  6. pca 矩阵 迹_主成分分析法(PCA)推导

    主成分分析法(principal component analysis, PCA)是最常用的无监督高维数据降维方法之一,它旨在降维的过程中保留原数据中最重要的几个分量,从而达到最大化原数据方差的作用. ...

  7. 主成分分析法(PCA)及其python实现

    主成分分析法(Principal Component Analysis,PCA)是一种用于把高维数据降成低维,使分析变得更加简便的分析方法.比如我们的一个样本可以由nnn维随机变量(X1,X2,... ...

  8. 机器学习 - 主成分分析法 (PCA)

    文章目录 1. 主成分分析问题 2. 主成分分析算法 3. 重建的压缩表示 4. 选择主成分的数量 1. 主成分分析问题 主成分分析(PCA)是最常见的降维算法. 在PCA中,要做的是找到一个方向向量 ...

  9. Python 主成分分析法 PCA

    主成分分析法是一种利用相关系数对数据进行降维的方法,可用于处理维数过多.指标意义不明确的数据.求相关系数的方法有很多种,下面只以协方差法为例 相关系数 输入是 shape 为 [sample, fea ...

  10. 从优化角度推导主成分分析法(PCA)的数学原理

        PCA是Principle Component Analysis的简称,它的基本原理是:在保证数据总信息量尽可能大的前提下,将高维数据投影到低维空间内.     记原数据为 x = ( X 1 ...

最新文章

  1. 我家的漫路超市——怎么开淘宝网店
  2. 定制或外购适配器规格需求列表
  3. rtt 打印 float
  4. ios 内存管理的理解(五)ARC使用特点及注意事项
  5. c++ opencv4.5.0 头文件_简单的C程序分析(first.c程序)
  6. idea使用maven私服时下载源码
  7. 华硕fx60vm拆机图解_华硕fx60vm安装macOS10.13.6和Windows10双系统
  8. 王者荣耀苹果微信哪个服务器最强,王者荣耀:国服最高战力!这三个英雄最高战力比拼ios微信区完胜...
  9. 关于微信开放平台配置-网站应用
  10. Django开发了个人博客以及开通公众号
  11. C语言经典一百题(六)用*号输出字母C的图案。
  12. excel 删除多余回车
  13. 单机版swarm安装
  14. 17. A Unified Generative Framework for Aspect-Based Sentiment Analysis
  15. notepad++设置中文刷新后还是英文解决方法
  16. kafka面试题知识点整理
  17. 吾生也有涯,吾知也无涯_乌拉(7)
  18. DS1302实时时钟及实验【时序定义、数据读写】
  19. 《深度思维》跨越式*
  20. 英特尔诺基亚联手研发Symbian系统的智能手机

热门文章

  1. 【Code pratice】——星期一、猜年龄、合并检测、生日蜡烛
  2. python字典找相同值_python-找出字典dic中重复值
  3. H5页面实现微信授权登录
  4. 人脸活体检测人脸识别:眨眼+张口
  5. BZOJ1299 巧克力棒
  6. con和com开头单词规律_英语单词速记小技巧
  7. Excel数据透视表如何创建?
  8. 电脑关机同步服务器信息失败,电脑同步,更新时间失败,怎么处理?
  9. 图片裁剪,合成(设置透明背景)
  10. c#锁定Excel工作表和单元格