PCA原理解释
上图讲述的两组数据,可以看到左图的数据离散度比较大,相关性比较弱,右图数据的相关性比较强;我们在使用PCA的时候,就是要将相关性强的数据进行降维,以减少处理的数据量。
那么怎么描述数据的相关性呢?使用期望,协方差以及相关系数:下面分别是左图和右图的数字特征:
其实其关键性做得是R,R说明了点间的相关性,但是想要知道R你必须要知道Sigma(X),想要知道Sigma(X)你有必须要知道期望,所以获取点间的关系,必须要求得期望和协方差。
协方差的价值有量个:
1.协方差大于零说明两套数据变化趋势是一致的;
2. 协方差=0,说明数据没有相关性
注意,这里说的是协方差,对于方差而言,方差值大小代表数据离散程度。
协方差矩阵的作用:
1. 对角线上面的是数据的方差;
2. 无关数据的形式除了对角线上的数据,其他都是0.
那么我们现在目标是找到一个新的坐标系,将xy坐标系中相关数据进行映射,保证了在新的坐标体系下面,数据是不相关的,即:他们的协方差矩阵除了对角线之外全为0。
假设存在这个平面,之前的数据为x,新的映射平面y,有
y = Gx,G为常量矩阵,实现了x数据的伸缩和旋转,这里应该主要是旋转;
于是,这个新的坐标系下面的y可以推导为:
sigma(y) = E{[y - E(y)][y - E(y)].T}
sigma(y) = E{[Gx - E(Gx)][Gx - E(Gx].T}
sigma(y) = GE{[x - E(x)][x - E(x)].T}G.T
sigma(y) = Gsigma(x)G.T
因为目标是sigma(y)中,除了对角线,其他点都是0, 为了满足这一点,首先G应该是sigma(x)的特征矢量的转置,而且是一个正交矩阵,这样就满足了最终的结果是:
对角线的值就是各个维度的方差值。同时按照从大到小的排列,这里采用的是K-L变换(霍特林变换)。所谓的主成分,就是排在前面的几个λ对应的特征,取决于你打算要几个主成分。
然后,用x去乘以所选取的特征向量组(所选的几个λ对应的特征向量),这个操作本质完成的数据的旋转,将数据旋转到一个维度减少"平面",这个平面能够包含主成分的数据(非主成分的数据飞出平面也无所谓了,所谓主成分就是大多数的数据);所谓包含即使指投影,将原来空间的数据项旋转后的平面做投影。
PCA的的协方差部分解释完了,下面就是在上面最后提到了特征矢量(特征向量),什么是特征向量?对于方阵矩阵A:
Ax = λx
λ称之为方阵A的特殊值,x就是方阵A对应λ的特征向量,由定义的公式可以变型为:
(A - λE)x = 0
其中|A - λE|称之为特征多项式。求λ的思路就是首先求行列式|A - λE| = 0来获得特征值;然后再将将特征值带入到(A - λE)x = 0中可以求得基础解系pi,k*pi都是A的特征向量。
紧接着,我们看一下什么是基础解系呢?
基础解系首先是向量组线性相关的概念,在介绍基础解系之前要明白什么是解向量:
上式可以简化写成向量方程:Ax = 0;
那么向量[x1,x2,x3...,xn)就是方程(1)的解向量,是Ax=0的解。
解向量有如下的性质:
1) A(x1 + x2) = Ax1 + Ax2 = 0
2) A(kx1) = kA(x1) = 0
由上可得:x = k1x1 + k2x2 + ... + knxn,这个就叫做方程Ax = 0的通解;
齐次线性方程组的最大无关组,称之为该齐次线性方程组的基础解系,所以求通解,只要把基础解系(即x1,x2,...,xn)求出来,既可以求得通解。
在求解过程上,首先将矩阵A进行最简行变化,选择转化为方程式,然后从中选取n - r个变量作为非自有解,指定具体的值,从而推算出r个自由变量的值,这个r个自由变量的值就是在配上之前的非自由解,就确定了一组基础解析。在求解基础解系的过程中,用到了一个定理:
设m * n矩阵,R(A) = r,则n元齐次线性方程组Ax = 0的解集S的秩Rs = n - r。
说明:设R(A) = n的时候,没有基础解析,只有零向量;R(A) < n的时候,方程式的基础解系中包含有n - r个解。根据最大无关性质,方程组(1)中任意n - r个解都可以组成一个基础解系,所以,方程组的基础解系并不唯一 => 通解形式也不唯一。
一个一个的来捋,首先思考一下为什么R(A) = n只有零向量呢?首先要建立一个概念,就是矩阵方程的理念是用别的变量来表示变量,例如下面的情况:
x1 = -x2 +2 * x3 - x4 - 4 * x5
x2 = x3 - x4
x4 = 3 * x5
x1, x2, x4叫做非自由变量,因为他们是需要其他变量来进行表示;设想一下,如果R(A) = n将会发生什么情况:xn = 0!满秩代表着x[n-1]是由xn表示,那么=>x[n-1]是0以此类推,所有的x都是0,所以,如果R(A) = n,那么只有零解。
第二个,里面提到了"最大无关性质",什么是最大无关?上面我们提到了非自由变量有自由变量线性来表示;这个其实就是"线性表示",只有向量组(矩阵)是线性相关的时候才时候,才能够实现线性表示。那么什么是线性表示?除了公式中给出的表示之外,在二维空间里面,线性相关代表共线,在三维空间中,代表共面。
最大无关组:
1)向量组A0:a1, a2, a3, ..., ar线性无关;
2)向量组A中任何r+1个向量都是线性相关的,那么
称A0为最大无关向量组,简称最大无关组。最大无关组所包含向量的数量,称之为秩。
好了,这次就先挖到这里吧。
参考:
中心化(又叫零均值化)和标准化(又叫归一化)
https://blog.csdn.net/GoodShot/article/details/80373372
图像处理中的数学原理详解20——主成分变换(PCA)
https://blog.csdn.net/baimafujinji/article/details/50372906
图像处理中的数学原理详解21——PCA实例与图像编码
https://blog.csdn.net/baimafujinji/article/details/50373143
PCA原理解释的更多相关文章
- PCA原理解释(二)
PCA在做数据处理,一般会有一个数据预处理,其中一个目标就是将取数据特征向相关性. 为什么要去特征的相关性? 因为数据如果有相关性,在学习的时候是冗余的,徒增学习成本:所以对于数据处理(也称之为白化, ...
- PCA原理与实践
在对数据进行预处理时,我们经常会遇到数据的维数非常之大,如果不进行相应的特征处理,那么算法的资源开销会很大,这在很多场景下是我们不能接受的.而对于数据的若干维度之间往往会存在较大的相关性,如果能将数据 ...
- Kernel PCA 原理和演示
Kernel PCA 原理和演示 主成份(Principal Component Analysis)分析是降维(Dimension Reduction)的重要手段.每一个主成分都是数据在某一个方向上的 ...
- 主成分分析(PCA)原理与实现
主成分分析原理与实现 主成分分析是一种矩阵的压缩算法,在减少矩阵维数的同时尽可能的保留原矩阵的信息,简单来说就是将 \(n×m\)的矩阵转换成\(n×k\)的矩阵,仅保留矩阵中所存在的主要特性,从 ...
- 降维算法----PCA原理推导
1.从几何的角度去理解PCA降维 以平面坐标系为例,点的坐标是怎么来的? 图1 ...
- UDP 打洞 原理解释
终于找到了一份满意的UDP打洞原理解释,附上正文,自己整理了一下源码 3.3. UDP hole punching UDP打洞技术 The third technique, and the one o ...
- [分享]Host文件的原理解释及应用说明
Host文件的原理解释及应用说明 Host文件位置及打开方式: Window系统中有个Hosts文件(没有后缀名), Windows 98系统下该文件在Windows目录,在Windows 2 ...
- 用EM4305/T5557模拟EM4100的ID卡,原理解释
用EM4305/T5557模拟EM4100,原理解释 来源: https://www.cnblogs.com/osnosn/p/10593297.html 来自osnosn的博客 写于: 2019-0 ...
- PLSQL连接ORACLE配置字符串简介 oracle网络配置 三个配置文件 listener.ora、sqlnet.ora、tnsnames.ora原理解释
PLSQL连接ORACLE配置字符串简介 oracle网络配置 三个配置文件 listener.ora.sqlnet.ora.tnsnames.ora原理解释 oracle网络配置三个配置文件 lis ...
随机推荐
- <顺序访问><随机访问><HDFS>
Overview 如果你了解过HDFS,至少看过这句话吧: HDFS is a filesystem designed for storing very large files with stream ...
- leetcode55:跳跃游戏
解题思路1: 从头往后找每一个为0的元素,判断这个0能够跳过,所有的0都能跳过,则返回True,否则返回False 解题思路2: 从前往后遍历数组,设置一个访问到当前位置i时最远可调到的距离maxle ...
- chromium ③
chromium源码学习笔记(1) -- 学习计划 对于c++开发者来说,chromium几乎是目前最值得学习的优秀开源代码.先看看chromium包含了多少令人激动的特性: 1, ...
- Python扩展库1—numpy
1 数组对象 创建数组 import numpy as np a = np.arange(10) b = np.arange(2,10,1) #[2,10)步长为1 c = np.linspace ...
- 内存直读技术DMA
DMA(Direct Memory Access) DMA(Direct Memory Access)即直接存储器存取,是一种快速传送数据的机制. 工作原理 DMA是指外部设备不通过CPU而直接与系统 ...
- [工作日志] 2018-11-21 主要: 改bug 自测 :校验图片后缀名
正则表达式 用以下方式去校验图片的后缀 String reg = ".+(.JPEG|.jpeg|.JPG|.jpg)$";String imgp= "Redocn_20 ...
- [转]linux C/C++服务器后台开发面试题总结
linux C/C++服务器后台开发面试题总结 https://www.cnblogs.com/nancymake/p/6516933.html 一.编程语言 1.根据熟悉的语言,谈谈两种语言的区别 ...
- TensorRT caffemodel serialize
1.TensorRT的需要的文件 需要的基本文件(不是必须的) 1>网络结构文件(deploy.prototxt) 2>训练的权重模型(net.caffemodel) TensorRT 2 ...
- JavaBasic_06
二维数组 二维数组定义格式 格式1 数据类型 变量名 = new 数据类型m; m表示这个二维数组有多少个一维数组 n表示每一个一维数组的元素个数 格式2 灵活性 数据类型 a = new 数据类型m ...
- Gym - 101889D:Daunting device (老司机树)
题意:N个格子排出一排,开始格子颜色都是1:现在有M个操作: 或,把区间[L,R]颜色改为c: 或,查询一共有多少格子颜色为c. 最后求颜色最多的数量. 数据是随机的,且强制在线. 思路:ODT裸题. ...