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

  • 相关阅读:
    【java养成】:main函数中String[] args的作用、商品入库案例、猜数字游戏、随机点名器
    Linux open suse15==安装pcre zlib openssl nginx 关防火墙 安装httpd
    【Linux私房菜】第七期——尾声
    TSP:常春藤算法IVY求解旅行商问题TSP(可以更改数据),MATLAB代码
    高性能 MySQL - 第六章 查询性能优化
    锂电溶液提纯除钙镁用什么工艺,除钙镁树脂设备
    学习算法和数据结构的第15天
    【深度学习 Pytorch笔记 B站刘二大人 数据集加载 Dataset&DataLoader 模块实现与源码解读(7/10)】
    vue获取本地IP地址 自动配置本地请求地址
    Ant Design of React组件引用及路由跳转
  • 原文地址:https://www.cnblogs.com/mysticbinary/p/18230437