在python的sklearn的库里面集成很多机器学习算法的库,其中也包括主成分分析的方法。
1.PCA算法的原理:
PCA主要是用来数据降维,将高纬度的特征映射到低维度的特征,加快机器学习的速度。比如在三维空间里面有一个薄饼状的三维物体,由于薄饼的厚度相对于薄饼的直径要小很多很多,故我们在平时的时候就说这个薄饼是圆的,而不说它的是圆柱的,这就是无意识中把描述薄饼的特征从三维降到二维了。(由于学识疏浅,这个例子可能不是特别恰当,还请谅解)。
下面看这个图片(该图片来自台湾大学李宏毅老师的ppt):
在这个图片中,我们用两个特征,一个是attack,一个是defense来描述样本。但是如下图所示,我们作了两条线,可以看出在右边这条线上有较大的方差,而左边这条线的方差比较小,我们知道,方差越大,所包含的信息就越多。那么如何把这两个特征进行降维呢,降维要尽可能保持原始数据的信息,故要取使方差最大的一个维度(本例中从二维降到一维)。假设右边这条线的方差最大,我们就可以把这条线所在的直线当作降维后的一个维度。也就是二维降到一维后,这个一维空间的x轴所在的位置。那么这个降维后的x轴代表着什么呢?在本例中,我们可以看到这个新的特征由defense和attack这两个特征向量相加,新特征的含义我个人理解为防御力和攻击力在差不多的情况下的大小。不同的人可能理解不一样,现在就成功的将这个二个特征降到了一个特征。在实际的情况中可能有成千上万维数据,具体降到多少个特征要根据实际情况而定。一般来说,前几个特征的累计贡献率就可能达到百分之九十几了。