Matlab中特征降维主成分分析(PCA)使用方法(整套流程)

1. PCA简介:

PCA(Principal Component Analysis)主成分分析方法是一种常见的数据降维方法。数据维度过高可能会使得模型效果不佳。PCA主要原理是将高维原数据通过一个转换矩阵,映射到另一组低维坐标系下,从而实现数据降维。

2. matlab中pca()函数

coeff = pca(X)
coeff = pca(X,Name,Value)
[coeff,score,latent] = pca(___)
[coeff,score,latent,tsquared] = pca(___)
[coeff,score,latent,tsquared,explained,mu] = pca(___)

常用形式:

[coeff,score,latent,tsquared,explained,mu] = pca(___)

常用参数为coeff,score,latent

  • coeff:主成分系数矩阵,也叫做转换矩阵,是理论中的原数据X对应的协方差矩阵的特征向量组成的矩阵
  • score:原数据利用初始coeff转换后的新数据矩阵,但这个不是我们想要的最终转换数据,因为后续降维操作会改变coeff
  • latent:是理论中的原数据X对应的协方差矩阵的特征值,是一个向量,并且经过排序(贡献越大越靠前)

3. PCA完整使用方法

(1). 导入实验数据,划分出训练集train_data和测试集test_data
(2). 基于训练集用pca()得到需要参数
[coeff,score,latent,tsquared,explained,mu] = pca(train_data)
(3). 计算主成分累计贡献率,运行下面的代码后会出现一个向量,从小到大,例如输出为[0.7,0.95,0.98,1](数据特征有四维),0.7就代表取第一主成分贡献率70%,0.95就代表取第一主成分和第二主成分就已经得到累计贡献率95%,相当于只用两个主成分就揽括了原数据95%的信息。若只取前两个主成分,其他的丢弃,则模型也能够有着不错的效果,从而将四维数据降到了二维。一般要求累计贡献率大于等于95%就够了
cumsum(latent)/sum(latent)%累积贡献值
(4). 基于累计贡献值确定所降到的维度数量(设为p)后,取coeff的前p列作为降维转换矩阵tran_matrix(coeff也是根据第几主成分贡献从大到小排列的)
tran_matrix = coeff(:,1:p)
(5). 把训练集每列的值减去样本对应列的均值,得到train_data0,再将train_data0与转换矩阵tran_matrix相乘,得到将原始训练集降维后的新训练数据集
train_data0 = bsxfun(@minus,train_data,mean(train_data,1));
low_train_data = train_data0 * tran_matrix;
(6). 将测试集每列的值减去训练集对应列的均值,得到test_data0,再将test_data0与转换矩阵tran_matrix相乘,得到将原始测试集降维后的新测试数据集
test_data0 = bsxfun(@minus,test_data,mean(x,1)); 
low_test_data = test_data0 * tran_matrix;

你可能感兴趣的:(Matlab,机器学习,matlab,开发语言,机器学习)