主成分分析

cxy1114blog / 2024-10-11 / 原文

主成分分析 (PCA) - MATLAB & Simulink - MathWorks 中国

  1. 构建相关系数矩阵或协方差矩阵

    两个变量的协方差\(cov(x,y)=\frac{\sum_{i=1}^n(x_i-\bar{x})(y_i-\bar{y})}{n-1}\)

    协方差矩阵\(C= \begin{bmatrix} cov(x,x) & cov(x,y) \\ cov(x,y) & cov(y,y) \end{bmatrix}\)

  2. 再求协方差矩阵的特征向量、特征值。

  3. 每一个新变量就是用对应的特征向量乘旧变量构成的向量。

    例如对矩阵C,\(Z_1=\vec{v}\cdot \vec x\) .

  4. 得到了新变量后,可以按特征值占比大小给变量排序,让后累加取到>85%时的新变量,其它变量剔除,从而实现降维。

    每个特征向量特征值占比:\(\frac{\lambda_i}{\sum\lambda}\)

    如果,前三个新变量的占比总和>85%则就取前三个变量分析。

Matlab求特征值占比比例

data =  %数据读入
data = zscore(data);%数据标准化很重要
CorrCoefMatrix = corrcoef(data);%matlab自带函数计算相关系数矩阵,列表示随机变量,行表示观测值
[coeff latent explained] = pcacov(CorrCoefMatrix)
%coeff: 特征向量(注意与pca函数的变量score进行区分).
%latent: 特征值.
%explained:每个特征值占比,字面上即每个特征值对系统有多少解释,用百分比表示。explained=100*latent/sum(latent);

主成分分析降维

如果数据的维数过高可以用主成分分析降维。

原始数据的主成分分析 - MATLAB pca - MathWorks 中国

data_1 = pca(data);

TSNE降维

data_1 = tsne(data,'NumDimensions','2');%TSNE降维