主成分分析(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]

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

  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 ]
    
  2. 计算协方差矩阵Σ:

    [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]
    
  3. 计算Σ的特征值和对应特征向量(略去具体过程):

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

    ...

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

  5. 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的数学计算过程,从复杂数据中发现主要的特征向量,并利用它们提取主成分信息。

相关推荐
耗不尽的先生12 天前
【数学】通用三阶矩阵特征向量的快速求法 超简单!!!
人工智能·线性代数·矩阵·特征向量
Mysticbinary6 个月前
特征值和特征向量简单入门
特征值·特征向量
Wyn_6 个月前
【python】numpy库计算矩阵特征值和特征向量
python·numpy·邻接矩阵·特征值·特征向量
JarodYv6 个月前
【白话机器学习系列】白话特征向量
人工智能·线性代数·机器学习·矩阵·特征值·特征向量
松下J277 个月前
线性代数 --- 矩阵的对角化以及矩阵的n次幂
线性代数·矩阵·特征值·特征向量·矩阵的对角化·矩阵的n次幂·矩阵的幂
松下J279 个月前
线性代数 --- 特征值与特征向量
人工智能·线性代数·算法·机器学习·特征值·特征向量
你哥同学1 年前
【数值分析】乘幂法,matlab实现
开发语言·线性代数·matlab·特征值·特征向量·乘幂法
qq_189370491 年前
方阵的特征值、特征向量以及特征多项式和特征方程
线性代数·矩阵·特征值·特征向量·特征多项式·特征方程
Douglassssssss1 年前
【考研数学】线性代数第五章 —— 特征值和特征向量(2,特征值与特征向量的性质)
线性代数·考研·特征值·特征向量·实对称矩阵·性质