主成分分析(Principal components analysis)问题源于训练样本本身的问题。比如由于很多原因导致我们采集的训练样本会有这样或那样的问题,这些样本不能直接通过机器学习算法进行训练,即使强制训练后,学习算法对新样本的预测结果也不好。比如:我们有一些关于人体基本情况的样本,这些样本其中有两个体重的特征,一个是千克,一个是英磅(可以将这两个特征都转化为统一的单位)。还有身高特征、性别特征、年龄特征、人种特征、居住地年平均气温,居住地平均海拔等等。样本的特征多,但样本数量却很少,于是我们的学习算法很可能出现过拟合的现象。
我们来看看前三个特征:身高、体重、性别,在实现生活中这些特征往往具有相关性,比如身材很高的人,体重往往也会比身材矮小的人大。男性的身高、体重往往也高于女性。于是我们想到有没有一种办法将这三个特征统一转化为一个特征从而方便学习算法呢?答案就是“主成分分析”简称PCA。
PCA的核心思想是将具有N维特征的样本数据处理为K维特征,其中K<N。这里的K维是全新的正交特征。K维特征称为主元,是重新构造出来的K维特征,而不是简单地从N维特征中去除其余 N-K维特征。正面我们就来介绍一下PCA的过程。
例如我们有这样一组样本,它有20个样本,每个样本都有3维特征x0, x1, x2:
x0 x1 x2
-2.61 -2.75 -2.77
-0.05 -0.36 -0.14
+4.91 +4.94 +4.53
-1.39 -1.01 -1.11
+3.84 +3.59 +3.72
+2.25 +1.74 +1.95
+0.37 +0.38 -0.04
-2.44 -2.78 -2.85
+1.70 +1.25 +1.46
+2.69 +2.42 +2.72
+4.49 +3.87 +4.33
+3.69 +4.29 +3.98
+2.98 +2.83 +3.26
-0.11 -0.32 -0.35
+1.56 +1.64 +1.59
-0.62 -0.95 -0.79
+3.62 +4.24 +4.02
-3.61 -3.69 -3.64
-3.70 -3.27 -3.19
-3.38 -2.70 -3.10
第一步:计算所有样本数据中每一个特征的平均值:
0.71 0.67 0.68
然后将每一个样本的值减去这个平均值得到下面的数据DataAdjust:
avgx0 avgx1 avgx2 -3.32 -3.42 -3.45 -0.76 -1.03 -0.82 +4.20 +4.27 +3.85 -2.10 -1.68 -1.79 +3.13 +2.92 +3.04 +1.54 +1.07 +1.27 -0.34 -0.29 -0.72 -3.15 -3.45 -3.53 +0.99 +0.58 +0.78 +1.98 +1.75 +2.04 +3.78 +3.20 +3.65 +2.98 +3.62 +3.30 +2.27 +2.16 +2.58 -0.82 -0.99 -1.03 +0.85 +0.97 +0.91 -1.33 -1.62 -1.47 +2.91 +3.57 +3.34 -4.32 -4.36 -4.32 -4.41 -3.94 -3.87 -4.09 -3.37 -3.78
第二步:对样本数据计算其协方差矩阵,因为我们的数据有3个维度的特征,所以协方差矩阵为:
根据样本数据计算其协方差矩阵,结果为:
关于协方差的数据表象为:
第三步:计算协方矩阵的特征值与特征向量:
在上面计算特征值时需要对特征值做降序排列,也就是说我们需要得到那些更能反应出样本数据特征的值。
第四步:我们为了得到K维特征,于是选取特征值为24.05和0.08的两列特征向量即:
最后:将减去平均值的样本矩阵DataAdjuect乘以K维特征向量EigenVectors就得到了我们最终需要的特征投影FinalData
最终结果为:
-5.88 -0.12 -1.50 -0.20 +7.11 +0.08 -3.22 +0.28 +5.25 -0.11 +2.24 -0.32 -0.78 +0.01 -5.85 -0.26 +1.36 -0.28 +3.33 -0.13 +6.14 -0.36 +5.71 +0.49 +4.05 -0.03 -1.64 -0.14 +1.58 +0.10 -2.55 -0.22 +5.67 +0.51 -7.50 -0.08 -7.06 +0.30 -6.49 +0.46
Copyright © 2015-2023 问渠网 辽ICP备15013245号