文章目录

  • 1. 总体主成分分析
  • 2. 样本主成分分析
  • 3. 主成分分析方法
    • 3.1 相关矩阵的特征值分解算法
    • 3.2 矩阵奇异值分解算法
  • 4. sklearn.decomposition.PCA
  • 主成分分析(Principal Component Analysis,PCA)是一种常用的无监督学习方法
  • 利用正交变换把由线性相关变量表示的观测数据 转换为 少数几个由线性无关变量表示的数据,线性无关的变量 称为 主成分
  • 主成分的个数通常小于原始变量的个数,所以PCA属于降维方法
  • 主要用于发现数据中的基本结构,即数据中变量之间的关系,是数据分析的有力工具,也用于其他机器学习方法的前处理
  • PCA属于多元统计分析的经典方法

1. 总体主成分分析

第一轴选取方差最大的轴 y1

主成分分析 的主要目的是降维,所以一般选择 k( k ≪ m k\ll m k≪m)个主成分(线性无关变量)来代替m个原有变量(线性相关变量),使问题得以简化,并能保留原有变量的大部分信息(原有变量的方差)。

在实际问题中,不同变量可能有不同的量纲,直接求主成分有时会产生不合理的结果。
为了消除这个影响,常常对各个随机变量实施规范化,使其均值为0,方差为1

主成分分析的结果可以用于其他机器学习方法的输入

  • 将样本点投影到以主成分为坐标轴的空间中,然后应用聚类算法,就可以对样本点进行聚类

定义:

假设 x \pmb x xxx 为 m m m 维随机变量,均值为 μ \mu μ,协方差矩阵为 Σ \Sigma Σ
随机变量 x \pmb x xxx 到 m m m 维随机变量 y \pmb y y​y​​y 的线性变换
y i = α i T x = ∑ k = 1 m α k i x k , i = 1 , 2 , . . . , m y_i = \alpha_i^T \pmb x = \sum\limits_{k=1}^m \alpha_{ki}x_k, \quad i=1,2,...,m yi​=αiT​xxx=k=1∑m​αki​xk​,i=1,2,...,m
其中 α i T = ( α 1 i , α 2 i , . . . , α m i ) \alpha_i^T = (\alpha_{1i},\alpha_{2i},...,\alpha_{mi}) αiT​=(α1i​,α2i​,...,αmi​)
如果该线性变换满足以下条件,称之为总体主成分:

  • α i T α i = 1 , i = 1 , 2 , . . . , m \alpha_i^T\alpha_i = 1, i = 1, 2,...,m αiT​αi​=1,i=1,2,...,m
  • c o v ( y i , y j ) = 0 ( i ≠ j ) cov (y_i,y_j) = 0(i \neq j) cov(yi​,yj​)=0(i​=j)
  • y 1 y_1 y1​ 是 x \pmb x xxx 的所有线性变换中方差最大的, y 2 y_2 y2​ 是与 y 1 y_1 y1​ 不相关的 x \pmb x xxx 的所有线性变换中方差最大的,以此类推, y 1 , y 2 , . . . , y m y_1,y_2,...,y_m y1​,y2​,...,ym​ 称为第一主成分…第 m m m 主成分

假设 x \pmb x xxx 是 m m m 维随机变量,其协方差矩阵 Σ \Sigma Σ 的特征值分别是 λ 1 ≥ λ 2 ≥ . . . ≥ λ m ≥ 0 \lambda_1 \ge \lambda_2 \ge ... \ge \lambda_m \ge 0 λ1​≥λ2​≥...≥λm​≥0,特征值对应的单位特征向量分别是 α 1 , α 2 , . . . , α m \alpha_1,\alpha_2,...,\alpha_m α1​,α2​,...,αm​,则 x \pmb x xxx 的第 i i i 主成分可写作:
y i = α i T x = ∑ k = 1 m α k i x k , i = 1 , 2 , . . . , m y_i = \alpha_i^T \pmb x = \sum\limits_{k=1}^m \alpha_{ki}x_k, \quad i=1,2,...,m yi​=αiT​xxx=k=1∑m​αki​xk​,i=1,2,...,m
并且, x \pmb x xxx 的第 i i i 主成分的方差是协方差矩阵 Σ \Sigma Σ 的第 i i i 个特征值,即:
v a r ( y i ) = α i T Σ α i = λ i var (y_i) = \alpha_i^T\Sigma\alpha_i = \lambda_i var(yi​)=αiT​Σαi​=λi​


主成分性质:

  • 主成分 y \pmb y y​y​​y 的协方差矩阵是对角矩阵 c o v ( y ) = Λ = d i a g ( λ 1 , λ 2 , . . . , λ m ) cov(\pmb y) = \Lambda = diag(\lambda_1,\lambda_2,...,\lambda_m) cov(y​y​​y)=Λ=diag(λ1​,λ2​,...,λm​)

  • 主成分 y \pmb y y​y​​y 的方差之和等于随机变量 x \pmb x xxx 的方差之和
    ∑ i = 1 m λ i = ∑ i = 1 m σ i i \sum\limits_{i=1}^m \lambda_i = \sum\limits_{i=1}^m \sigma_{ii} i=1∑m​λi​=i=1∑m​σii​
    其中 σ i i \sigma_{ii} σii​ 是 x i x_i xi​ 的方差,即协方差矩阵 Σ \Sigma Σ 的对角线元素

  • 主成分 y k y_k yk​ 与变量 x i x_i xi​ 的 相关系数 ρ ( y k , x i ) \rho(y_k,x_i) ρ(yk​,xi​) 称为因子负荷量(factor loading),它表示第 k k k 个主成分 y k y_k yk​ 与变量 x i x_i xi​ 的相关关系,即 y k y_k yk​ 对 x i x_i xi​ 的贡献程度
    ρ ( y k , x i ) = λ k α i k σ i i , k , i = 1 , 2 , . . . , m \rho(y_k, x_i) = \frac{\sqrt{\lambda_k}\alpha_{ik}}{\sqrt{\sigma_{ii}}},k,i=1,2,...,m ρ(yk​,xi​)=σii​ ​λk​ ​αik​​,k,i=1,2,...,m


2. 样本主成分分析

是基于样本协方差矩阵的主成分分析
给定样本矩阵 X X X

X X X 的样本协方差矩阵
S = [ s i j ] m × n , s i j = 1 n − 1 ∑ k = 1 m ( x i k − x ˉ i ) ( x j k − x ˉ j ) i = 1 , 2 , . . . , m , j = 1 , 2 , . . . , m , 其 中 x ˉ i = 1 n ∑ k = 1 n x i k S = [s_{ij}]_{m \times n}, \quad s_{ij} = \frac{1}{n-1}\sum\limits_{k=1}^m(x_{ik}-\bar x_i)(x_{jk}-\bar x_j)\\ i = 1,2,...,m,\quad j = 1,2,...,m, 其中 \bar x_i = \frac{1}{n}\sum\limits_{k=1}^n x_{ik} S=[sij​]m×n​,sij​=n−11​k=1∑m​(xik​−xˉi​)(xjk​−xˉj​)i=1,2,...,m,j=1,2,...,m,其中xˉi​=n1​k=1∑n​xik​

给定样本 X X X,考虑 x \pmb x xxx 到 y \pmb y y​y​​y 的线性变换 y = A T x \pmb y = A^T \pmb x y​y​​y=ATxxx

如果满足以下条件,称之为样本主成分:

  • 样本第一主成分 y 1 = α 1 T x y_1 = \alpha_1^T \pmb x y1​=α1T​xxx 是在 α 1 T α 1 = 1 \alpha_1^T\alpha_1 = 1 α1T​α1​=1 条件下,使得 α 1 T x j ( j = 1 , 2 , . . . , n ) \alpha_1^T \pmb x_j (j=1,2,...,n) α1T​xxxj​(j=1,2,...,n) 的样本方差 α 1 T S α 1 \alpha_1^TS\alpha_1 α1T​Sα1​ 最大的 x \pmb x xxx 的线性变换,以此类推。
  • 样本第 i i i 主成分 y i = α i T x y_i = \alpha_i^T \pmb x yi​=αiT​xxx 是在 α i T α i = 1 \alpha_i^T\alpha_i = 1 αiT​αi​=1 和 α i T x j \alpha_i^T\pmb x_j αiT​xxxj​ 与 α k T x j ( k < i , j = 1 , 2 , . . . , n ) \alpha_k^T \pmb x_j \quad(k < i,j = 1,2,...,n) αkT​xxxj​(k<i,j=1,2,...,n)的样本协方差 α k T S α i = 0 \alpha_k^TS\alpha_i=0 αkT​Sαi​=0 条件下,使得 α i T x j ( j = 1 , 2 , . . . , n ) \alpha_i^T \pmb x_j (j=1,2,...,n) αiT​xxxj​(j=1,2,...,n) 的样本方差 α i T S α i \alpha_i^TS\alpha_i αiT​Sαi​ 最大的 x \pmb x xxx 的线性变换

3. 主成分分析方法

3.1 相关矩阵的特征值分解算法

  • 针对 m × n m \times n m×n 样本矩阵 X X X ,求样本相关矩阵 R = 1 n − 1 X X T R = \frac{1}{n-1}XX^T R=n−11​XXT
  • 再求样本相关矩阵的 k k k 个特征值和对应单位特征向量,构造正交矩阵
    V = ( v 1 , v 2 , . . . , v k ) V = (v_1,v_2,...,v_k) V=(v1​,v2​,...,vk​)
  • V V V 的每一列对应一个主成分,得到 k × n k \times n k×n 样本主成分矩阵 Y = V T X Y=V^TX Y=VTX

3.2 矩阵奇异值分解算法

  • 针对 m × n m \times n m×n 样本矩阵 X X X , X ′ = 1 n − 1 X T X' = \frac{1}{\sqrt{n-1}}X^T X′=n−1 ​1​XT
  • 对矩阵 X X X 进行截断奇异值分解,保留 k k k 个奇异值、奇异向量
    得到 X ′ = U S V T X' = USV^T X′=USVT
  • V V V 的每一列对应一个主成分,得到 k × n k \times n k×n 样本主成分矩阵 Y = V T X Y=V^TX Y=VTX

4. sklearn.decomposition.PCA

sklearn.decomposition.PCA 官网介绍

class sklearn.decomposition.PCA(n_components=None, copy=True,
whiten=False, svd_solver='auto', tol=0.0,
iterated_power='auto', random_state=None)

参数:
n_components:保留主成分个数,没有赋值,特征个数不变

属性:
components_:主成分
explained_variance_:各特征方差
explained_variance_ratio_:各特征方差百分比
singular_values_:主成分的奇异值
n_components_:保留特征个数

方法:

import numpy as np
from sklearn.decomposition import PCA
import matplotlib.pyplot as pltX = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
plt.scatter(X[:, 0], X[:, 1])
plt.show()
for n in range(1, 3):print("PCA n_components = {}".format(n))pca = PCA(n_components=n)pca.fit(X)print("特征方差")print(pca.explained_variance_)print("特征方差占比")print(pca.explained_variance_ratio_)print("主成分奇异值")print(pca.singular_values_)print("主成分")print(pca.components_)print("主成分个数")print(pca.n_components_)

PCA n_components = 1
特征方差
[7.93954312]
特征方差占比
[0.99244289]
主成分奇异值
[6.30061232]
主成分
[[-0.83849224 -0.54491354]]
主成分个数
1
PCA n_components = 2
特征方差
[7.93954312 0.06045688]
特征方差占比
[0.99244289 0.00755711]
主成分奇异值
[6.30061232 0.54980396]
主成分
[[-0.83849224 -0.54491354][ 0.54491354 -0.83849224]]
主成分个数
2

主成分分析(Principal Component Analysis,PCA)相关推荐

  1. pca降维python实例_主成分分析(Principal component analysis, PCA)例子–Python | 文艺数学君...

    摘要这一篇是关于PCA的实战, 我们会举一个例子, 看一下PCA具体在实战中是如何来进行的. 同时我们会比较同一个数据下, 使用PCA(主成分分析)和FA(因子分析)得到结果的不同. 简介 这一篇文章 ...

  2. 主成分分析(principal component analysis, PCA)公式

    主成分分析(principal component analysis, PCA)公式 主成分分析 摘要 什么是主成分 求解 PCA 的公式 数学证明 程序验证 参考文献 主成分分析 摘要 主成分分析作 ...

  3. 主成分分析(Principal Component Analysis, PCA)原理全面解析与应用

    目录 1. PCA算法概述 2. 数据预处理 3. 协方差矩阵计算 4. 特征值与特征向量 5. 选择主成分 6. 数据投影 7. PCA的优缺点 8. PCA算法应用 主成分分析(Principal ...

  4. OpenCV3.3中主成分分析(Principal Components Analysis, PCA)接口简介及使用

    OpenCV3.3中给出了主成分分析(Principal Components Analysis, PCA)的实现,即cv::PCA类,类的声明在include/opencv2/core.hpp文件中 ...

  5. Principal Component Analysis(PCA)

    Principal Component Analysis(PCA) Principal Component Analysis(PCA) 概念 去中心化(零均值化): 将输入的特征减去特征的均值, 相当 ...

  6. 机器学习与高维信息检索 - Note 4 - 主成分分析及其现代解释(Principal Component Analysis, PCA)及相关实例

    主成分分析及其现代解释 4. 主成分分析及其现代解释 Principal Component Analysis and Its Modern Interpretations 4.1 几何学解释 The ...

  7. pca各个向量之间的相关度_【T】排序--1--PCA主成分分析principal component analysis

    1. 问题 真实的训练数据总是存在各种各样的问题: 1. 比如拿到一个汽车的样本,里面既有以"千米/每小时"度量的最大速度特征,也有"英里/小时"的最大速度特征 ...

  8. 主成分分析法(Principal Component Analysis,PCA)

    什么是主成分分析法,他是用来干什么的 用于提取一系列样本的主要特征,从而在分类.相似度比较.匹配等操作中提高运算效率和算法准确度 举个例子:学校需要进行三好学生评比,但每个学生都有很多特征,比如:学习 ...

  9. SPSS 主成分分析(Principal Component Analysis,PCA)

    定义 主成分分析是利用降维的思想,在损失很少信息的前提下把多个指标转化为几个综合指标的多元统计方法. 转化生成的综合指标称之为主成分,其中每个主成分都是原始变量的线性组合,且各个主成分之间互不相关,这 ...

  10. 在Python中一步一步实现Principal Component Analysis(PCA)

    原文链接:http://sebastianraschka.com/Articles/2014_pca_step_by_step.html#drop_labels 引言 主成分分析的主要目的是分析数据以 ...

最新文章

  1. netbeans 添加gif图片_怎么制作动态图片?手机如何制作清晰gif动图?
  2. python制作工资计算器-Python实现扣除个人税后的工资计算器示例
  3. STM32 —— 中景园0.96寸OLED
  4. windows搭建virtualbox虚拟机安装的android环境
  5. NV16 转 NV12
  6. 解决office2016显示图标异常
  7. 2017年最新苹果开发者账号注册申请流程最强详解!
  8. linux动态频率调节系统cpufreq,Linux的cpufreq(动态变频)技术
  9. 基于微软 SAPI 的 TTS 程序实现
  10. 打造高质量的私域朋友圈,让营销效果翻倍
  11. python时间戳是什么意思_python时间戳是啥意思?
  12. 山地自行车零件选择及使用误区
  13. 第三章 View的基本概念
  14. win10 uwp 打开文件管理器选择文件
  15. java安装证书_如何把安全证书导入到java中的cacerts证书库
  16. 北大青鸟消防设备类型编码_北大青鸟JBF4372E编码型火灾声光警报器
  17. Source Code - JavaScript - 学习优雅的编码
  18. 中国股市是否出现非理性繁荣?(转载)
  19. 消息中间件(一)MQ详解及四大MQ比较
  20. 欧拉梯形格式C语言,常微分方程数值解法 欧拉格式和梯形格式比较.doc

热门文章

  1. 毕设项目-人脸识别考勤签到系统
  2. java里dialect_iBatis3基于方言(Dialect)的分页
  3. webpack构建中tree shaking、scope Hoisting(面试题)
  4. 什么是 GraphQL?
  5. Java MD5和SHA256等常用加密算法
  6. Android手机总是提示:存储空间不足,解决方法
  7. C语言:srand函数与rand函数的使用(纯干货)【易懂】
  8. 在线PDF转换PPT,不用安装软件
  9. 特征选择(一)-维数问题与类内距离
  10. [转载]转录组测序分析中cufflinks的使用及问题