机器学习知识总结 —— 21. 什么是主成分分析

news2025/1/13 13:56:45

文章目录

  • 什么是PCA(Principal Component Analysis)
  • 协方差矩阵
    • 什么是协方差
    • 协方差矩阵
  • 特征值与特征向量
  • PCA降维

什么是PCA(Principal Component Analysis)

在机器学习中,PCA(Principal Component Analysis,主成分分析)是一种常用的降维方法。它可以将高维数据降至低维,同时保留数据的最重要的特征,从而方便后续的分析和处理。

PCA的基本思想是通过线性变换将原始数据投影到一个新的坐标系中,使得投影后的数据具有最大的方差。这样可以减少特征之间的冗余信息,从而达到降维的目的。

比方说有这样一组高维数据,它输出的图像1是这样的

在这里插入图片描述

对于我们来说,对高纬度数据进行分析,需要考虑的变量信息太多,所以我们就会考虑舍弃掉其中不太重要的信息,而保留能够反映数据特征信息,因此对于上面这个例子,我们可以选择一个合适的平面对原始数据进行投影,于是可以得到:

在这里插入图片描述
数据基本信息没有发生改变,但影响我们分析数据特征的高纬信息消失了,这样的一个过程就是PCA的实现过程。那么,具体来说,它的主要步骤包括:

  1. 对原始数据进行去均值化(即将数据中心化);
  2. 计算协方差矩阵(或者是相关系数矩阵);
  3. 对协方差矩阵进行特征值分解,得到特征向量和特征值;
  4. 将特征向量按照对应的特征值大小排序,选择前k个特征向量作为新的坐标轴;
  5. 将原始数据投影到新的坐标轴上,得到降维后的数据。

在PCA中,特征向量表示数据在新的坐标系中的方向,特征值表示数据在特征向量方向上的重要程度。因此,选择前k个特征向量可以保留数据最重要的特征,并且可以通过特征值来确定保留多少特征。

协方差矩阵

什么是协方差

协方差(Covariance)是描述两个变量之间关系的统计量,它反映了两个变量的联合变化程度。具体来说,协方差是指两个随机变量的离差积的期望值,其计算公式为:

C o v ( X , Y ) = E [ ( X − E ( X ) ) ( Y − E ( Y ) ) ] Cov(X,Y) = E[(X-E(X))(Y-E(Y))] Cov(X,Y)=E[(XE(X))(YE(Y))]

其中,X和Y分别为两个随机变量,E(X)和E(Y)分别为它们的期望值。X和Y的协方差越大,说明它们的联合变化程度越大,也就意味着它们之间存在一定的相关性。

协方差的符号表示两个变量的关系:

  • 当协方差为正值时,说明两个变量正相关,即其中一个变量增大时,另一个变量也会增大;
  • 当协方差为负值时,说明两个变量负相关,即其中一个变量增大时,另一个变量会减小;
  • 当协方差为零时,说明两个变量不相关,即它们之间不存在线性相关关系。

因为在我以前的文章里已经有提到过协方差的概念,如果想更近一步了解协方差的同学,可以点击这里。

协方差矩阵

从协方差这个概念出发,我们可以通过计算不同特征的关联来获得一个名叫协方差矩阵。协方差矩阵是PCA(Principal Component Analysis)方法的重要组成部分,它描述了数据中不同特征之间的关系,可以用于进行特征提取和降维。

统计学的,对于一个包含m个样本和n个特征的数据集X,其协方差矩阵S的计算公式为:

S = 1 m − 1 ∑ i = 1 m ( x i − x ‾ ) T ( x i − x ‾ ) S = \frac{1}{m-1} \sum_{i=1}^{m} (x_i - \overline{x})^T (x_i - \overline{x}) S=m11i=1m(xix)T(xix)

其中, x i x_i xi是第i个样本的特征向量, x ‾ \overline{x} x是所有样本的平均值。协方差矩阵的对角线上的元素是每个特征的方差,非对角线上的元素则表示不同特征之间的协方差。

例如,以鸢尾花的样本为例,该数据集有三种样本,每一种样本都有花瓣长宽、花萼长宽。

在这里插入图片描述
如果把数据绘制出来,并分别以其中两个属性组成一组散点图,那么就是上面这个样子。阅读的时候,只要看下三角行列就足够了。可以看出,有一部分特征之间存在高度重合,而另外一些特征存在比较清晰的边界。

因此,只要对上述散点图进行适当转换和计算,就能得到协方差矩阵(记住,中间斜线部分不是协方差,而是样本各特征的方差)。

在这里插入图片描述
然后我们可以从协方差矩阵进一步得到特征值和特征向量。

特征值与特征向量

特征值的计算需要使用到线性代数的知识。给定一个矩阵A,如果存在一个非零向量v和一个标量λ,满足以下关系:

A = λ ⋅ v \mathbf A = \lambda \cdot \mathbf v A=λv

则称向量 v \mathbf v v 是矩阵A的特征向量(eigenvector),对应的标量 λ \lambda λ 则是矩阵 A \mathbf A A 的特征值(eigenvalue)。特征向量代表了矩阵A的某种“拉伸”或“压缩”效果,特征值则代表了这种“拉伸”或“压缩”效果的大小。

在PCA中,我们通常会使用协方差矩阵的特征值和特征向量来选择新的特征空间。具体来说,协方差矩阵的特征向量代表了数据在原有特征空间中的主要方向,而特征值则代表了数据在这些方向上的“重要程度”。

通常,特征值和特征向量可以通过调用NumPy库中的eigvals函数或者SciPy库中的eig函数来计算。对于我们的鸢尾花,可以得到

特征值: [4.22824171,0.24267075, 0.0782095, 0.02383509]
特征向量1:[ 0.36138659,-0.65658877, -0.58202985, 0.31548719]
特征向量2:[-0.08452251, -0.73016143, 0.59791083, -0.3197231 ]
特征向量3: [ 0.85667061, 0.17337266, 0.07623608, -0.47983899]
特征向量4: [ 0.3582892, 0.07548102, 0.54583143, 0.75365743]]

PCA降维

对于上述结果,在进行PCA降维时,我们通常会根据协方差矩阵的特征值从大到小排序,然后选择前几个特征值所对应的特征向量作为新的特征空间。这里的“前几个”通常是根据总方差贡献率来决定的,例如我们可以选择保留总方差的90%、95%或99%等。

根据输出结果,协方差矩阵的特征值从大到小依次是:

4.22824171, 0.24267075, 0.0782095, 0.02383509

我们可以看到,第一个特征值(4.22824171)远大于其他三个特征值,因此我们可以选择只保留第一个特征向量所代表的方向作为新的特征空间,即进行一维降维。当然,我们也可以选择保留前两个特征向量作为新的二维特征空间,这样也可以很好地保留数据的主要信息。具体来说,如果我们选择保留前两个特征向量,那么我们应该选取第一个和第二个特征向量,即:

特征值:4.22824171, 0.24267075
特征向量:[0.36138659, -0.08452251], [-0.65658877, -0.73016143], [-0.58202985, 0.59791083], [0.31548719, -0.3197231]

我们可以看到,第一个特征向量的分量(0.36138659, -0.65658877, -0.58202985, 0.31548719)代表了数据在第一维上的主要方向,第二个特征向量的分量(-0.08452251, -0.73016143, 0.59791083, -0.3197231)代表了数据在第二维上的主要方向。因此,如果我们只保留这两个特征向量所代表的方向,就可以得到一个新的二维特征空间。

在PCA中,我们通常会将原始数据投影到新的特征空间上,以得到降维后的数据。具体来说,对于一个d维的数据样本,我们可以将它投影到前k个特征向量所代表的新特征空间上,得到一个k维的数据样本。

假设我们选择保留前两个特征向量,即将数据降到二维。那么我们可以将原始数据样本矩阵X乘以前两个特征向量的转置矩阵,得到一个新的二维数据样本矩阵X_pca:

# 鸢尾花的数据
iris = load_iris()
X = iris.data
y = iris.target

...

# 计算协方差矩阵
cov_matrix = np.cov(X.T)

...

# 计算协方差矩阵的特征值和特征向量
eigvals, eigvecs = np.linalg.eig(cov_matrix)

...

# 投影到新的二维空间中 
X_pca = X.dot(eigvecs[:, :2])

这里的eigvecs[:, :2]表示选取协方差矩阵的前两个特征向量,即投影到二维特征空间上。dot函数表示矩阵乘法。最终得到的X_pca矩阵中,每一行代表一个新的二维数据样本。

于是我们得到了PCA降维后的图片

在这里插入图片描述


  1. 图片来源:https://towardsdatascience.com/principal-component-analysis-pca-explained-visually-with-zero-math-1cbf392b9e7d ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/379436.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

除了Confluence,还有哪些好用的文档管理软件?测评

在早期,文档管理软件主要是为了将企业内部海量的电子文档集中存储、管理,通过设置共享权限进行内部员工的文档分发,有些甚至可能要提供API接口,便于将ERP、OA等系统的文档纳入其中,形成企业文档管理中心。而随着时间的…

window下的快捷程序链怎么设置环境变量|cmd直接运行快捷方式

对于需要在命令行执行的程序,每次都需要设置环境变量很是麻烦,而且也会导致非必要的文件也在环境变量里并且如果多版本共存软件也会导致只能一个存在环境变量里不然会冲突,这时候如果可以通过快捷方式那不就完美解决了么? 快捷方…

一文带你入门Docker

目录一、什么是Docker?1、背景2、Docker三要素3、Docker四个组成部分二、Docker安装步骤1、VM虚拟机下载2、centrOS 8下载3、安装docker4、配置阿里云镜像加速器5、docker run 执行顺序6、docker和虚拟机比较三、docker常用命令四、docker镜像分层一、什么是Docker&…

运维语言、bash特性、history命令

P4 浅谈运维和编程语言 shell简述 shell C语言开发,和同是C开发的操作系统更兼容。因此shell效率肯定大于其他工具。 shell语言类型 其他运维语言 shell优势 P5 Bash特性 bash是什么 命令历史 -c 清楚存放的历史命令 -r 回复删除的历史命令 !历史id…

0基础怎么入门黑客?

" 有一群人大声嚷嚷着自己是黑客,但他们不是。他们(主要是正值青春的少年)是一些蓄意破坏计算机和电话系统的人。真正的黑客把这些人叫做“骇客”(cracker),并不屑与之为伍。多数真正的黑客认为骇客们又懒又不负责任&#x…

FCN学习

简介 FCN是首个端对端的针对像素级别预测的全卷积网络,发表在2015CVPR。全卷积的意思是全连接层全部替换成了卷积层。 FCN的评价指标 FCN的评价指标主要采用Mean IOU,他在当时已经超过了大多数网络的Mean IOU。 全卷积的优势 通过观察我们能够发现&am…

山东大学数字图像处理实验:MATLAB的图像显示方法

文章目录MATLAB 学习实验目的实验原理及方法实验内容MATLAB的图像显示方法实验目的实验内容MATLAB 学习 实验目的 了解 MATLAB 的基本功能及操作方法。掌握典型离散信号的 Matlab 产生和显示。 实验原理及方法 在 MATLAB 中, 序列是用矩阵向量表示, 但它没有包含采样信息, …

程序,进程,线程 并行,并发

程序: 程序的本质是初始的数据加一些指令,是数据跟指令的集合,是有序代码的集 合。程序的指令在代码里面相当于一个函数,调用一个函数相当于向程序发出一条指令,数据就是一些变量,变量就是用来保存数据的。…

ANTLR的IDE——ANTLRWorks2的安装及基本使用

1. ANTLRWorks2的简单介绍 ① ANTLR官网对ANTLRWorks2的介绍 ANTLRWorks 2.此IDE是ANTLR v3 / v4语法以及StringTemplate模板的复杂编辑器。 它可以运行ANTLR工具来生成识别器,并可以运行TestRig(在命令行上运行)来测试语法。 要将ANTLR生成…

GCC编译器 MinGW的下载安装使用教程

哎 总所周知 gcc可以用来编译C 和C。在linux广泛应用,那么window怎么使用gcc呢。就要用到gcc的window工具----MInGW,安装好之后,直接可以在windows的dos界面编译。下面讲解安装使用过程。1.官网下载MinGW - Minimalist GNU for Windows downl…

家庭消耗品跟踪管理软件HomeLists

什么是 HomeLists ? HomeLists 是一款自托管耗材统计软件,能通过提醒等帮助您跟踪家庭消耗品。 安装 在群晖上以 Docker 方式安装。 在注册表中搜索 homelists ,选择第一个 aceberg/homelists,版本选择 latest。 本文写作时&…

HNU工训中心:直流电路测量分析实验报告

工训中心的牛马实验 实验目的 1.熟悉直流电路的测量和分析方法。 2.熟悉直流电源、电压表、电流表的使用法及其特性。 实验仪器和器材 1.实验仪器 直流稳压电源型号:IT6302 台式多用表型号:UT805A 2.实验(箱)器材 电路实验箱 元器件:电阻…

Ubuntu/Linux 升级 CMake 版本

Ubuntu/Linux 升级 CMake 版本 背景 在 Ubuntu 18.04 系统上默认的 CMake 版本为 3.10.2,当需要进行一些比较新的项目的编译时,比如说 iceoryx 的交叉编译,会遇到 CMake 版本不支持问题。类似下面的打印: CMake Error at CMakeL…

各种产品图的画法

经常看到网上有人问,产品经理要画哪些图,怎么画流程图等关于画图的问题。确实,画图是产品经理必备的硬核技能。然而,画图又不仅仅是画几个图而已。做产品没有统一、标准的规范指导,容易让人为了画图而画图。甚至&#…

机器学习笔记之狄利克雷过程(一)基本介绍

机器学习笔记之狄利克雷过程——基本介绍引言回顾:高斯混合模型狄利克雷过程——引出引言 从本节开始,将介绍狄利克雷过程。 回顾:高斯混合模型 高斯混合模型(Gaussian Mixture Model,GMM\text{Gaussian Mixture Model,GMM}Gaussian Mixtu…

【吃透Js】深入学习浅拷贝和深拷贝

一、JavaScript数据类型原始类型对象类型二、原始类型和对象类型的区别1.原始类型2.引用类型3.复制4.比较5.值传递三、浅拷贝概念实现方法四、深拷贝概念五、浅拷贝、深拷贝和赋值的区别浅拷贝和赋值六、小结想要真正搞明白深浅拷贝,你必须要熟练掌握赋值、对象在内…

港科夜闻|香港科大与中国医药创新促进会共建创新研究平台,推动大湾区医药创新发展...

关注并星标每周阅读港科夜闻建立新视野 开启新思维1、香港科大与中国医药创新促进会共建创新研究平台,推动大湾区医药创新发展。香港科技大学与中国医药创新促进会2月27日签署合作备忘录,成立「大湾区生物医药国际创新中心」及「大湾区生物医药发展政策研…

【论文导读】Towards Unsupervised Domain Generalization

之前看到过的一篇论文,挺有意思的,虽然查到了有讲解的博客,但是不太符合我的思考逻辑 于是自己梳理一下。 CVPR 2022丨清华大学提出:无监督域泛化 (UDG)_我爱计算机视觉的博客-CSDN博客 方法引入: 针对现有的处理域…

苹果笔可以不买原装吗?开学必备性价比电容笔

在当今的时代,电容笔日益普及,而且相关的功能也逐渐完善。因此,在使用过程中,怎样挑选一款性价比比较高的电容笔成为大家关心的焦点。随着电容笔的普及,更好更便宜的电容笔成为了一种趋势。那么,哪个品牌的…

[ 云计算入门与实战 - AWS ] 在控制台创建 Amazon EC2 实例

本章节主要介绍在 AWS 控制台窗口 如何创建一台 Amazon EC2 实例。 文章目录写在前面开始创建前进入控制台并启动 EC2 实例服务创建 EC2 实例详细步骤步骤 1:为所要创建的 EC2 实例个体命名步骤 2:选择 AMI步骤 3:选择实例类型步骤 4&#xf…