MATLAB执行PCA所得score矩阵首列是否为最大特征值对应特征向量?
结论
score矩阵的第一列不是主导特征向量,这个认知混淆了coeff和score两个输出的定义。
两个输出的准确含义
coeff(载荷矩阵):维度为p×p(p是原始特征数量),每一列是原始数据协方差矩阵(若启用标准化则为相关系数矩阵)的单位特征向量,列顺序严格按照对应特征值从大到小降序排列。coeff的第一列才是最大特征值对应的主导特征向量(leading eigenvector),也就是第一主成分的方向向量。score(主成分得分矩阵):维度为n×p(n是样本数量),是中心化(或标准化)后的原始数据向各个主成分方向投影得到的坐标值。它的第一列是所有样本在第一主成分(即主导特征向量指向的轴)上的投影结果,是长度为n的样本取值向量,和p维的特征向量维度都不匹配,不可能是特征向量本身。
快速区分逻辑:
coeff存的是新主成分坐标系的各个轴的方向,score存的是所有原始样本在这个新坐标系下每个轴上的坐标值。
举个直观的维度例子:如果你的输入是100个样本、每个样本含5个特征的100×5矩阵,执行pca()后:
coeff尺寸为5×5,第一列是长度为5的主导特征向量score尺寸为100×5,第一列是长度为100的第一主成分得分序列
注意:MATLAB的pca()函数默认输入矩阵满足「每行对应1个独立样本,每列对应1个原始特征」的规则,如果你的输入把特征放在行、样本放在列,需要先转置再计算,否则结果维度和含义都会出错。
内容的提问来源于stack exchange,提问作者NDO
相关产品推荐
相关产品推荐

