PCA 学习笔记

栏目: 数据库 · 发布时间: 6年前

内容简介:[TOC]$X:n \times p$协方差矩阵: $\Sigma=Cov(X,X)\geq 0$.$\Gamma =e^T\Sigma e$ 正定矩阵对角化

PCA

[TOC]

一般原理

记号

$X:n \times p$协方差矩阵: $\Sigma=Cov(X,X)\geq 0$.

$\Gamma =e^T\Sigma e$ 正定矩阵对角化

$\Sigma = e\Gamma e^T=\sum_i\lambda_ie_ie_i^T.$ 谱分解形式

主成分 $i$-PC: $Y_i=Xe_i$. PCs: $Y=Xe$. ($e$: 特征向量/负载)

PC 定义

$\max Var Y_i, Y_i=Xl_i$,

$|l_i|=1, Cov(Y_i, Y_k)=0$

定理

(1) 的解是$\Gamma =e^T\Sigma e$ (正定矩阵对角化)

证明. (略)

百分比定义(contribution)

特征值:

$\lambda_i=Var(Y_i)=e_i^T\Sigma e_i$

百分比,累计百分比

$\frac{\lambda_k}{\sum_i\lambda_i}$,

$\frac{\sum_{i\leq m}\lambda_i}{\sum_i\lambda_i}$.

相关系数矩阵*

相关系数矩阵:即标准化

相关系数矩阵: $\rho=corr(X,X)\geq 0$. $\rho =e^T\Sigma e$.

百分比: $\frac{\lambda_i}{p},\frac{\sum_i\lambda_i}{p}$.

特征值和百分比会受标准化影响

样本PCA, Y估计

PCA算法

    • 观察值$x\sim X$
    • 计算样本协方差$\hat{S}=Cov(x,x)$
    • 计算$\hat{e}, \Gamma =\hat{e}^T \hat{S} \hat{e}$,作为$e$的估计,变换得到$\hat{Y}=x\hat{e}$,以及

      百分比估计

      $\frac{\hat{\lambda}_k}{\sum_i\hat{\lambda}_i}$,

      $\frac{\sum_{i\leq m}\hat{\lambda}_i}{\sum_i\hat{\lambda}_i}$.

Python 实现

scikit-learn实现

# implement with scikit-learn
import numpy as np
from sklearn.decomposition import PCA
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
pca = PCA(n_components=2)
pca.fit(X)
PCA(copy=True, iterated_power='auto', n_components=2, random_state=None,
svd_solver='auto', tol=0.0, whiten=False)

print(pca.explained_variance_ratio_)   # lambda_i / sum_i lambda_i
[0.9924... 0.0075...]
print(pca.singular_values_)     # sigma_i (sqrt lambda_i)
[6.30061... 0.54980...]

pca.components_  # the pcs (sorted by lambda_i)

statsmodels 实现

# data: n X p - array
# not standardized, not normalized
# data: Variables in columns, observations in rows
from statsmodels.multivariate.pca import PCA

pc = PCA(data, ncomp=p, standardize=False, normalize=False) # Y=Xe
# pc.loadings: e^
# pc.factors: Y^
# pc.factors == data (demean) * pc.loadings
# pc.coeff = pc.loadings ^ -1

# principle of matrix analysis:  U S V' = D
U, s, V = LA.svd(np.cov(data.T), full_matrices=True) # U == V
PC = data @ V.T
# V.T == loadings
# eigenvals for lambda_i

PCA 变种

IPCA

用于大数据的PCA

ipca = IncrementalPCA(n_components=n_components, batch_size=10)

KPCA

kpca = KernelPCA(kernel="rbf", fit_inverse_transform=True, gamma=10)

SPCA

提取稀疏成分

transformer = SparsePCA(n_components=5,normalize_components=True,random_state=0)

后记

PCA的关键是估计协方差矩阵$\hat{S}$,其余是 Algebraic.

  1. 样本协方差估计
  2. 利用$X$参数分布,给出更好的无偏估计

文献

PCA wiki


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

与机器赛跑

与机器赛跑

[美]埃里克·布林约尔松(Erik Brynjolfsson)、[美]安德鲁·麦卡菲(Andrew McAfee) / 闾佳 / 2013-1-20 / 6.00

一场数字革命正在加速进行。 一些科幻小说里的场景已经在现实中发生:无人驾驶汽车开上了公路;智能设备能高效地翻译人类语言;人工智能系统在智力竞赛里击败了所有人类选手;工厂雇主开始购买更多的新机器,却不招新工人…… 这些例子都证明,数字技术正在快速地掌握原本只属于人类的技能,并深刻地影响了经济。虽然大多数影响是积极的:数字革新将提高效率、降低商品价格(甚至到免费),以及增加经济总量。 ......一起来看看 《与机器赛跑》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具