协方差矩阵与PCA深入原理剖析

2023-10-27

一、协方差矩阵


一个维度上方差的定义:


协方差的定义:

(a)

协方差就是计算了两个维度之间的相关性,即这个样本的这两个维度之间有没有关系。

协方差为0,证明这两个维度之间没有关系,协方差为正,两个正相关,为负则负相关。


协方差矩阵的定义:

对n个维度,任意两个维度都计算一个协方差,组成矩阵,定义如下

直观的对于一个含有x,y,z三个维度的样本,协方差矩阵如下


可以看出,对角线表示了样本在在各个维度上的方差。

其他元素表示了不同维度之间两两的关联关系。


二、协方差矩阵的计算

(1)先让样本矩阵中心化,即每一维度减去该维度的均值,使每一维度上的均值为0,

(2)然后直接用新的到的样本矩阵乘上它的转置

(3)然后除以(N-1)即可‘


数学推导相对容易,样本矩阵中心化以后,样本均值为0,因此式a中每个维度无需减去均值,只需要进行与其他维度的乘法,

这样就可以用转置相乘实现任意两两维度的相乘。


三、矩阵相乘的“变换的本质”理解

A*B两个矩阵相乘代表什么?

A的每一行所表示的向量,变到B的所有列向量为基底表示的空间中去,得到的每一行的新的表示。

B的每一列所表示的向量,变到A的所有行向量为基底表示的空间中去,得到的每一列的新的表示。


三、PCA深入

PCA的目的是降噪和去冗余,是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。

样本矩阵的格式:

样本1 [特征a1,特征a2,特征a3,.....,特征an]

样本2 [特征a1,特征a2,特征a3,.....,特征an]

样本3 [特征a1,特征a2,特征a3,.....,特征an]

样本4 [特征a1,特征a2,特征a3,.....,特征an]

PCA后:r<n

样本1 [特征b1,特征b2,特征b3,.....,特征br]

样本2 [特征b1,特征b2,特征b3,.....,特征br]

样本3 [特征b1,特征b2,特征b3,.....,特征br]

样本4 [特征b1,特征b2,特征b3,.....,特征br]

直白的来说,就是对一个样本矩阵,

(1)换特征,找一组新的特征来重新表示

(2)减少特征,新特征的数目要远小于原特征的数目


我们来看矩阵相乘的本质,用新的基底去表示老向量,这不就是重新找一组特征来表示老样本吗???

所以我们的目的是什么?就是找一个新的矩阵(也就是一组基底的合集),让样本矩阵乘以这个矩阵,实现换特征+减少特征的重新表示。


因此我们进行PCA的基本要求是:

(1)第一个要求:使得样本在选择的基底上尽可能的而分散。

为什么这样?

极限法,如果在这个基底上不分散,干脆就在这个基地上的投影(也就是特征)是一样的。那么会有什么情况?


想象一个二维例子:

以下这一组样本,有5个样本,有2个特征x和y,矩阵是

[-1,-2]

[-1, 0]

[ 0, 0]

[ 2, 1]

[ 0, 1]

画图如下:


我现在是二维特征表示,x一个特征,y一个特征。我现在降维。

降成一维,我要选一个新的基底(特征)。

如果我选(1,0)作为基底,就是x轴嘛,然后我把这些样本投影到x轴,或者乘以[1,0]列向量。

得,里面好几个数都一样,分不出来了。


所以这就是为样本在基底上要尽可能分散了,这个分散不就是样本在这个“基底上的坐标”(这个基底上的特征值)的方差要尽可能大么


(2)第二个要求:使得各个选择的基底关联程度最小。

刚才是二维降一维,只选则一个一维基底就可以了,太拿衣服了。

考虑一个三维点投影到二维平面的例子。这样需要俩基底。

基底得一个一个找啊,先找第一个,要找一个方向,使得样本在这个方向上方差最大。

再找第二个基底,怎么找,方差最大?这不还是找的方向和第一个差不多么?那这两个方向表示的信息几乎是重复的。

所以从直观上说,让两个字段尽可能表示更多的原始信息,我们是不希望它们之间存在(线性)相关性的,因为相关性意味着两个字段不是完全独立,必然存在重复表示的信息。所以最好就是选择和第一个基底正交的基底。



那怎么找呢?不能随便写一个矩阵吧?答案肯定是要基于原来的样本的表示。

我们求出了原来样本的协方差矩阵,协方差矩阵的对角线代表了原来样本在各个维度上的方差,其他元素代表了各个维度之间的相关关系。

也就是说我们希望优化后的样本矩阵,它的协方差矩阵,对角线上的值都很大,而对角线以外的元素都为0。


现在我们假设这个样本矩阵为X(每行对应一个样本),X对应的协方差矩阵为Cx,而P是我们找到的对样本进行PCA变换的矩阵,即一组基按列组成的矩阵,我们有Y=XP

Y即为我们变化后的新的样本表示矩阵,我们设Y的协方差矩阵维Cy,我们想让协方差矩阵Cy是一个对角阵,那么我们先来看看Cy的表示


注意:

推导规程为了把X凑一起,我们用了Y Yt=((Y Yt)t)t=(Yt Y)t

把样本组织成行向量和列向量是一样的原来,最后结果只需要一个转置就变成一个格式了。把样本X组织成列向量,就要把基底P组织成行向量,就要写PX了


好了,我们退出了Cy的表示,最后的结果很神奇的成了一个熟悉的形式:方阵可对角化的表达式

让我们来回忆一下可对角化矩阵的定义,顺便也回忆了矩阵相似的定义:

(1)什么是可对角化和相似:如果一个方块矩阵 A 相似对角矩阵,也就是说,如果存在一个可逆矩阵 P 使得 P −1AP 是对角矩阵,则它就被称为可对角化的。

(2)如何判断可对角化呢我们再来回忆一下矩阵可对角化的条件:n × n 矩阵 A 只在域 F 上可对角化的,如果它在 F 中有 n 个不同的特征值,就是说,如果它的特征多项式在 F 中有 n 个不同的根,也就说他有n个线性无关的特征向量,这三条件是等价的,满足一个就可以对角化。

注意哦:有n个线性无关的特征向量并不一定代表有n个不同的特征值,因为可能多个特征向量的对于空间的权重相同嘛。。。但是n个不同的特征值一定有n个线性无关的特征向量啦。


C是啥呢,C是协方差矩阵,协方差矩阵是实对称矩阵,就是实数的意思,有很多很有用的性质

1)实对称矩阵不同特征值对应的特征向量,不仅是线性无关的,还是正交的。

2)设特征向量
λ
重数为r,则必然存在r个线性无关的特征向量对应于λ,因此可以将这r个特征向量单位正交化。

3) n阶实对称矩阵C,一定存在一个正交矩阵E,满足如下式子,即C既相似又合同于对角矩阵。(这里又温习了合同的概念哦)

由上面两条可知,一个n行n列的实对称矩阵一定可以找到n个单位正交特征向量,设这n个特征向量为e1,e2,...,en

我们将其按列组成矩阵

则对协方差矩阵C有如下结论:

好了,PCA中,我们要找的这个变换矩阵,就是E!!!!!!因为用X乘E后,得到的矩阵是一个对角矩阵哦!



PCA算法步骤总结:

设有m条n维数据,这里比较糊涂就是按行组织样本还是按列组织样本,下面是按行组织样本:

1)将原始数据按行组成n行m列矩阵X,代表有n个数据,每个数据m个特征

2)将X的每一列(代表一个属性字段)进行零均值化,即减去这一列的均值

3)求出协方差矩阵C=1/n* XXT


4)求出协方差矩阵的特征值及对应的特征向量

5)将特征向量按对应特征值大小从上到下按列排列成矩阵,取前k列组成矩阵P

6)Y=XP即为降维到k维后的数据


按列组织是这样的,理解一下:

1)将原始数据按列组成n行m列矩阵X

2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值

3)求出协方差矩阵C=1/m*XXT
4)求出协方差矩阵的特征值及对应的特征向量

5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P

6)Y=PX即为降维到k维后的数据



我们将其按列组成矩阵
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

协方差矩阵与PCA深入原理剖析 的相关文章

  • python 深度学习-数学基础-2-导数

    z z的变化值比上距离的极限
  • 矩阵分解(1)-- 矩阵分解之LU、LDLT、Cholesky分解

    1 分类 矩阵分解 decomposition factorization 是多半将矩阵拆解为数个三角形矩阵 triangular matrix 依使用目的的不同 可分为几类 与线性方程解法相关的矩阵分解 LU分解 奇异值分解 QR分解 极
  • FCM——(Fuzzy C-means)模糊C均值算法

    FCM算法是一种基于划分的聚类算法 它的思想就是使得被划分到同一簇的对象之间相似度最大 而不同簇之间的相似度最小 模糊C均值算法是普通C均值算法的改进 普通C均值算法对于数据的划分是硬性的 而FCM则是一种柔性的模糊划分 模糊聚类的目标函数
  • 几何平均详解,及其与算术平均、调和平均、均方根的关系

    2 几何平均与算术平均的转换关系 附 3 2 几何平均数适用于求连乘样本的均值 它是变化的中心 代表平均变化率 算术平均数适用于求连加样本的均值 它是数值的中心 代表平均数量 中位数适合求带有离群值样本的均值 它是位置的中心 代表平均位置
  • 【随机过程】 17 -离散时间马氏链典型应用

    离散时间马尔科夫链的典型应用 文章目录 离散时间马尔科夫链的典型应用 0 概述 1 Page Rank 1 1 背景 1 2 模型建立 1 3 模型求解 2 MCMC 2 1 概述 2 2 实现思路 2 3 具体实现 2 3 1 第一步 细
  • 算法的复杂度

    常用的算法的时间复杂度和空间复杂度 排序法 最差时间分析 平均时间复杂度 稳定度 空间复杂度 冒泡排序 O n2 O n2 稳定 O 1 快速排序 O n2 O n log2n 不稳定 O log2n O n 选择排序 O n2 O n2
  • 期望、方差、协方差与相关系数

    1 利用切比雪夫不等式可以证明方差为0意味着随机变量的取值集中在一点上 2 从协方差可以得到两个变量增减的趋势 称为相关性 3 不相关 比 独立 更弱的概念 独立 必导致 不相关 不相关 不一定导致 独立 4 相关系数是相应标准化变量的协方
  • 模拟退火算法——概率法解全局优化

    1 直观介绍 模拟退火算法来源于固体退火原理 是一种基于概率的算法 将固体加温至充分高 再让其徐徐冷却 加温时 固体内部粒子随温升变为无序状 内能增大 而徐徐冷却时粒子渐趋有序 在每个温度都达到平衡态 最后在常温时达到基态 内能减为最小 它
  • 【数学】三角函数及部分微积分函数图象整理

    三角函数及部分微积分函数图象整理 1 三角函数 1 1 cosx secx 1 2 sinx cscx 1 3 tanx cotx 1 4 s e c
  • 线性代数——正交矩阵

    正交矩阵 orthogonal matrix 正交矩阵的定义 正交矩阵性质 1 AT是正交矩阵 2 A的各行是单位向量且两两正交 3 A的各列是单位向量且两两正交 4 A 1或 1 正交矩阵的定义 如果 AAT E E为单位矩阵 AT表示
  • 概率论与数理统计(一)随机事件,样本空间

    1 D 2 A 3 C 4 AD 5 正确答案 1 2 1 3 2 1 2 3 3 1 3 2
  • 【随机过程】19 - 随机过程的线性预测问题

    随机过程的线性预测问题 文章目录 随机过程的线性预测问题 1 随机过程的估计问题概述 1 1 预测问题 1 2 内插问题 1 3 滤波问题 2 随机过程的可预测性 2 1 新息过程 2 1 1 信息过程的定义 2 1 2 估计的子空间分解
  • 标量、向量、矩阵之间求导笔记

    2019 12 06 今天 碰到了下面有关向量对于向量的导数 不太明白为什么最后得到的是A的转置 d A x
  • 【SLAM】卡尔曼滤波(Kalman Filter)

    卡尔曼滤波 Kalman filter 一种利用线性系统状态方程 通过系统输入输出观测数据 对系统状态进行最优估计的算法 由于观测数据中包括系统中的噪声和干扰的影响 所以最优估计也可看作是滤波过程 卡尔曼滤波器的原理解释如下 首先 我们先要
  • 数学基础(一)——最小二乘法

    最小二乘法 LS 算法 是统计分析中最常用的逼近计算的一种算法 其交替计算结果使得最终结果尽可能地逼近真实结果 LS 算法是一种数学优化技术 也是一种机器学习常用算法 它通过最小化误差的平方和寻找数据的最佳函数匹配 利用最小二乘法可以简便地
  • 数学基础课之01二进制

    关于Java的移位符 左移位 lt lt 右移位 gt gt 表示算术右移 gt gt gt 表示逻辑右移 python同Java 由于java的二进制数最高位为符号位 0为正 1为负 右移位涉及到最左补0还是补1的问题 逻辑右移直接补0即
  • 几个常用数学知识点

    机器学习跟数学有着紧密的关系 因此掌握一些常用的数学知识点 有助于我们理解某些模型的底层相关原理 1 泰勒公式 2 驻点 极值点 鞍点 拐点 2 1 驻点 在数学 特别在微积分 函数在一点处的一阶导数为零 该点即函数的驻点 Stationa
  • 非中心卡方分布

    非中心卡方分布 非中心卡方分布是卡方分布的一般化形式 如果 是 个独立的正态分布的随机变量均值为 方差为 表示为 那么随机变量 为非中心卡方分布 非中心卡方分布涉及两个参数 表示自由度 即 的数目 是和随机变量 相关的参数 由以上参数所定义
  • 对数损失和交叉熵损失

    从上述的表达式中看 两者的损失函数本质是一样的 但是这里需要注意的是通常情况下 这两种损失函数所对应的上一层结构不同 log loss经常对应的是Sigmoid函数的输出 用于二分类问题 而cross entropy loss经常对应的是S
  • 范数(简单的理解)、范数的用途、什么是范数

    没学好矩阵代数的估计范数也不是太清楚 当然学好的人也不是太多 范数主要是对矩阵和向量的一种描述 有了描述那么 大小就可以比较了 从字面理解一种比较构成规范的数 有了统一的规范 就可以比较了 例如 1比2小我们一目了然 可是 3 5 3 和

随机推荐

  • 数仓模型理论

    1 数仓介绍 2 建模理论 建模的目标 性能 成本 效率 数据质量中找到平衡点 2 0 三范式 123要求逐渐严格 每一列不可分割 属性要完全依赖于主键 不可以只依赖一部分 数据重复很多 案例中主键是学生id和课程 所属系和系主任只依赖学生
  • qt的QListwiget设置横向的排列

    cpp view plain copy contentsWidget new QListWidget contentsWidget gt setViewMode QListView IconMode contentsWidget gt se
  • MyBatis映射文件与核心配置文件

    目录 1 Mapper 映射文件 2 POJO类 3 Junit测试代码 4 MyBatis 配置文件详解 5 mapper 映射配置文件详解 1 Mapper 映射文件 在 MyBatis 中 推荐使用 mapper 作为包名 我们只需要
  • LeetCode 53. Maximum Subarray 最大连续字段和问题

    考察 最大连续字段和问题 解决问题时间复杂度 O n 问题隐含条件 如果给出的数集都是负数 那么最大连续字段和就是 最大的那个负数 eg 2 1 结果应该输出 1 而不是 0 int maxSubArray int nums int num
  • vue中 $event 的用法--获取当前父元素,子元素,兄弟元素

    vue中 event 的用法 获取当前父元素 子元素 兄弟元素
  • opencv-python常见方法使用教程(一)

    文章目录 一 OpenCV是什么 二 使用步骤 1 安装 2 读取图片 方式一 方式二 3 保存图片 4 图像的基本操作 像素操作 图像切割 图像平移 图像旋转缩放 图片大小调整 总结 一 OpenCV是什么 OpenCV是一个基于BSD许
  • springboot入门

    文章目录 springboot入门 1 spring boot简介 2 微服务 3 环境搭建 1 maven配置 2 sprintboot HelloWord 1 创建一个maven工程 jar 2 导入spring boot相关依赖 3
  • CCNP的考试是中文还是英文?

    思科的所有考试都是英文 虽然CCNP的考试对考生的学历 专业没什么要求 但是它的考试是全英文考试 如果你的英语水平太糟糕的话 不太建议你考 不然的话很可能连考试题目都看不懂 CCNP培训费用 分两种情况 线上 3000左右 线下 线下的两倍
  • 【JAVA】id:‘org.springframework.boot‘, version:‘2.3.3.RELEASE‘] was not found in any of the following

    以下内容 均为治疗下载不了gradle的包的问题 gradle 加载新引入的项目 然后下载包报错 id org springframework boot version 2 3 3 RELEASE was not found in any
  • 用element-ui渲染一个二级数据表格即复杂表格,并且自定标题

    最终完成的效果 废话不多说 直接上代码 不懂来问
  • 在已排序的数组中查找

    如果数组已经排好序了 就可以使用 Arrays binarySearch 执行快速查找 千万不要对 未排序的数组使用binarySearch 否则结果不可预料 下面的例子使用 RandIntGenerator填充数组 再用此生成器生成一个值
  • Ruoyi若依前后端分离框架【若依登录详细过程】

    本文主要写RuoYi项目前端登录流程 后端包含ruoyi admin ruoyi common ruoyi framework等多个模块 ruoyi admin为启动模块 先看一下ruoyi admin src main applicati
  • 实例说明列表、字典中元素的提取

    经过这几天工作的忙碌 我终于又静下心来 让我来分享一些实际的案例并分享它的做法 1 案例 获取下面列表当中的每一个值 不必在同一行显示 list 1 2 3 4 5 6 7 8 9 10 11 12 for x y in list prin
  • java openssh_java – 将openssh公钥转换为ssh2(RFC 4716)格式

    主要问题就在于此 将openssh公钥解析为符合 rfc 4716格式 唯一的问题是 它必须在java中 使用ssh keygen 它只是单行命令 ssh keygen e f openssh key pub 不幸的是 我在Java中找不到
  • VMware下桥接设置

    操作环境 主机 Win7 X86 SP1 虚拟机 VMware station 8 虚拟机里的系统 Fedora 15 环境上 不管什么系统 什么版本的虚拟机 使用上都是大同小异的 毕竟核心是不变的 VM虚拟机下linux系统 桥接和NAT
  • 利用GitHub搭建一个你的博客

    为什么要写博客 作为一只程序猿 踩到坑是一件非常正常的事 当我们踩到坑的时候就会花心思去研究它 可能我们能够在当时把问题弄懂并把问题给解决掉 可是过一段时间我们又遇到了同样的坑的时候 难道还要再去 百度 Google 重新搜索一遍吗 这样做
  • QT4.8.4安装步骤简述

    QT4 8 4安装步骤简述 win10上面安装QT4 8 4 creator 的步骤如下 首先需要软件 1 MinGW gcc440 1 zip 2 qt win opensource 4 8 4 mingw exe 3 qt creato
  • React生态之React环境搭建

    React特点 Declarative 声明式编码 Component Based 组件化编码 高效的DOM Diff 算法 最小化页面重绘 单向数据流 React 生态 React React Router Redux Axios Bab
  • 【蓝湖前端校招一面】

    蓝湖 一面 无笔试 直接约面试 时长一小时 讲讲项目中的难点 讲讲原型链 更改原型的方法有什么 proto setPrototypeOf 讲讲闭包 es6 的新数据结构知道哪些 Object 和 Map 的区别 一道 this 相关的输出题
  • 协方差矩阵与PCA深入原理剖析

    一 协方差矩阵 一个维度上方差的定义 协方差的定义 a 协方差就是计算了两个维度之间的相关性 即这个样本的这两个维度之间有没有关系 协方差为0 证明这两个维度之间没有关系 协方差为正 两个正相关 为负则负相关 协方差矩阵的定义 对n个维度