上图讲述的两组数据,可以看到左图的数据离散度比较大,相关性比较弱,右图数据的相关性比较强;我们在使用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原理解释的更多相关文章

  1. PCA原理解释(二)

    PCA在做数据处理,一般会有一个数据预处理,其中一个目标就是将取数据特征向相关性. 为什么要去特征的相关性? 因为数据如果有相关性,在学习的时候是冗余的,徒增学习成本:所以对于数据处理(也称之为白化, ...

  2. PCA原理与实践

    在对数据进行预处理时,我们经常会遇到数据的维数非常之大,如果不进行相应的特征处理,那么算法的资源开销会很大,这在很多场景下是我们不能接受的.而对于数据的若干维度之间往往会存在较大的相关性,如果能将数据 ...

  3. Kernel PCA 原理和演示

    Kernel PCA 原理和演示 主成份(Principal Component Analysis)分析是降维(Dimension Reduction)的重要手段.每一个主成分都是数据在某一个方向上的 ...

  4. 主成分分析(PCA)原理与实现

    主成分分析原理与实现   主成分分析是一种矩阵的压缩算法,在减少矩阵维数的同时尽可能的保留原矩阵的信息,简单来说就是将 \(n×m\)的矩阵转换成\(n×k\)的矩阵,仅保留矩阵中所存在的主要特性,从 ...

  5. 降维算法----PCA原理推导

    1.从几何的角度去理解PCA降维 以平面坐标系为例,点的坐标是怎么来的? 图1                                                             ...

  6. UDP 打洞 原理解释

    终于找到了一份满意的UDP打洞原理解释,附上正文,自己整理了一下源码 3.3. UDP hole punching UDP打洞技术 The third technique, and the one o ...

  7. [分享]Host文件的原理解释及应用说明

    Host文件的原理解释及应用说明   Host文件位置及打开方式:   Window系统中有个Hosts文件(没有后缀名), Windows 98系统下该文件在Windows目录,在Windows 2 ...

  8. 用EM4305/T5557模拟EM4100的ID卡,原理解释

    用EM4305/T5557模拟EM4100,原理解释 来源: https://www.cnblogs.com/osnosn/p/10593297.html 来自osnosn的博客 写于: 2019-0 ...

  9. PLSQL连接ORACLE配置字符串简介 oracle网络配置 三个配置文件 listener.ora、sqlnet.ora、tnsnames.ora原理解释

    PLSQL连接ORACLE配置字符串简介 oracle网络配置 三个配置文件 listener.ora.sqlnet.ora.tnsnames.ora原理解释 oracle网络配置三个配置文件 lis ...

随机推荐

  1. golang切片类型

    切片slice 其本身并不是数组,它指向底层的数组 作为变长数组的替代方案,可以关联底层数组的局部或全部 为引用类型 可以直接创建或从底层数组获取生成 使用len()获取元素个数,cap()获取容量 ...

  2. ios中 pickerView的用法

    今天是一个特殊的日子(Mac pro 敲的 爽... 昨天到的) // // QRViewController.m// #import "QRViewController.h" @ ...

  3. python 时间戳算法

    根据当前时间戳获得整小时时间戳 unit = 3600 start_time = int(time.time())/3600 * 3600 根据当前时间戳获得整天时间戳 unit = 3600*24 ...

  4. 解析JSON 注意解析数据为一个对象的情况.--加一下说明

    应用场景: 调某接口时, 获取json数据, 需要对数据进行解析 . 第一种: 只判断接口是否调用成功 { "code":"10102000", "d ...

  5. JAVA_概念01_跨域

    1.什么是跨域? 协议.域名.端口都相同是同域,否则是跨域. 服务器不允许ajax跨域获取数据 2.解决办法? ①jsonp :Jsonp不是一种数据格式,而json是一种数据格式,jsonp是用来解 ...

  6. saliency 2015-2016的论文、代码

    https://github.com/ArcherFMY/Paper_Reading_List 另外2013年之前的见chengmingming的benchmark主页.

  7. C高级第三次作业

    C高级第三次作业(1) 6-1 输出月份英文名 1.设计思路 (1)算法: 第一步:定义整型变量n,字符指针s,输入一个数赋给n. 第二步:调用函数getmonth将值赋给s. 第三步:在函数getm ...

  8. DQN-深度Q网络

    深度Q网络是用深度学习来解决强化中Q学习的问题,可以先了解一下Q学习的过程是一个怎样的过程,实际上就是不断的试错,从试错的经验之中寻找最优解 关于Q学习,我看到一个非常好的例子,另外知乎上面也有相关的 ...

  9. pat--7-11 出栈序列的合法性(25 分)

    7-11 出栈序列的合法性(25 分) 给定一个最大容量为 M 的堆栈,将 N 个数字按 1, 2, 3, ..., N 的顺序入栈,允许按任何顺序出栈,则哪些数字序列是不可能得到的?例如给定 M=5 ...

  10. BFS广度优先搜索 poj1915

    Knight Moves Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 25909 Accepted: 12244 Descri ...