SciTech-Mathmatics-BigDataAIML:

PCA(Principle Component Analysis)主成分分析

参考链接

应用示例

例子背景

假设:有一个包含10个x(sample,样本)和4个f(feature, 特征)的dataset(数据集)。特征为:

$\large \bm{X_1}\text{, } \bm{X_2}\text{, } \bm{X_3}\text{, } \bm{X_4} $

\(\large Feature \rightarrow\)
\(\large Sample \downarrow\)
\(\large \bm{X_1}\) \(\large \bm{X_2}\) \(\large \bm{X_3}\) \(\large \bm{X_4}\)
1 2.5 2.4 3.5 4.2
2 0.5 0.7 1.2 1.5
3 2.2 2.9 3.1 3.8
4 1.9 2.2 2.9 3.2
5 3.1 3.0 3.8 4.0
6 2.3 2.7 3.3 3.9
7 2.0 1.6 2.7 3.0
8 1.0 1.1 1.5 1.8
9 1.5 1.6 2.2 2.5
10 1.1 0.9 1.4 1.7





\(\large \bm{\mu}\) 1.81 1.91 2.76 3.06
\(\large \bm{\sigma}\) 0.834 0.828 0.823 0.8574

数据标准化

对数据进行标准化处理。

  1. 计算每个f(feature, 特征)的: \(\large \bm{\mu}(均值) 和 \bm{\sigma}(标准差)\),

    \(\large \begin{array}{lll} \\
    \bm{\mu}_{X_1} & =1.81,\ \bm{\sigma}_{X_1} &=0.834 \\
    \bm{\mu}_{X_2} &=1.91,\ \bm{\sigma}_{X_2} &=0.828 \\
    \bm{\mu}_{X_3} &=2.76,\ \bm{\sigma}_{X_3} &=0.823 \\
    \bm{\mu}_{X_4} &=3.06,\ \bm{\sigma}_{X_4} &=0.8574 \\
    \end{array}\)

  2. Normalization(标准化, 用公式 \(\large \bm{X^{'}} = \dfrac{ \bm{X} - \bm{\mu} }{ \bm{\sigma} }\)):

    标准化后的数据集,特征值都在0值附近;

    对Dataset做的第一次数据变换

    \(\large Normed. Fs. \rightarrow\)
    \(\large Sample \downarrow\)
    \(\large \bm{X^{'}_1}\) \(\large \bm{X^{'}_2}\) \(\large \bm{X^{'}_3}\) \(\large \bm{X^{'}_4}\)
    1 0.827 0.592 0.902 1.334
    2 -1.569 -1.455 -1.896 -1.821
    3 0.469 1.195 0.423 0.866
    4 0.107 0.351 0.157 0.163
    5 1.549 1.318 1.258 1.093
    6 0.588 0.967 0.671 0.976
    7 0.227 -0.340 -0.085 -0.070
    8 -0.969 -0.972 -1.524 -1.455
    9 -0.377 -0.340 -0.683 -0.655
    10 -0.847 -1.216 -1.626 -1.589





    \(\large \bm{\mu}\) 0 0 0 0
    \(\large \bm{\sigma}\) 1 1 1 1
  1. 计算 Covarianve Matrix(协方差矩阵), 也即: 任意两个f(feature,特征)的“线性相关性”:

    • Formula(公式, Normed(标准化) Fs.数据协方差矩阵) :

      \(\large \sum = \dfrac{1}{n-1} ({X^{'}}^{T}) X^{'}\)

    • 计算得到的\(\large Cov.\ Maxtrix\) 为:

      \(\large \begin{array}{lll} \\
      CovM_{n \times n} = \dfrac{1}{n-1} ({X_{m \times n}^{'}}^{T}) X_{m \times n}^{'} \\
      \begin{bmatrix} 1.000 & 0.978 & 0.923 & 0.899 \\
      0.978 & 1.000 & 0.934 & 0.900 \\
      0.923 & 0.934 & 1.000 & 0.943 \\
      0.899 & 0.900 & 0.943 & 1.000 \\
      \end{bmatrix} \\
      \end{array}\)

  2. \(\large Eigenvaue\ Decomposition\) of \(\large Cov.\ Maxtrix\) (分解 协方差分矩阵):

    通过\(\large Eigenvaue\ Decomposition\)的方式找到\(\large Cov.\ Maxtrix\) 投影后方差最大的方向,

    即\(\large Eigenvector(特征向量)\)的方向, 而且投影在Eigenvector方向上的\(\large Eigenvaue\)即为其"变异程度".

    • \(\large Eigenvector(特征向量)\)

      • 定义: \(\large Eigenvector\) 是 协方差矩阵 的 特征值对应的方向。

        它表示数据在这个高维向量方向上的主要分布方向
      • 含义: \(\large Eigenvector\) 表示 数据某个高维向量方向上 的 分布特征

        通过这些\(\large Eigenvector\),我们可以确定数据主成分方向
    • \(\large Eigenvaue(特征值)\) 定义:

      (特征值)表示数据在 对应的 eigenvector(特征向量)方向 上的方差大小.

      "本示例"则是 Normed. Fs(标准化特征数据) 的 \(\large Cov.\ Maxtrix\) 在 某个向量方向上的 变异量.

      • \(\large Eigenvaue(特征值)\) 含义:

        Eigenvaue越大,表示数据对应特征向量方向上的方差(变异)越大,即该方向上包含的信息越多

        Eigenvaue用途:排序Principle Component(主成分)重要性(前述"最大方差理论").

    计算 eigenvalue(特征值) 和 eigenvector(特征向量)

    • 对 \(\large Cov.\ Maxtrix\) 进行 eigenvalue decomposition(特征值分解),

      即: $\large CovM_{n \times n} \ V = \lambda V, $

      得到特征值和特征向量, 特征值 表示每个 特征向量(主成分)解释的数据变异量;
    • 计算结果(eigenvalueeigenvector)为:

      \(\large \begin{array}{llll} \\
      \bm{\lambda_1}=3.706 , & \ \bm{\lambda_2}=0.264 , & \ \bm{\lambda_3}=0.028 , & \ \bm{\lambda_4}=0.002 \\
      \bm{v_1} = \begin{bmatrix} 0.509 \\ 0.510 \\ 0.507 \\ 0.494 \\ \end{bmatrix}, & \ \bm{v_2} = \begin{bmatrix} 0.227 \\ 0.056 \\ -0.647 \\ 0.724 \\ \end{bmatrix} , & \ \bm{v_3} = \begin{bmatrix} 0.435 \\ 0.786 \\ -0.306 \\ -0.314 \\ \end{bmatrix} , & \ \bm{v_4} = \begin{bmatrix} 0.703 \\ 0.347 \\ 0.472 \\ -0.419 \\ \end{bmatrix} \\
      \end{array}\)
  3. 选择PC(Principle Component, 主成分):

    • 目标: 总之“精简维度”:保障"信息保真度"为前提,降维;

      可选择前2,前3, 要少于"原始数据维度"。
    • 选择方法: 选择\(\large \bm{eigenvalue}(特征值)最大** 的 **前\)\large \bm{k}$个** $\large \bm{eigenvector}** 作为P.C.(主成分)

      本例, 因为eigenvalue 的 \(\large \bm{\lambda_1}\) \(\large \bm{\lambda_2}\)是最大的两个,

      所以, 我们选 \(\large \bm{v_1}\) \(\large \bm{v_2}\)作为PC(Principle Component,主成分)。
  4. 数据投影(投影就是做一个线性变换)

    将原始数据投影到选择的PC(主成分)上,得到降维后的数据。投影公式为:

    \[\large Y = X^{'} V, \ where\ V \text{ is a } Matrix \text{ composed by the }top\ k \ Principle\ Components
    \]

    特征值就由四个\(\large \bm{X_1}\text{, } \bm{X_2}\text{, } \bm{X_3}\text{, } \bm{X_4}\) 变成\(\large \bm{PC_1}\text{, } \bm{PC_2}\) 这两个(主成分特征维度).

    \(\large Transformed. PCs. \rightarrow\)
    \(\large Sample \downarrow\)
    \(\large PC_1\) \(\large PC_2\)
    1 1.713 0.762
    2 -3.479 0.930
    3 2.023 0.610
    4 0.456 0.178
    5 2.883 -0.243
    6 1.798 0.224
    7 0.334 -0.487
    8 -2.768 0.875
    9 -1.289 0.079
    10 -2.671 1.078

总结

  • 降维概念:降维旨在减少数据集的特征数量,同时有效保留原始数据重要信息
  • 常见方法:\(\large \bm{PCA}\)(主成分分析)、\(\large \bm{LDA}\)(线性判别分析)和\(\large \bm{SVD}\)(奇异值分解)等

为何降维

  1. 降维 的一个 重要目的 是为了 数据可视化
  2. 简化模型的复杂性, 减少拟合噪声的风险, 提高模型在 新数据泛化能力,有效地控制过拟合
  3. 特征数据本身就存在相关性和冗余

数学原理

\(\large Eigenvaue\) 和 \(\large Eigenvector\) 的 \(\large Mathmatical\ Definition\):

设 \(\large A\)是 \(\large 数域K\) 上的 \(\large n级矩阵\), 如果 \(\large K^n\)有\(\large 非零列向量\alpha\) 使得:

$$ \large A \alpha = \lambda_0 \alpha,\ 且 \lambda_0 \in K,$$

则称:

  • $\large \lambda_0 $ 是 \(\large A\) 的一个 \(\large Eigenvaue(特征值)\),
  • \(\large \alpha\) 是 \(\large A\) 的 \(\large Eigenvaue\ \lambda_0\) 的一个\(\large Eigenvector(特征向量)\)。

或换一种表达:

  • \(\large \alpha\) 是 \(\large A\) 的一个 \(\large Eigenvector\)(特征向量, "特别"的"投射变换列向量")
  • $\large \lambda_0 $ 是 \(\large A\) 投射变换在\(\large \alpha\)向量方向上的一个 \(\large Eigenvaue\)(特征值, scalar)

因为 矩阵 \(\large A_{m \times n}\)(设m<n),右乘(矩阵乘法) 一个\(\large \alpha_{n \times 1}\)("变换列向量"),

  • 变换结果将会是 \(\large X_{m \times 1}\)(结果列向量),
  • 若\(\large X_{m \times 1}(结果列向量)\) 与 \(\large \alpha_{n \times 1}(变换列向量)\) 存在\(\large X_{m \times 1} = \lambda_0 \alpha_{n \times 1}\),
  • 右乘变换列向量高维几何意义就是将:

    \(\large A_{m \times n}\) 投射 到 \(\large \alpha_{n \times 1}\)(变换列向量)的向量方向

    并且 \(\large \lambda_0\) 是 \(\large A_{m \times n}\) 投射在 \(\large \alpha_{n \times 1}\)变换列向量方向上的 \(\large Eigenvaue\)(特征值).
  • AI/ML上的意义 就是 将

SciTech-Mathmatics-BigDataAIML: PCA(Principle Component Analysis)主成分分析 的 数学原理 + 应用示例的更多相关文章

  1. 从矩阵(matrix)角度讨论PCA(Principal Component Analysis 主成分分析)、SVD(Singular Value Decomposition 奇异值分解)相关原理

    0. 引言 本文主要的目的在于讨论PAC降维和SVD特征提取原理,围绕这一主题,在文章的开头从涉及的相关矩阵原理切入,逐步深入讨论,希望能够学习这一领域问题的读者朋友有帮助. 这里推荐Mit的Gilb ...

  2. scikit-learn---PCA(Principle Component Analysis)---KNN(image classifier)

    摘要:PCA为非监督分类方法,常用于数据降维.为监督分类数据预处理,本例采用PCA对人脸特征提取先做降维处理,然后使用KNN算法对图片进行分类 ##1.PCA简介 设法将原来变量重新组合成一组新的互相 ...

  3. 131.008 Unsupervised Learning - Principle component Analysis |PCA | 非监督学习 - 主成分分析

    @(131 - Machine Learning | 机器学习) PCA是一种特征选择方法,可将一组相关变量转变成一组基础正交变量 25 PCA的回顾和定义 Demo: when to use PCA ...

  4. R: 主成分分析 ~ PCA(Principal Component Analysis)

    本文摘自:http://www.cnblogs.com/longzhongren/p/4300593.html 以表感谢. 综述: 主成分分析 因子分析 典型相关分析,三种方法的共同点主要是用来对数据 ...

  5. 主成分分析 Principle Component Analysis

    一.主要思想 利用正交变换把可能线性相关变量表示的观测数据,转换为由少数几个线性无关变量(主成分)表示的数据.(重构原始特征空间:线性降维) 要尽可能保留原始数据中的信息,两个思路:最大投影方差.最小 ...

  6. 【统计学习】主成分分析PCA(Princple Component Analysis)从原理到实现

    [引言]--PCA降维的作用 面对海量的.多维(可能有成百上千维)的数据,我们应该如何高效去除某些维度间相关的信息,保留对我们"有用"的信息,这是个问题. PCA给出了我们一种解决 ...

  7. 另一种压缩图片的方法---Machine learning 之 PCA(Principle Component Analysis)

    PCA最主要的用途是用来减少特征向量的数目,N个特征向量 减小到 K个特征向量.如果为了可视化,k可以使3 或者 2.这样可以加速算法的学习速度. PCA用来压缩图像同一有效. 具体方式以及原理在gi ...

  8. MachineLearning Exercise 7 : K-means Clustering and Principle Component Analysis

    findClosestCentroids.m m = size(X,); :m [value index] = min(sum((repmat(X(i,:),K,)-centroids).^,)); ...

  9. PCA(Principal Component Analysis)笔记

    PCA是机器学习中recognition中的传统方法,今天下午遇到了,梳理记一下 提出背景: 二维空间里,2个相近的样本,有更大概率具有相同的属性,但是在高维空间里,由于样本在高维空间里,呈现越来越稀 ...

  10. PCA(Principal Components Analysis)主成分分析

    全是图片..新手伤不起.word弄的,结果csdn传不了..以后改. .

随机推荐

  1. Redundant Connection——LeetCode进阶路

    原题链接https://leetcode.com/problems/redundant-connection/ 题目描述 In this problem, a tree is an undirecte ...

  2. [python] 轻量级定时任务调度库schedule使用指北

    schedule是一款专为简化定时任务调度而设计的Python库,它通过直观的语法降低了周期性任务的实现门槛.作为进程内调度器,它无需额外守护进程,轻量且无外部依赖,适合快速搭建自动化任务.不过,该库 ...

  3. 炸裂!Spring AI 1.0 正式发布,让 Java 再次伟大!

    炸裂,炸裂,炸裂!从第一次提交代码到现在,经过 2 年的沉淀,Spring AI 框架的第一个正式版本 1.0 终于发布了. 有了这玩意,开发 AI 应用就是洒洒水的事,Java 开发者们是不是又爽了 ...

  4. Java catch多重异常捕获

    摘要:Java中多重异常捕获机制可以更加简洁.有效地处理多个异常,提高了程序的鲁棒性,是编写高质量代码的重要技巧之一.   小编在<浅谈Java异常处理机制>中梳理了异常处理机制,在< ...

  5. CentOS 7.* 安装最新版nginx1.28*

    一.下载nginx https://nginx.org/en/download.html 选择稳定版本 nginx-1.28.0 如果使用虚拟机,可以先用windows系统下载后,上传到虚机,此步骤省 ...

  6. 在idea里面如何配置自己的tomcat

    第一:到官网上去下载自己电脑对应的tomcat版本 第二:下载后解压 在bin目录里面找到: 双击打开是不是会出现: 然后再在bin里面找到:shutdown.bat 双击给他关闭了 第三:在我的电脑 ...

  7. etcd详细介绍

    一.etcd介绍 etcd是一个分布式.可靠的key-value存储的分布式系统,它不仅仅可以用于存储,还提供共享配置和服务发现.这里提供配置共享和服务发现的系统较多,比较常用的有zookeeper. ...

  8. 1分钟了解 GPT-1到GPT-3 演化过程

    在研发ChatMoney这款产品的时候,我开始深入研究GPT的诞生,逐记录下来分享给大家. 前言 Generative Pre-trained Transformer(GPT)系列是由OpenAI开发 ...

  9. ArkUI-X应用工程结构说明

    简介 本文档配套ArkUI-X,将OpenHarmony ArkUI开发框架扩展到不同的OS平台,比如Android和iOS平台,让开发者基于ArkUI,可复用大部分的应用代码(UI以及主要应用逻辑) ...

  10. [APIO2025 游记] 还老子钱

    [APIO2025 游记] 还老子钱 day \(-\infty\) 在广东省集的时候因为水土不服,发高烧,终于回了cq又因为感冒还没好完+忘记吃药,戒断反应严重,上了一天学就回家休息了两天+开了一堆 ...