热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

对于PCA的认识

PCA(Principalcomponentanalysis)是一种多元统计方法。最近在研究PCA在故障检测上的运用。在这里说说我对PCA的认识。首先,我们需要有一组数据X,X是n行m列

  PCA(Principal component analysis)是一种多元统计方法。最近在研究PCA在故障检测上的运用。在这里说说我对PCA的认识。

  首先,我们需要有一组数据X,X是n行m列的数据,为了方便,我们认为数据是均值为0,方差为1的数据。其中n为样本数,m为变量。我们可以找到一个线性组合T=XP,其中T=(t1,t2,...,tm)(T为得分矩阵,Rn*m),P=(p1,p2,...,pm)(p为负载矩阵,Rm*m)。

其中使得 (1)ti和tj线性无关。

    (2)t1是使X一切线性组合中方差最大的,t2是使满足(1)后X一切线性组合中方差最大的。。。

    (3)ti=Xpi的系数满足piTpi=1.

 

其实,以上三个要求就是将原数据进行平移旋转,但是也不能随意的旋转,我们需要找个一组坐标系,使得我们的数据在这个新的坐标系上能有最清晰的反应。这个指标就是方差,我们需要找到一组使这组数据方差最大的一个坐标系,然后找到这个坐标系之后,我们选取其方向的单位向量来表示这个坐标系。

 

  这个新的坐标系的具体求解方法如下:

(1)将数据X中心化((x-u)/std(x)),得到新的数据仍然用X表示。

(2)计算X的协方差矩阵∑=XT*X。并对其进行特征值分解,得到特征值Λ',和对应的特征向量矩阵P'。然后我们对特征值按其大小按从大到小排序,对应的特征向量也进行排序得到Λ和P,就找到满足条件的坐标系。

 

以上是坐标系的变换,但PCA不仅仅如此。PCA可以在一定置信度下,将高维数据用较少维数的数据表示,也就是降维的功能。下面来解释。

首先,我们对一个100*3的数据进行PCA处理,得出负载矩阵P。我们选取负载矩阵中前两个向量作为主元空间,将其画出来的话是这个样子的:

 

蓝色的点为原数据点,红色向量为第一主轴,黑色向量为第二主轴,绿色向量对应残差方向(对应的方差太小,可以被忽略)。平面为第一、第二主轴构成的平面。

可以明显的看到,原数据与主元空间(就是平面)的关系,原数据并不全在主元空间内,但是残差方向的方差是最小的。

我们先是通过旋转获得可以使数据方差最大主轴,然后我们进行降维。降维后的数据如下图:


 

 

 

 

 

 

 

 

 

 

 

 

两张图都是降维后的图形,旋转下能看得更清楚,降维后的数据都在主元空间内了。由于残差方向的信息比较小,PCA忽略了这一部分信息,用降维后的数据来表示原数据。个人觉得PCA降维就是把原数据压扁在主元空间里面,残差方向都变为0了(个人觉得这样最形象了,请自行补脑。。)。PCA的降维其实去掉了一部分噪声,使多维数据更加精简。

 

以上内容是个人对PCA的理解,如有不足,望指正。

 


推荐阅读
  • 本文详细介绍了 C# 编程语言中 Main 方法的作用、不同形式及其使用场景,帮助开发者更好地理解和应用这一重要概念。 ... [详细]
  • 专业词汇解析与应用
    本文介绍了多个英语专业词汇,包括它们的发音、含义及用法示例,旨在帮助读者扩大词汇量并提升语言运用能力。同时,文中还提及了2019年某独角兽企业对Python工程师的高薪招聘标准,为求职者提供参考。 ... [详细]
  • Python图像处理库概览
    本文详细介绍了Python中常用的图像处理库,包括scikit-image、Numpy、Scipy、Pillow、OpenCV-Python、SimpleCV、Mahotas、SimpleITK、pgmagick和Pycairo,旨在帮助开发者和研究人员选择合适的工具进行图像处理任务。 ... [详细]
  • 本文介绍了如何利用Python的Turtle库来绘制奥运五环。通过设置不同的颜色和位置,能够精确地模拟奥运标志。 ... [详细]
  • 本文详细介绍了Java中`org.sakaiproject.site.api.Site.addPage()`方法的功能和使用方法,并提供了多个实际项目中的代码示例。 ... [详细]
  • 图像中的边缘信息主要集中在高频部分,因此图像锐化或边缘检测实质上是进行高频滤波。微分运算能够增强信号的高频成分,从而在空间域中通过计算微分实现图像锐化。本文将详细介绍如何使用 Python 实现 Canny 边缘检测算法。 ... [详细]
  • 解决PHP与MySQL之间的编码不匹配问题
    探讨如何有效解决PHP与MySQL之间常见的编码问题,确保数据的正确传输与显示。 ... [详细]
  • 使用Python和NumPy高效计算向量间欧氏距离的方法
    本文详细探讨了如何利用Python中的NumPy库来计算两个向量间的欧氏距离,并提供了具体的代码示例,旨在为开发者提供实用的技术指南。 ... [详细]
  • 本文探讨了在一个UIViewController中同时存在两个或更多tableView时,若它们的初始Y坐标相同,则可能出现布局异常的问题,并深入解析了automaticallyAdjustsScrollViewInsets属性的作用及其设置方法。 ... [详细]
  • A题简单判断#includeusingnamespacestd;typedeflonglongll;intt;intmain(){cint;whil ... [详细]
  • 本章深入探讨了如何在JavaScript游戏中有效地管理和使用图像(精灵)及声音资源,包括加载、绘制和播放等关键步骤。 ... [详细]
  • Flutter 高德地图插件使用指南
    本文档详细介绍了如何在Flutter项目中集成和使用高德地图插件,包括安装、配置及基本使用方法。 ... [详细]
  • 本文章介绍了如何将阿拉伯数字形式的金额转换为中国传统的大写形式,适用于财务报告和正式文件中的金额表示。 ... [详细]
  • 本文将深入讨论原地排序的定义及其在实际应用中的表现,特别是通过对比非原地排序和原地排序的实现方式来解析这一概念。 ... [详细]
  • 本文详细介绍了如何在Android游戏中实现360°平滑触屏摇杆,包括摇杆的基本设计原理和具体实现步骤。 ... [详细]
author-avatar
zzzzzzzzssss
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有