假设你有一家理发店,已经记录了过去一年中所有顾客的头发长度和发型偏好的数据。现在你想从这些数据中提取一些主要的信息,比如顾客最常选择的发型类型,以及不同发型之间的相关性等。这对于你未来开展有针对性的营销活动很有帮助。

具体来说,我们可以将每个顾客的发型偏好用一个多维向量来表示,每一维度对应一种发型类型的喜好程度(比如评分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]

我们的目标是找到能最大程度解释这些数据方差的主要特征向量。计算步骤如下:

  1. 将原始数据矩阵X中心化(去均值),得到均值为0的矩阵
  2. 计算X的协方差矩阵: Σ = (1/n) * X^T * X (n为样本数)
  3. 计算协方差矩阵Σ的特征值和对应的特征向量
  4. 将特征向量按照对应的特征值大小从高到低排序
  5. 选取前k个最大的特征值对应的特征向量作为主成分

具体计算:

  1. 去均值后的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 ]
  1. 计算协方差矩阵Σ:
   [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. 计算Σ的特征值和对应特征向量(略去具体过程):

    特征值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]

    ...

  2. 由于前两个特征值最大,所以选取v1和v2作为主成分

  3. 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维数据

具体运算就是:

  1. 先将v1和v2并列成一个2x5矩阵
  2. 将X当成一个5x1的列向量
  3. 通过矩阵乘法 [v1 v2]T * X 得到结果X'
  4. 计算的结果X' = (x1', x2')是一个2x1的向量,其中x1'就是X在v1方向的投影分量,x2'就是X在v2方向的投影分量。

通过这样的矩阵投影运算,我们就能将任意一个原始5维数据X,映射到一个二维坐标点(x1',x2')上。

不同顾客对应的二维坐标点(x1',x2')分布在2D平面上,散点分布的模式就能很好地展示:

  • 在v1(时尚发型)方向投影的点,代表偏好时尚发型
  • 在v2(保守发型)方向投影的点,代表偏好保守发型
  • 在两个方向上都投影值较小的点,代表比较中性的顾客;

这种将原始高维数据投影到主成分2维平面的方法,我们既降低了维度,又能很好地保留和展示数据中的主要模式和差异信息,这正是PCA的精髓所在。

这个例子展示了如何通过PCA的数学计算过程,从复杂数据中发现主要的特征向量,并利用它们提取主成分信息。

主成分分析(PCA)介绍的更多相关文章

  1. 主成分分析PCA的前世今生

    这篇博客会以攻略形式介绍PCA在前世今生. 其实,主成分分析知识一种分析算法,他的前生:应用场景:后世:输出结果的去向,在网上的博客都没有详细的提示.这里,我将从应用场景开始,介绍到得出PCA结果后, ...

  2. 降维(一)----说说主成分分析(PCA)的源头

    降维(一)----说说主成分分析(PCA)的源头 降维系列: 降维(一)----说说主成分分析(PCA)的源头 降维(二)----Laplacian Eigenmaps --------------- ...

  3. 机器学习 —— 基础整理(四)特征提取之线性方法:主成分分析PCA、独立成分分析ICA、线性判别分析LDA

    本文简单整理了以下内容: (一)维数灾难 (二)特征提取--线性方法 1. 主成分分析PCA 2. 独立成分分析ICA 3. 线性判别分析LDA (一)维数灾难(Curse of dimensiona ...

  4. 一步步教你轻松学主成分分析PCA降维算法

    一步步教你轻松学主成分分析PCA降维算法 (白宁超 2018年10月22日10:14:18) 摘要:主成分分析(英语:Principal components analysis,PCA)是一种分析.简 ...

  5. 主成分分析(PCA)原理及推导

    原文:http://blog.csdn.net/zhongkejingwang/article/details/42264479 什么是PCA? 在数据挖掘或者图像处理等领域经常会用到主成分分析,这样 ...

  6. 主成分分析(PCA)

    相对与网上很多人分享的有关PCA的经历,我第一次接触PCA却不是从人脸表情识别开始的,但我所在的实验室方向之一是人脸的研究,最后也会回到这个方向上来吧. PCA(principal component ...

  7. K-L变换和 主成分分析PCA

    一.K-L变换 说PCA的话,必须先介绍一下K-L变换了. K-L变换是Karhunen-Loeve变换的简称,是一种特殊的正交变换.它是建立在统计特性基础上的一种变换,有的文献也称其为霍特林(Hot ...

  8. 机器学习降维方法概括, LASSO参数缩减、主成分分析PCA、小波分析、线性判别LDA、拉普拉斯映射、深度学习SparseAutoEncoder、矩阵奇异值分解SVD、LLE局部线性嵌入、Isomap等距映射

    机器学习降维方法概括   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u014772862/article/details/52335970 最近 ...

  9. 主成分分析PCA数据降维原理及python应用(葡萄酒案例分析)

    目录 主成分分析(PCA)——以葡萄酒数据集分类为例 1.认识PCA (1)简介 (2)方法步骤 2.提取主成分 3.主成分方差可视化 4.特征变换 5.数据分类结果 6.完整代码 总结: 1.认识P ...

  10. 运用sklearn进行主成分分析(PCA)代码实现

    基于sklearn的主成分分析代码实现 一.前言及回顾 二.sklearn的PCA类介绍 三.分类结果区域可视化函数 四.10行代码完成葡萄酒数据集分类 五.完整代码 六.总结 基于sklearn的主 ...

随机推荐

  1. javascript现代编程系列教程之一:区块作用域对VAR不起作用的问题

    在JavaScript中,使用var声明的变量具有函数作用域,而不是块级作用域.这意味着在一个函数内部,使用var声明的变量在整个函数范围内都是可见的,包括嵌套的块(如if语句.for循环等).为了避 ...

  2. 全链路灰度新功能:MSE 上线配置标签推送

    简介: 本文介绍了全链路灰度场景给配置管理带来的问题,介绍了 MSE 针对这一场景的解决方案,并通过实践的方式展示了配置标签推送的使用流程.后续,MSE 还会针对配置治理做更多的探索,帮助用户更好地解 ...

  3. 从图森未来的数据处理平台,看Serverless工作流应用场景

    4月,阿里云Serverless工作流正式商业化,这是一款用于协调多个分布式任务执行的全托管 Serverless 云服务.产品致力于简化开发和运行业务流程所需要的任务协调.状态管理以及错误处理等繁琐 ...

  4. 阿里云 VPC 内网性能测试最佳实践

    ​简介:本文介绍了在阿里云 VPC 内网执行性能测试的方法.相较于传统的公网性能测试,VPC 内网性能测试完全在客户 VPC 环境进行,无需暴露服务到公网,安全性更高,灵活性更强. 作者:风起 背景 ...

  5. 5分钟入门Lindorm SearchIndex

    ​简介:SearchIndex是Lindorm宽表的二级索引,主要用来帮助业务实现快速的检索分析.本篇文章介绍如何通过简单的SQL接口操作SearchIndex. 一.引言 云原生多模数据库Lindo ...

  6. 如何从 0 到 1 开发 PyFlink API 作业

    简介: 以 Flink 1.12 为例,介绍如何使用 Python 语言,通过 PyFlink API 来开发 Flink 作业. Apache Flink 作为当前最流行的流批统一的计算引擎,在实时 ...

  7. 大模型 RAG 是什么

    大模型 RAG(Retrieval-Augmented Generation)是一种结合了检索(Retrieval)与生成(Generation)能力的先进人工智能技术,主要用于增强大型语言模型(LL ...

  8. [FAQ] Python list 的值是带有小括号的是什么意思 ?

    python 中的 list 即列表,是用中括号 [ ] 表示的数组列表: dict 即字典,是用花括号 { } 表示的 json 对象: tuple 即元祖,是用小括号表示的序列: 见到它们之间的组 ...

  9. WinDbg 加载 dotnet core 的 sos.dll 辅助调试方法

    本文告诉大家如何加载 .NET Core 或 .NET 5 的 sos.dll 文件到 WinDbg 的方法 和 .NET Framework 或 dotnet core 2.0 不相同的是,当前的 ...

  10. 使用AI在原神里自动钓鱼,扫描Git仓库泄露的密码 【蛮三刀酱的Github周刊第三期】

    大家好,这里是的Github精彩项目分享周刊,我是每周都在搬砖的蛮三刀酱. 我会从Github热门趋势榜里选出 高质量.有趣,牛B 的开源项目进行分享. 榜单取自实时Github Trending排行 ...