多媒体数据处理实验2:PCA

这篇具有很好参考价值的文章主要介绍了多媒体数据处理实验2:PCA。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第2次实验:主成分分析PCA

1. 算法描述

功能:

 利用PCA算法可以对给定的数据集进行降维操作,使得处理后的数据不仅维数较低、能保存绝大部分信息,而且各维之间的相关性也为0(没有冗余信息,正交)。

2. PCA的数学原理

(1) PCA的目的

  一般而言,一个未经处理的数据集可能存在两个问题,一个是维数太高,另一个是各维度特征之间存在着相关性,从而导致各维存储的信息之间存在冗余。由于这两个问题的存在,给人们压缩、存储、处理相关数据带来了一定的困难。因此,我们需要找到一种能够对数据进行降维处理的同时还能保留大部分信息的算法去对原始数据进行处理,使得处理后的数据不仅维数较低、能保存绝大部分信息,而且各维之间的相关性也为0(没有冗余信息,正交)。

(2) 方差、协方差的意义

  方差越大,说明数据越分散。我们通常认为,在某个特征维度上数据越分散,该特征越重要。

  协方差用来刻画两个随机变量之间的相关性,反映的是变量之间的二阶统计特性。相关系数和协方差在描述相关性(线性相关)方面是等价的,而独立与相关的关系是:独立一定不相关,不相关不一定独立(因为可能存在非线性关系)。在实际应用中,协方差可以用来刻画两个特征维度之间的相关性。

(3) PCA的核心思想

  设原数据集矩阵 X n × m X_{n×m} Xn×m对应的协方差矩阵为 C n × n C_{n×n} Cn×n,而 P k × n P_{k×n} Pk×n是一组基沿行方向排列构成的矩阵(线性变换矩阵),设变换后的数据为 Y k × m = P X Y_{k×m}=PX Yk×m=PX。设 Y Y Y的协方差矩阵为 D k × k D_{k×k} Dk×k,则 D D D C C C的关系推导如下:
D = 1 m Y Y T = 1 m ( P X ) ( P X ) T = 1 m ( P X X T P T ) = P ( 1 m X X T ) P T = P C P T D=\frac{1}{m}YY^T=\frac{1}{m}(PX)(PX)^T=\frac{1}{m}(PXX^TP^T)=P(\frac{1}{m}XX^T)P^T=PCP^T D=m1YYT=m1(PX)(PX)T=m1(PXXTPT)=P(m1XXT)PT=PCPT
  那么现在问题等价为求一个线性变换矩阵 P P P,使得 P C P T PCP^T PCPT为对角阵,且对角元素从上到下依次递减。

  考虑到协方差矩阵 c c c是一个实对称矩阵,因此它具有一些良好的数学性质:

  (a) 实对称矩阵不同特征值对应的特征向量必然正交;

  (b) 设 e 1 , . . . , e n e_1, ..., e_n e1,...,en C C C n n n个特征向量,设 E E E为这 n n n个特征向量按行排列构成的矩阵,则必有 E C E T = Λ ECE^T=\Lambda ECET=Λ

  因此,为了将 X X X降至 k k k维且让 D D D的对角元素值从第一行向下递减,我们只需要将 C C C的前 k k k个最大的特征值对应的特征向量构成正交变换矩阵 P P P即可实现目标。

3. 算法流程

  (1) 将原始数据矩阵 X X X中心化( X : = X − μ X:=X-\mu X:=Xμ);
  (2) 计算 X X X的协方差矩阵 C C C
  (3) 计算 C C C的特征值和特征向量,取前 k k k个最大的特征值对应的特征向量构成变换矩阵 P P P
  (4) 利用 Y = P X Y=PX Y=PX得到降维后的数据;
  (5) 计算 Y Y Y的协方差矩阵 D D D

4. 核心代码

def pca(X, k):
    # 样本中心化,axis=0表示计算每一列的均值
    X = X - np.mean(X, axis=0)
    # 将X变为nxm形式
    X = X.T
    # 计算协方差矩阵
    C_before = 1 / (X.shape[1]) * np.dot(X, X.T)
    # 计算特征值和对应的特征向量矩阵
    eigenvalues, eigenvectors = np.linalg.eig(C_before)
    # 求出最大的k个特征值的索引,np.argsort返回数组从小到大排序后的数在原数组中的索引
    indexes = np.argsort(eigenvalues)[::-1][:k]  # [::-1]将数组倒序,[:k]取前k个值
    # 选择特征向量矩阵中列索引在indexes中的所有列构成最终的投影矩阵
    P = eigenvectors[:, indexes]
    # 将特征向量转为沿行方向排列
    P = P.T
    # 计算降维结果Y=PX
    Y = np.dot(P, X)
    # 求降维之后的矩阵协方差
    C_after = np.cov(Y, rowvar=1)
    return C_before, Y, C_after

5. 实验结果

  我在程序中设置numpy的结果显示小数位为4位,原始数据的协方差矩阵、PCA后的数据、降维后的数据协方差矩阵如下:多媒体数据处理实验2:PCA

6.分析与总结

  1. 观察结果并对比PCA前后的协方差矩阵,可以得出以下结论:原始数据各维度特征携带的信息各不相同,有的特征携带的信息较多,有的特征携带的信息较少(观察主对角线元素),并且不同的特征之间的协方差值并不为0,这说明原始数据各维之间存在一定的相关性,即存在信息冗余的问题。而采用PCA对原始数据进行降至5维的处理后,可以看到协方差矩阵 D D D的主对角线元素值从第一行开始逐行递减,这表示第1主成分携带的信息量最大,其余主成分依次减小。此外, D D D的非主对角线元素全为0,这说明各维之间已经完全两两正交,即相关性已经被完全消除了,这使得信息的存储冗余度得到了减小。

  2. 在完成本次实验后,我尝试不使用np.linalg.eig()去求矩阵的特征值和特征向量,也就是先用 ∣ A − λ E ∣ = 0 |A-\lambda E|=0 AλE=0求出特征值,再用 ( A − λ E ) x = 0 (A-\lambda E)x=0 (AλE)x=0求出特征值对应的特征向量。在这个过程中,我使用了Python的SymPy库去解特征方程和特征向量对应的线性方程组。一开始解特征向量速度还是很快的,但是一旦去解线性方程组,运算速度就变得非常慢,在加上这其中涉及到np.array和sympy的Matrix数据类型的相互转化和结果的规范化,我最终放弃了自编函数实现特征值和特征向量的求解,这也让我感受到了numpy的线性代数库的代码优化做的确实很好,numpy中很多运算的实现都比我们自己手写实现的要快得多。

源码:多媒体数据处理实验2:PCA文章来源地址https://www.toymoban.com/news/detail-423962.html

到了这里,关于多媒体数据处理实验2:PCA的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python中的多媒体处理库有哪些?

    Python中有许多广泛使用的多媒体处理库,其中一些包括: Pillow:用于图像处理和操作的强大库,支持多种图像格式的读取、写入和编辑。 OpenCV:一个用于计算机视觉和图像处理的开放源代码库,提供了丰富的图像处理和计算机视觉算法。 Pygame:一个专门用于游戏开发的库,

    2024年02月16日
    浏览(27)
  • Web前端技术基础实验报告三之超链接与多媒体文件应用

    目录 Web前端技术基础实验报告 实验题目:超链接与多媒体文件应用 实验目的:熟悉超链接与多媒体文件的插入的相关标签 实验内容 : 实验过程及结果 实验题目:超链接与多媒体文件应用 实验目的:熟悉超链接与多媒体文件的插入的相关标签 实验内容 : 项目1  设计简易

    2023年04月16日
    浏览(33)
  • 深入浅出FFmpeg:一款强大的多媒体处理工具

    引言: 在如今多媒体时代,我们经常接触到各种图片、音频和视频文件。而FFmpeg作为一款功能强大的开源多媒体处理工具,为我们提供了丰富的功能和灵活的应用方式。了不起最近刚好接触到了FFmpeg,本文将深入浅出地介绍FFmpeg,包括它的创建背景、内置工具以及常用命令,

    2024年02月11日
    浏览(29)
  • 读数据压缩入门笔记09_多媒体数据压缩

    4.6.1.1. 表示一个信号的最大可能功率与影响它的表示精度的破坏性噪声功率的比值(以对数分贝为单位) 4.6.1.2. 这一度量的基础是压缩图片的均方误差(mean-square error,MSE) 4.6.1.2.1. PSNR与MSE之间,存在着反比关系 4.6.1.3. 原始图像的值与压缩后的值差别有多大 4.6.2.1. 在比较

    2024年02月16日
    浏览(31)
  • 软考:中级软件设计师:多媒体基础,音频,图像,颜色,多媒体技术的种类,图像音频视频的容量计算,常见的多媒体标准

    提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是需要细心准备的 (1)自己的科研经历, 科研内容 ,学习的相关领域知识,要熟悉熟透了 (2)自己的实习经历,做了 什

    2024年02月09日
    浏览(35)
  • 参会记录|全国多媒体取证暨第二届多媒体智能安全学术研讨会(MAS‘2023)

    前言 :2023年4月8日上午,我与实验室的诸位伙伴们共聚浙江杭州西子湖畔的六通宾馆,参加了为期一天半的全国多媒体取证暨第二届多媒体智能安全学术研讨会(MAS’2023)。本届学术研讨会由浙江省自然科学基金委员会资助,杭州电子科技大学承办。来自国内多媒体取证与

    2024年02月08日
    浏览(37)
  • 多媒体API

    许小墨のBlog —— 菜鸡博客直通车 系列文章完整版,配图更多,CSDN博文图片需要手动上传,因此文章配图较少,看不懂的可以去菜鸡博客参考一下配图! 前端系列文章——传送门 后端系列文章——传送门 video 只接受几种视屏格式:ogg、mp4、avi 基本使用: controls属性,出现

    2024年02月02日
    浏览(43)
  • 多媒体音频焦点浅析

    多个音源可以同时向同一个输出流进行播放音频,如果没有音频焦点管控,就会出现多个音源同时播放的现象,给用户带来不便;而Android为了避免多个音源同时播放,就引入了音频焦点的概念,所有音频应用都统一按照音频焦点的规定执行,就可以避免该现象发生。 当应用

    2024年02月13日
    浏览(25)
  • AIGC生成多媒体流程

    给定 生成多个故事标题 多个故事标题进行反向推导出 再生成标题 直到达到一个相似度 多个标题固定总结合并为一个标题 根据生成故事多个章节标题 多个章节标题反向生成一个标题 对比前后两个标题相似度 不断重复直到达到一定相似度 第一个章

    2024年02月12日
    浏览(29)
  • 多媒体开发之cgo

         go语言作为近十年来优秀的现代开发语言的代表,由于继承了c语言的简洁和很多现代语言的表达方式,在广泛的应用场景中得到众多爱好者的喜爱,如何将go和c、c++进行联合开发,拓展整个开发生态,不用重复造轮子,掌握cgo可以让你得心应手的在c和go之间传递信息,

    2024年02月16日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包