主成分分析(PCA)介绍
假设你有一家理发店,已经记录了过去一年中所有顾客的头发长度和发型偏好的数据。现在你想从这些数据中提取一些主要的信息,比如顾客最常选择的发型类型,以及不同发型之间的相关性等。这对于你未来开展有针对性的营销活动很有帮助。
具体来说,我们可以将每个顾客的发型偏好用一个多维向量来表示,每一维度对应一种发型类型的喜好程度(比如评分1-5分)。这样,所有顾客就形成了一个海量的、高维的数据集。
这时候,我们可以对这个数据集进行主成分分析(PCA)。PCA的核心就是找到数据的主要特征向量,即那些能够最大程度解释数据方差的方向向量。
例如,假设经过PCA分析,发现主要有两个显著的特征向量:
- 第一个特征向量对应"时尚发型"这个主成分
- 第二个特征向量对应"保守发型"这个主成分
沿着这两个特征向量方向投影,就可以非常准确地还原出原始的高维数据。
这意味着,尽管原始数据有很多维度(发型类型),但是顾客的实际偏好可以用"时尚发型"和"保守发型"这两个主成分来概括和解释。
利用这两个主要特征向量,你可以:
- 分析哪些具体发型类型属于时尚型或保守型
- 根据客户的偏好,将他们分成偏好时尚的群体和偏好保守的群体
- 针对不同群体制定不同的营销策略和发型组合
所以,通过PCA分析得到的特征向量,可以帮助我们从高维复杂的数据中提取出主要的信息,发现数据背后的内在结构和群体特征,从而指导后续的决策。
计算过程
一个主成分分析(PCA)的具体计算过程示例。我们继续用理发店的发型偏好数据作为例子。
假设我们有5个顾客,每个顾客对5种发型(A,B,C,D,E)的喜好程度用1-5分评分,数据如下:
顾客1: [5, 4, 2, 1, 3]
顾客2: [4, 5, 1, 2, 3]
顾客3: [2, 1, 5, 4, 3]
顾客4: [1, 2, 4, 5, 2]
顾客5: [3, 3, 3, 3, 3]
我们的目标是找到能最大程度解释这些数据方差的主要特征向量。计算步骤如下:
- 将原始数据矩阵X中心化(去均值),得到均值为0的矩阵
- 计算X的协方差矩阵: Σ = (1/n) * X^T * X (n为样本数)
- 计算协方差矩阵Σ的特征值和对应的特征向量
- 将特征向量按照对应的特征值大小从高到低排序
- 选取前k个最大的特征值对应的特征向量作为主成分
具体计算:
- 去均值后的X矩阵为:
[2 1 -1 -2 0 ]
[1 2 -2 -1 0 ]
[-1 -2 2 1 0 ]
[-2 -1 1 2 -1 ]
[0 0 0 0 0 ]
- 计算协方差矩阵Σ:
[3.2 0.8 -0.8 -0.8 -0.8]
[0.8 3.2 -0.8 -0.8 -0.8]
[-0.8 -0.8 3.2 0.8 0.8]
[-0.8 -0.8 0.8 3.2 0.8]
[-0.8 -0.8 0.8 0.8 0.8]
计算Σ的特征值和对应特征向量(略去具体过程):
特征值1 = 6.828, 对应特征向量v1 = [0.456, 0.456, -0.456, -0.456, -0.364]
特征值2 = 2.172, 对应特征向量v2 = [0.556, -0.282, -0.282, 0.718, 0.166]
...由于前两个特征值最大,所以选取v1和v2作为主成分
v1对应"时尚发型"的主成分, v2主要对应"保守发型"
通过将原始5维数据投影到由v1和v2张成的2维空间,就能很好地概括原始数据的主要模式和差异。
通过矩阵运算来计算每个数据点在v1和v2方向上的投影分量。
投影分量计算
原始的5维数据为X = (x1, x2, x3, x4, x5),其中x1-x5分别是顾客对5种发型的评分。
现在我们想将X投影到由v1和v2张成的2维平面上,可以通过下面的矩阵运算:
X' = [v1 v2]T * X
其中:
- v1 = [0.456, 0.456, -0.456, -0.456, -0.364]
- v2 = [0.556, -0.282, -0.282, 0.718, 0.166 ]
- [v1 v2]T 是一个2x5的矩阵,每行就是v1和v2 , T表示矩阵的转置(Transpose)运算
- X是原始5维数据
- X'是投影后的2维数据
具体运算就是:
- 先将v1和v2并列成一个2x5矩阵
- 将X当成一个5x1的列向量
- 通过矩阵乘法 [v1 v2]T * X 得到结果X'
- 计算的结果X' = (x1', x2')是一个2x1的向量,其中x1'就是X在v1方向的投影分量,x2'就是X在v2方向的投影分量。
通过这样的矩阵投影运算,我们就能将任意一个原始5维数据X,映射到一个二维坐标点(x1',x2')上。
不同顾客对应的二维坐标点(x1',x2')分布在2D平面上,散点分布的模式就能很好地展示:
- 在v1(时尚发型)方向投影大的点,代表偏好时尚发型;
- 在v2(保守发型)方向投影大的点,代表偏好保守发型;
- 在两个方向上都投影值较小的点,代表比较中性的顾客;
这种将原始高维数据投影到主成分2维平面的方法,我们既降低了维度,又能很好地保留和展示数据中的主要模式和差异信息,这正是PCA的精髓所在。
这个例子展示了如何通过PCA的数学计算过程,从复杂数据中发现主要的特征向量,并利用它们提取主成分信息。
主成分分析(PCA)介绍的更多相关文章
- 主成分分析PCA的前世今生
这篇博客会以攻略形式介绍PCA在前世今生. 其实,主成分分析知识一种分析算法,他的前生:应用场景:后世:输出结果的去向,在网上的博客都没有详细的提示.这里,我将从应用场景开始,介绍到得出PCA结果后, ...
- 降维(一)----说说主成分分析(PCA)的源头
降维(一)----说说主成分分析(PCA)的源头 降维系列: 降维(一)----说说主成分分析(PCA)的源头 降维(二)----Laplacian Eigenmaps --------------- ...
- 机器学习 —— 基础整理(四)特征提取之线性方法:主成分分析PCA、独立成分分析ICA、线性判别分析LDA
本文简单整理了以下内容: (一)维数灾难 (二)特征提取--线性方法 1. 主成分分析PCA 2. 独立成分分析ICA 3. 线性判别分析LDA (一)维数灾难(Curse of dimensiona ...
- 一步步教你轻松学主成分分析PCA降维算法
一步步教你轻松学主成分分析PCA降维算法 (白宁超 2018年10月22日10:14:18) 摘要:主成分分析(英语:Principal components analysis,PCA)是一种分析.简 ...
- 主成分分析(PCA)原理及推导
原文:http://blog.csdn.net/zhongkejingwang/article/details/42264479 什么是PCA? 在数据挖掘或者图像处理等领域经常会用到主成分分析,这样 ...
- 主成分分析(PCA)
相对与网上很多人分享的有关PCA的经历,我第一次接触PCA却不是从人脸表情识别开始的,但我所在的实验室方向之一是人脸的研究,最后也会回到这个方向上来吧. PCA(principal component ...
- K-L变换和 主成分分析PCA
一.K-L变换 说PCA的话,必须先介绍一下K-L变换了. K-L变换是Karhunen-Loeve变换的简称,是一种特殊的正交变换.它是建立在统计特性基础上的一种变换,有的文献也称其为霍特林(Hot ...
- 机器学习降维方法概括, LASSO参数缩减、主成分分析PCA、小波分析、线性判别LDA、拉普拉斯映射、深度学习SparseAutoEncoder、矩阵奇异值分解SVD、LLE局部线性嵌入、Isomap等距映射
机器学习降维方法概括 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u014772862/article/details/52335970 最近 ...
- 主成分分析PCA数据降维原理及python应用(葡萄酒案例分析)
目录 主成分分析(PCA)——以葡萄酒数据集分类为例 1.认识PCA (1)简介 (2)方法步骤 2.提取主成分 3.主成分方差可视化 4.特征变换 5.数据分类结果 6.完整代码 总结: 1.认识P ...
- 运用sklearn进行主成分分析(PCA)代码实现
基于sklearn的主成分分析代码实现 一.前言及回顾 二.sklearn的PCA类介绍 三.分类结果区域可视化函数 四.10行代码完成葡萄酒数据集分类 五.完整代码 六.总结 基于sklearn的主 ...
随机推荐
- 3.CSS三种基本选择器
三种选择器的优先级: id选择器 > class选择器 > 标签选择器 1.标签选择器:会选择到页面上所有的该类标签的元素 格式: 标签{} 1 <!DOCTYPE html> ...
- 力扣205(java)-同构字符串(简单)
题目: 给定两个字符串 s 和 t ,判断它们是否是同构的. 如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的. 每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序 ...
- 一种关于低代码平台(LCDP)建设实践与设计思路
简介: 作者在负责菜鸟商业中心CRM系统开发过程中发现有一个痛点:业务线很多,每个业务线对同一个页面都有个性化布局和不同的字段需求,而他所在的团队就3个人,那么在资源有限的情况下该如何支撑呢?本文就降 ...
- 函数计算GB镜像秒级启动:下一代软硬件架构协同优化揭秘
简介: 优化镜像加速冷启动大致分为两种做法:降低绝对延迟和降低冷启动概率.自容器镜像上线以来我们已经通过镜像加速技术,分阶段降低了绝对延迟.本文在此基础上,介绍借助函数计算下一代IaaS底座神龙裸金属 ...
- IoT Studio可视化搭建平台编辑历史功能的思考与探索
简介: 在前端可视化搭建领域中"重做"和"撤销"这两个功能已经是标配中的标配,毕竟只要有用户行为的地方就可能会有出错,这两个功能无疑就是为用户提供了" ...
- [FAQ] PHP Warning: json_encode(): double INF does not conform to the JSON spec
如果待 json 编码元素的数值趋近无穷大,会有这个提示. 比如:小数位超出长度. 解决方式建议保留固定长度的位数,也可以四舍五入. round(sprintf('%.11f', xxxxx), 10 ...
- iceoryx源码阅读(六)——共享内存创建
目录 1 共享内存的组织 2 共享内存创建 2.1 IceOryxRouDiMemoryManager::createAndAnnounceMemory 2.2 RouDiMemoryManager: ...
- HTTP 结构概述
Web 客户端和服务器 Web 内容都是存储在 Web 服务器上的,Web 服务器所使用的是 HTTP 协议,因此经常被称为 HTTP 服务器,HTTP 服务器存储了因特网的数据.客户端向服务器发送 ...
- grads读取nc格式文件
一.通常: 1.grads读取grd和ctl:open ****.ctl 2.执行gs脚本:run ****.gs d命令,display展示数据,常用来显示变量,比如rh,rain等 q命令, ...
- Java简单实现MQ架构和思路01
实现一个 MQ(消息队列)架构可以涉及到很多方面,包括消息的生产和消费.消息的存储和传输.消息的格式和协议等等.下面是一个简单的 MQ 架构的实现示例,仅供参考: 定义消息格式和协议:我们可以定义一个 ...