矩阵分解PCA,SVD

PCA

协方差矩阵的特征向量是PCA主成分的方向。

数据----去中心化-------协方差矩阵---------特征向量表示坐标轴方向,特征值表示坐标轴方向的方差

缺点:受离群值的影响很大

主成分分析(Principal Component Analysis,PCA)是一种多变量统计方法,它是最常用的降维方法之一,通过正交变换将一组可能存在相关性的变量数据转换为一组线性不相关的变量,转换后的变量被称为主成分。

思考:我们如何得到这些包含最大差异性的主成分方向呢?

答案:事实上,通过计算数据矩阵的协方差矩阵,然后得到协方差矩阵的特征值特征向量,选择特征值最大(即方差最大)的k个特征所对应的特征向量组成的矩阵。这样就可以将数据矩阵转换到新的空间当中,实现数据特征的降维。

由于得到协方差矩阵的特征值特征向量有两种方法:特征值分解协方差矩阵、奇异值分解协方差矩阵,所以PCA算法有两种实现方法:基于特征值分解协方差矩阵实现PCA算法、基于SVD分解协方差矩阵实现PCA算法。

降维的图像解释:


 

降维的公式解释

在数据中定义了两个轴,第一个轴的方向是第一个特征向量v1,第二个轴的方向是第二个特征向量v2。

SVD(奇异值分解)

奇异值就是特征值的开平方。

SVD的V是PCA主成分的方向

用SVD主要是想用SVD求出主成分的方向向量

什么要用SVD来做PCA

很巧的是,SVD中的右奇异矩阵V,就是PCA的主成分

在PCA降维中,我们需要找到样本协方差矩阵C的最大k个特征向量,然后用这最大的k个特征向量组成的矩阵来做低维投影降维。
可以看出,在这个过程中需要先求出协方差矩阵,当样本数多、样本特征数也多的时候,这个计算量还是很大的。当我们用到SVD分解协方差矩阵的时候,SVD有两个好处:

        1.有一些SVD的实现算法可以先不求出协方差矩阵C也能求出我们的右奇异矩阵V。也就是说,我们的PCA算法可以不用做特征分解而是通过SVD来完成,这个方法在样本量很大的时候很有效。实际上,scikit-learn的PCA算法的背后真正的实现就是用的SVD,而不是特征值分解。

        2.

部分参考:

https://blog.csdn.net/program_developer/article/details/80632779

12-.ipynb · ni1o1/pygeo-tutorial - Gitee.com

主成分分析(PCA)原理详解-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构与算法】如何对快速排序进行细节优化以及实现非递归版本的快速排序?

君兮_的个人主页 即使走的再远,也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们,这里是君兮_,国庆长假结束了,无论是工作还是学习都该回到正轨上来了,从今天开始恢复正常的更新频率,今天为大家带来的内容…

ROS2学习(六)Bag回放使用plotjugger

Plotjugger Plotjugger是一个类似rqt_plot的可视化工具,但PlotJuggler拥有更强大和好用的功能。你可以导入文本文件让它显示文本文件中的数据,可以导入csv等各种格式的文件,支持画出数据曲线2. Bag回放 使用Plotjugger 可以导入ros的bag包…

查找算法——二分查找法

一、介绍 首先需要将查找的数据排好序,再进行二分查找法来进行查找,二分查找是将数据范围不断分割为两份,不断比较中间值与待查找值的大小来确定其在哪个区间范围的一种方法。例如:在一组数据(1,4&#xff…

(部署服务器系列二)服务器上安装springboot运行环境,发布并运行项目

上篇文章已经安装CentOS,并且通过桥接连接上内网和外网,接下来我们先安装springboot项目运行环境,用XShell远程连接CentOS 1、下载安装JDK 下载的JDK版本要和开发的项目一致,下载后用xftp工具传输到 /usr/local/src 目录下 镜像…

Maven 环境配置

Maven 是一个基于 Java 的工具,所以要做的第一件事情就是安装 JDK。 系统要求 项目 要求 JDK Maven 3.3 要求 JDK 1.7 或以上 Maven 3.2 要求 JDK 1.6 或以上 Maven 3.0/3.1 要求 JDK 1.5 或以上 内存 没有最低要求 磁盘 Maven 自身安装需要大约 10 MB 空间…

promtail multiline 堆栈日志处理

找到自己的promtail.yaml中job_name段落,增加multiline段落,下面文件只是部分内容,只需要修改firstline后面的正则表达式匹配日志行首,如果堆栈换行后不是此格式行首,将自动把堆栈的行合并到上一行中。 - job_name: k…

springboot就业信息管理系统springboot32

大家好✌!我是CZ淡陌。一名专注以理论为基础实战为主的技术博主,将再这里为大家分享优质的实战项目,本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路…

微信小程序:实现列表单选

效果 代码 wxml <view class"all"><view class"item_all" wx:for"{{info}}" wx:key"index"><view classposition {{item.checked?"checked_parameter":""}} data-id"{{item.employee_num}}…

什么是信创测试?信创测试工具有哪些?

信创全称是“信息技术应用创新”&#xff0c;旨在实现信息技术自主可控&#xff0c;规避外部技术制裁和风险&#xff0c;其涉及产业链包括硬件、基础软件、应用软件、云服务、数据安全等领域。 信创测试是指对信创工程项目中的产品、系统等进行测试和验证&#xff0c;以确保其…

[GXYCTF 2019]Ping Ping Ping题目解析

本题考察的内容是rce绕过&#xff0c;本事过滤的东西不算多也算是比较好绕过 基础看到这种先ping一下试试看 输入127.0.0.1看看有啥东西 有回显说明可以接着往下做 借用RCE漏洞详解及绕过总结(全面)-CSDN博客这个大佬整理的rce绕过 ;A;B无论真假&#xff0c;A与B都执行&…

125KHz低频接收唤醒芯片:Si3933(TSSOP16)

Si3933 具有内部时钟产生器&#xff0c;可使用晶体振荡器或者RC振荡器&#xff0c;也可以使用外部时钟。 Si3933 是一款三通道的D功耗ASK接 收机&#xff0c;可用于检测15KHz-150KHz低频载波频率的数字信号&#xff0c;并产生唤醒信号。内部集成的校验器用于检测 16 位或 32 位…

Go 语言切片扩容规则是扩容2倍?1.25倍?到底几倍

本次主要来聊聊关于切片的扩容是如何扩的&#xff0c;还请大佬们不吝赐教 切片&#xff0c;相信大家用了 Go 语言那么久这这种数据类型并不陌生&#xff0c;但是平日里聊到关于切片是如何扩容的&#xff0c;很多人可能会张口就来&#xff0c;切片扩容的时候&#xff0c;如果老…