Pytorch与矩阵分解-PCA。
降维就是一种对高维度特征数据预处理方法。降维是将高维度的数据保留下最重要的一些特征,去除噪声和不重要的特征,从而实现节省大量的时间和成本。在实际的生产和应用中,降维在一定的信息损失范围内,可以为我们节省大量的时间和成本。降维也成为应用非常广泛的数据预处理方法。
降维具有如下一些优点: 1. 使得数据集更易使用。 2. 降低算法的计算开销。 3. 去除噪声。 4. 使得结果容易理解。
降维的算法有很多,比如奇异值分解(SVD)、主成分分析(PCA)、因子分析(FA)、独立成分分析(ICA)。
PCA(Principal Component Analysis),即主成分分析方法。在机器学习中降维是我们经常需要用到的算法,在降维的众多方法中PCA无疑是最经典的机器学习算法之一,例如一个人脸识别算法,就会频繁用到PCA算法。
PCA的核心思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。
我们如何得到这些包含最大差异性的主成分方向呢?
通过计算数据矩阵的协方差矩阵,然后得到协方差矩阵的特征值特征向量,选择特征值最大(即方差最大)的k个特征所对应的特征向量组成的矩阵。这样就可以将数据矩阵转换到新的空间当中,实现数据特征的降维。
PCA算法有两种实现方法:基于特征值分解(EVD)协方差矩阵实现PCA算法、基于SVD分解协方差矩阵实现PCA算法。
1).特征值与特征向量 如果一个向量v是矩阵A的特征向量,将一定可以表示成下面的形式:

其中,λ是特征向量v对应的特征值,一个矩阵的一组特征向量是一组正交向量。
2).特征值分解矩阵
特征值分解(EVD),对于矩阵A,有一组特征向量v,将这组向量进行正交化单位化,就能得到一组正交单位向量。特征值分解,就是将矩阵A分解为如下式:

其中,Q是矩阵A的特征向量组成的矩阵,则是一个对角阵,对角线上的元素就是特征值。
注意:特征值分解要求矩阵必须是方阵也称为实对称矩阵。