利用PCA降维的手工计算实例
转载:https://blog.csdn.net/dugudaibo/article/details/78931825
PCA 的原理相信大家十分熟悉了已经,但是很多人没有真正的进行过相关的推到。在这里本文将举一个利用 PCA 降维的手工计算实例。
1 .问题的描述
已知现在有一个二维矩阵如下所示
这个是一个已经去掉均值的矩阵。其中每一行是一个维度,而每一列是一个样本。去均值的运算是针对每一个维度进行的运算,也就是说每一行减去这一行的均值。
2. 计算过程
2.1 计算协方差矩阵
由于已经进行了去均值化,所以可以直接求取协方差矩阵。需要注意的是,协方差矩阵计算的是每一个维度之间的协方差,不是计算样本之间的协方差,所以本例中的协方差矩阵为一个2×2的矩阵。
在这里需要注意的是,通过MATLAB计算协方差矩阵与手工计算有两点不同:
(1) 这里前面乘以的是1515,这个是有偏估计,但是MATLAB计算的时候乘以的是1414,计算的是无偏估计。
(2) 在 MATLAB 中,默认每一列是一个维度。所以如果输入原始的数据(2行5列)会返回一个5行5列的协方差矩阵。所以应该先对矩阵进行转置在求解协方差矩阵。
2.2 计算协方差的特征值和特征向量
通过求解方程
可以得到两个特征值 λ=25λ=25 和 λ=2λ=2。通过求解下面的矩阵,可以得到协方差矩阵的特征向量。
将两个特征向量进行归一化,得到的特征向量如下
求中第一个特征向量为特征值 λ=2λ=2 的特征向量,第二个特征向量为特征值 λ=25λ=25 的特征向量。
2.3 构建变换矩阵并降维
到这里只需要将变换矩阵与原始矩阵相乘既可以完成降维的工作,在进行降维的过程中有两个容易出现的易错点。首先,特征向量的先后顺序要按照特征值的大小顺序进行排列;其次,如果原始数据的矩阵每一行是一个维度,每一列是一个样本的话,这个时候变换矩阵中的每一行是一个特征向量,如下变换矩阵P
最后我们用P的第一行乘以数据矩阵,就得到了降维后的表示:
如果原始的数据矩阵是每一行是一个样本,而每一列是一个维度的话,此时的变换矩阵中每一列是特征向量,即
P的第一列乘以数据矩阵,就得到了降维后的表示:
3. 参考文献
[1]《PCA算法》
--------------------- 本文来自 独孤呆博 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/dugudaibo/article/details/78931825?utm_source=copy
利用PCA降维的手工计算实例相关推荐
- PCA降维以及Kmeans聚类实例----python,sklearn,PCA,Kmeans
PCA 算法也叫主成分分析(principal components analysis),主要是用于数据降维的.关于降维,可以这样理解,一组数据有n个feature(客户年龄,收入,每个月消费额度等等 ...
- pca降维python实例_Python机器学习笔记:使用scikit-learn工具进行PCA降维
之前总结过关于PCA的知识:深入学习主成分分析(PCA)算法原理.这里打算再写一篇笔记,总结一下如何使用scikit-learn工具来进行PCA降维. 在数据处理中,经常会遇到特征维度比样本数量多得多 ...
- MAT之PCA:利用PCA(四个主成分的贡献率就才达100%)降维提高测试集辛烷值含量预测准确度并《测试集辛烷值含量预测结果对比》
MAT之PCA:利用PCA(四个主成分的贡献率就才达100%)降维提高测试集辛烷值含量预测准确度并<测试集辛烷值含量预测结果对比> 目录 输出结果 实现代码 输出结果 后期更新-- 实现代 ...
- 机器学习实战(十一)利用PCA来简化数据
第十三章 利用PCA来简化数据 13.1 降维技术 13.1.1 主成分分析(PrincipalComponentAnalysis,PCA) 13.1.2 因子分析(Factor Analysis) ...
- Python机器学习笔记 使用scikit-learn工具进行PCA降维...
Python机器学习笔记 使用scikit-learn工具进行PCA降维 之前总结过关于PCA的知识:深入学习主成分分析(PCA)算法原理.这里打算再写一篇笔记,总结一下如何使用scikit-lear ...
- Python机器学习笔记 使用scikit-learn工具进行PCA降维
Python机器学习笔记 使用scikit-learn工具进行PCA降维 之前总结过关于PCA的知识:深入学习主成分分析(PCA)算法原理.这里打算再写一篇笔记,总结一下如何使用scikit-lear ...
- C/C++实现PCA降维以及故障监测
之前使用Matlab进行过关于PCA的研究,应用于故障诊断与监测中,为了方便以后与其他平台进行耦合,采用C/C++语言实现,参考了很多人编写的C/C++代码,也走过一些弯路,针对相关学习在此记录下来, ...
- PCA降维的来龙去脉及Python实现
目录 1 PCA降维 2 在讲PCA降维的原理前需要知道的一些东西 2.1 方差 2.2 协方差及协方差矩阵 2.3 向量在不同基下的坐标 2.4 矩阵乘法 2.5 矩阵的特征值和特征向量 2.6 实 ...
- 【主成分分析】PCA降维算法及Matlab代码实现
前言 机器学习中经常会遇到高维变量的大数据集,并且大数据集的很多高维变量之间并不是独立的,它们之间往往存在相关关系.这些变量一方面为机器学习提供了大量的信息,另一方面由于信息冗余也增加了数据处理的 ...
- 【视频】主成分分析PCA降维方法和R语言分析葡萄酒可视化实例|数据分享
最近我们被客户要求撰写关于主成分分析PCA的研究报告,包括一些图形和统计输出.降维技术之一是主成分分析 (PCA) 算法,该算法将可能相关变量的一组观察值转换为一组线性不相关变量.在本文中,我们将讨论 ...
最新文章
- Linux系统普通用户切换省略输入用户名密码
- 网站如何接入支付宝(转)
- 【Darknet-Yolov3】Ubuntu 服务器上无权限出现 ./darknet: error while loading shared libraries: libcudart.so.8.0
- python获取系统内存占用信息的实例方法
- centos查看是否安装了某个软件
- jprofiler_监控远程linux服务器的JVM进程(转 非常棒)
- Netty源码分析第3章(客户端接入流程)----第3节: NioSocketChannel的创建
- 【UnityEditor】根据枚举的不同显示各自对应的内容
- Java学习之json篇——json介绍
- Android Studio安装教程
- 希腊字母|罗马数字|中文数字大写
- 创建菜单与游戏界面(下)
- Thinkphp使用CKEditor4富文本编辑器
- qq音乐网络异常获取音乐失败_QQ音乐无法播放_为什么qq音乐总是提示歌曲无效或网络连接失败?...
- OSChina 周一乱弹 —— 无双什么都好,但不是芙妹
- 老师发的周报写法,之前自己太随意没有规则了QAQ
- 安全问题层出不穷 加密手机悄然兴起
- 外挂的介绍 什么是外挂
- Spring AOP的术语:
- 两份重磅文件明确互联网平台分类分级,淘宝、微信、抖音等将迎“超级监管”...
热门文章
- Atitit code for biz lst idx项目分析法,包括模块分析,与模块位置idx数据库分析 数据表的分类 日志表不断增长(包括用户表,订单表等)。。元数据表表 基本不增长。。。
- Atitit 基于文件的数据库保存系统json文档数据库 目录 1.1. 一行数据一个文件,一个文件夹微数据表表	1 1.2. 保存C:\wamp\www\tisye\tisye.php	1 1.3
- Atitit 信息检索 文档资料的查询与检索 目录 1. 索引法	1 1.1. 名字placeholder索引	1 1.2. 文本txt索引	1 1.3. 索引集合包zip	1 1.4. 文件名
- Atitit word结构化提取考试试题读取 poi读取word nlp aiprj 目录 1.1. 结构化后数据	1 1.2. 文字读取	1 1.3. 图片读取	1 1.4. Doc的表格读取 /
- atitit.TokenService v3 qb1 token服务模块的设计 新特性.docx
- Linux环境变量配置【转】
- 面向生态合作伙伴的实践分享回顾
- Cephalocon 2020首尔峰会取消
- 毕设题目:Matlab无人机协同任务
- 【手掌识别】基于matlab形态学手掌长宽检测【含Matlab源码 1382期】