PCA是一种线性映射,目的是为了降维。
在机器学习算法中,映射可以降维也可以升高维度,看最终的目的是什么,如果为了简化输入特征,可以降维,如果数据在低维线性不可分,可以考虑将数据映射到高维空间中,那样可能就线性可分了,这就是核方法。
PCA属于前者;
讲PCA之前我要提几个概念
1:投影
2:协方差
3:正交向量
对于1,投影是一个标量,如果我们说 A在B方向上的投影,就是表示,A中的B分量的大小。这里B仅仅代表方向而没有长度,B是一个单位向量;
怎样算投影呢,就是求内积!
对于2,一般我们知道对于单个随机变量,有方差这个概念,当把单个随机变量推广到两个的时候,就有了协方差;
对于3,空间可以看成是若干正交向量张成的空间,该空间上的任意一个点都可以用这些正交向量加权起来;
现在我们有若干向量,这些向量呢,可以看成是一个高维随机向量的若干观测值,因而就有了均值,协方差的概念;
假设现在有个向量集合,每个向量就是一个观测值,有D个维度,我们观测M次 ;数据就可以用D乘以M的矩阵来表示,矩阵的一列就是一个观测结果;
现在用一个映射矩阵左乘这个数据矩阵,相当于将数据矩阵进行了映射,得到原来数据矩阵在新空间上的投影,也就有原数据在新的坐标空间上的表示,这个映射的目的是,使得映射结果属性间无关,而且第一行的方差>第二行的方差>.....>最后一行的方差;这么做可以保留数据的个性,剔除数据的共性,去除属性间的相关性;
去除属性间的相关性是通过 映射矩阵每行的正交性获得;
映射矩阵如何获得?
对原数据的协方差矩阵进行特征值分解,将获得的正交化的特征向量,按照对应特征值由大到小按行排列就能得到;
PCA的思想就是坐标变换,通过构建一个新的正交空间,重新构建原数据,这个思想跟傅里叶变换是一致的,说白了,就是换一种表示方法;