PCA
算法过程
假设原始数据是,其中m表示数据大小,n表示维度大小。
将X中的数据进行零均值化,即每一列都减去其均值。
计算协方差矩阵
求出C的特征值和特征向量
将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
就是降维到k维后的数据。
如何定义k? 方差百分比: 。为特征值,从小到大排列。 主成分分析(PCA)——基于python+numpy
原理
最大化方差法:
PCA 可以用来做降维,但通俗一点说,其本质应该是线性空间坐标系的转换,从原始的空间坐标系,转换到一个“合适的”的坐标系来表达,在这个坐标系中,主要信息都集中在了某几个坐标轴上,所以只保留这个“关键”的坐标系上的表达,就能很大程度approximate原信号。
所以用特征向量组成的基来表达样本。
投影后方差
S就是你说的“去均值的原矩阵(去均值的原矩阵的协方差矩阵的特征向量作为列向量形成的矩阵)”。
因为 u有约束条件 ,所以用乘子法: ,对求导,得到
待完善
code
【机器学习算法实现】主成分分析(PCA)——基于python+numpy PCA
Kernel PCA
http://zhanxw.com/blog/2011/02/kernel-pca-%E5%8E%9F%E7%90%86%E5%92%8C%E6%BC%94%E7%A4%BA/ Kernel PCA 原理和演示
Robust PCA
核范数||A|| * 是指矩阵奇异值的和,英文称呼叫Nuclear Norm.
MATLAB code
s= svd(A); nulear_norm = sum(diag(s));
机器学习中的范数规则化之(一)L0、L1与L2范数 机器学习中的范数规则化之(二)核范数与规则项参数选择
基于TensorFlow理解三大降维技术:PCA、t-SNE 和自编码器
为什么核范数能凸近似矩阵的秩?为什么核范数是凸的? Singular Value Thresholding (SVT) 奇异值阈值
PCA原理分析 主成分分析PCA算法:为什么去均值以后的高维矩阵乘以其协方差矩阵的特征向量矩阵就是“投影” A Tutorial on Principal Component Analysis
Last updated