本文主要思路如下:

1 PCA优化目标

PCA(主成分分析)是一种数据降维的方法,即用较少特征地数据表达较多特征地数据(数据压缩,PCA属于有损压缩)。PCA推导有两种主要思路:

  1. 最大化数据投影后的的方差(让数据更分散)
  2. 最小化投影造成的损失

本文采用第一种思路完成推导过程,下图中旋转的是新坐标轴,每个数据点在改坐标轴上垂直投影,最佳的坐标轴为数据投影后的数据之间距离最大。

图1 数据投影到新坐标轴

要完成PCA推导过程,需要如下第 2 章部分的理论依据

2 理论依据

2.1 矩阵换基底

坐标变换地目标是,找到一组新的正交单位向量,替换原来的正交单位向量。下面通过具体例子说明。

假设存在向量

,要变换导以
为新基底地坐标上,求在心坐标系中的坐标
向量
在向量
上的投影距离 s:

其中:

表示两个向量之间的夹角
向量
在新坐标系中的坐标可以表示为:

如果矩阵 A 的列向量分别表示原来坐标系中的点,那么在新坐标系中的坐标为:

如果

表示一系列数据点的中心,那么可以证明:

经过上面的变换之后,新坐标系相比原坐标系顺时针旋转了45度;

相对新坐标系位置和相对原坐标系位置发生了逆时针旋转45度。即:上述变换过程为向量的

旋转过程,旋转的角度=-坐标系旋转角度

如果

,那么:

即:

相比
,2个坐标分别放大了
倍和
倍。即向量发生了

伸缩

2.2 拉格朗日乘子法

拉格朗日乘子法主要提供了一种求解函数在约束条件下极值的方法。下面还是通过一个例子说明。

假设存在一个函数

,求该函数在
下的极值(可以是极大,也可以极小)

通过观察我们发现,在极值点的时候两个函数必然相切,即此时各自的导数成正比,从而:

通过联立上述三个公式,既可以求出最终结果。拉格朗日算子的主要思路同上,不过他假设了一个新的函数:

然后分解求:

从而完成求解过程

2.3 协方差矩阵

假设有一组数据:

协方差研究的目的是变量(特征)之间的关系,也就是上表中的发传单数量、购买数量、购买总额之间的相关情况

上表数据用矩阵表示为:

那么两两变量之间的关系:

如果E(x)=E(y)=E(z)=0(可以通过数据初始化实现),那么上述的协方差关系可以用如下矩阵乘法表示:

如果把对角线上的数据加起来会发现:

也就是说每个样本点到样本中心距离的平方和的平均 = 样本各个特征方差和(自身协方差)= ​

,即样本的方差

2.4 特征向量和奇异值分解

2.4.1 特征向量

参考:

特征值和特征向量​www.jianshu.com

假设:左侧矩形由

定义,右侧矩形由
定义。

根据 2.1 矩阵拉伸变换的结果,变换矩阵

,即:

在应用变换矩阵变换时,我们发现存在与上图中红色向量平行的向量

,他们总满足:

即:

所以:红色的特征向量不受变换矩阵的影响,仍保持原来的方向,我们称这类向量为变换矩阵A的特征向量,对应的

为特征值。又因为特征向量有很多个,即:

所以:

其中:Q的列向量都是A变换矩阵的特征向量

另外,在做旋转变换时,要求变换前后的坐标维度不发生改变,即A须为方阵

综上:如果方阵A满足

,那么Q为特征向量,
为对应的特征值

2.4.2 奇异值分解

奇异值分解(svd: singular value decomposition)定义:对于任意的矩阵A,存在:

其中:

即:U的列向量两两正交且模为1,V列向量两两正交且模为1,即:

2.4.3 特征向量和奇异值分解的关系

对于任意矩阵

,对A做svd有:

,则:

所以

能实现特征分解,又因为:

所以:

因此:对

做SVD,那么得到的U''列向量为特征向量(对应A的U矩阵),
为特征值对角阵

同理:对

做SVD,那么得到的U''列向量为特征向量(对应A的V矩阵),
为特征值对角矩阵

3 PCA

3.1 PCA推导

PCA的目标是找到一组新的正交基

(从n维下降到k维),使得数据点在该正交基构成的平面上投影后,数据间的距离最大,即数据间的方差最大。如果数据在每个正交基上投影后的方差最大,那么同样满足在正交基所构成的平面上投影距离最大。

根据2.1,设正交基

,数据点
在该基底上的投影距离为
,所以所有数据在该基底上投影的方差
为:

其中:m为样本数量,在数据运算之前对数据 x 进行0均值初始化,即

,从而:

所以:

由于

为常数,这里假设
,则:
,根据PCA目标,我们需要求解
最大时对应的

根据 2.2 中的拉格朗日算子(求极值)求解:

则构造函数:

求解

,得:

结合2.4.1则:当

分别为S矩阵的特征向量、特征值时,
有极值,把上述结果带回公式得:

所以对于任意满足条件的正交基,对应的数据在上面投影后的方差值为S矩阵的特征向量,从而:

所以投影正交基为S的特征向量中的前k个最大特征值对应的特征向量。

接下来对S进行特征分解,根据2.4.3特征向量和svd的关系结论,S的特征向量集合:

另外,由于

由于X已0均值处理,根据2.3 协方差矩阵定义:S为数据集X的协方差矩阵。

综上,即可得到满足投影后数据距离最大的新的正交基

因此:

3.2 PCA过程总结

PCA流程如下:

  1. 初始化X,使得所有样本之间的特征值均值为0,同时应用feature scaling,缩放到-0.5~0.5 ;
  2. 计算X的协方差矩阵S;
  3. 对S进行SVD分解,U即我们要求的新坐标系集合,
    为特征值集合(计算时特征值都会大于0,且结果会从小到大排列);
  4. 按照特征值从大到小排序,要降低为k维,那么取前k个特征值对应的特征向量,就是新的k个坐标轴
  5. 把X映射到新的坐标系中,完整降维操作;

根据之前的公式,做PCA投影后,投影数据的方差:

又因为:数据从n维投影新的n维的坐标系,方差不会发生改变(向量的模长度相等且为1,可以用2D坐标系投影到45-135度坐标系验证),即:

即:X的协方差矩阵的特征值和对应X的方差

3.3 主成份数量的选择

PCA使得数据从n维降低为k维度,接下来介绍如何选择合适的k。一般选择标准为:投影前后方差比例值,作为k值的选择标准。距离来说,我们期望:

其中q一般选择0.99。根据PCA总结中特征协方差矩阵和X方差的关系得:

因此主成份数量k根据上述公式求得满足条件的最小k

本文同时发布于CSDN博客:

详细推导PCA算法(包括算法推导必备的知识) - 怪兽 - CSDN博客​blog.csdn.net

pca各个向量之间的相关度_详细推导PCA算法相关推荐

  1. pca各个向量之间的相关度_主成分分析(PCA)特征选择算法详解

    1. 问题 真实的训练数据总是存在各种各样的问题: 1. 比如拿到一个汽车的样本,里面既有以"千米/每小时"度量的最大速度特征,也有"英里/小时"的最大速度特征 ...

  2. pca各个向量之间的相关度_【T】排序--1--PCA主成分分析principal component analysis

    1. 问题 真实的训练数据总是存在各种各样的问题: 1. 比如拿到一个汽车的样本,里面既有以"千米/每小时"度量的最大速度特征,也有"英里/小时"的最大速度特征 ...

  3. pca各个向量之间的相关度_机器学习十大经典算法之PCA主成分分析

    PCA主成分分析法简介 主成分分析算法(PCA)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中,并期望在所投影的维度上数据的信息量最大(方差最大),以此使用较少的数 ...

  4. pca各个向量之间的相关度_PCA主成分分析

    降维就是一种对高维度特征数据预处理方法.降维是将高维度的数据保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的.降维的算法有很多,比如奇异值分解(SVD).主成分分析(PC ...

  5. pca各个向量之间的相关度_PCA算法原理及实现

    来自:海边的拾遗者 众所周知,PCA(principal component analysis)是一种数据降维的方式,能够有效的将高维数据转换为低维数据,进而降低模型训练所需要的计算资源. 以上是比较 ...

  6. 阶跃函数卷积自己_详细推导卷积算法

    本文的主要思路如下: 1 从测量飞船的例子开始 假设 表示第 时刻测量到的宇宙飞船位置.由于信号存在干扰,我们取该时刻的前 次测量结果的期望作为该次测量的最终结果.我们用 表示这 次测量里的一个时刻, ...

  7. ML之MLiR:输入两个向量,得出两个向量之间的相关度

    ML之MLiR:输入两个向量,得出两个向量之间的相关度 目录 输出结果 实现代码 输出结果 实现代码 import numpy as np from astropy.units import Ybar ...

  8. 详细推导PCA算法(包括算法推导必备的知识)

    文章目录 1. PCA优化目标 2.理论依据 2.1 矩阵换基底 2.2 拉格朗日乘子法 2.3 协方差矩阵 2.4 特征向量和奇异值分解 2.4.1 特征向量 2.4.2 奇异值分解 2.4.3 特 ...

  9. python如何实现小车行走_[详细推导]基于EKF的小车运动模型的python编程实现

    一.任务介绍 在本任务中,您将使用可用的测量值和运动模型来递归估计车辆沿轨迹的位置.车辆有了非常简单的LIDAR传感器,可以返回与环境中各个地标相对应的范围(range)和方位测量值(bearing) ...

最新文章

  1. Ubuntu软件包管理相关部分命令
  2. WiFi Deauthenticated Reason Codes
  3. 【CV秋季划】人脸编辑之统一属性编辑方法视频更新
  4. boot返回码规范 spring_SpringBoot 系列 web 篇之自定义返回 Http Code 的 n 种姿势
  5. android运行的线程中,android中线程是否运行在单独的进程中?
  6. Linux内核 eBPF基础:Tracepoint原理源码分析
  7. 使用Git子模块和开发模式管理Python项目
  8. 解决父类加载iframe,src参数过大导致加载失败
  9. 基于统计的压缩算法:游程编码
  10. (转)财新特稿丨风口浪尖上,李笑来谈ICO
  11. 阿里云云计算 3 阿里云产品全家福
  12. 恋爱物语iapp源码导入就可以用
  13. 话筒在multisim怎么找_基于Multisim软件的调频无线话筒仿真
  14. c语言图片百叶窗特效,Flash遮罩特效实例--百叶窗效果
  15. 在母亲节刷屏几天后,为母亲踏踏实实做点事
  16. 2021年人工智能(AI)的五大发展方向
  17. 恕我直言!千万别随便叫一个程序员为“码农”
  18. 序列模型与注意力机制总结
  19. Objective-C中的instancetype和id区别
  20. 大球吃小球html5,怎么用html5制作简单的大球吃小球的游戏

热门文章

  1. 服务器重启宝塔面板打不开了【已完美解决】
  2. 监控mysql主从的工具_zabbix利用percona-toolkit工具监控Mysql主从同步状态
  3. EasyNVR摄像机网页无插件直播方案H5前端构建之:使用BootstrapPagination以分页形式展示数据信息...
  4. response.sendRedirect(url)与request.getRequestDispatcher(url).forward(request,response)的区别
  5. [BZOJ4542] [Hnoi2016] 大数 (莫队)
  6. Android 对话框用法
  7. SharePoint 2013连接非默认端口的SQL Server
  8. Xcode 证书生成、设置、应用(转)
  9. php打印js函数,JS局部打印方法
  10. C语言之抽象数据类型(四十七)