PCA降维将高维数据 通过线性变换 转换为线性无关的表示。
为什么需要降维?
机器学习中可能存在 上千万维的信息, 为了提取主要特征(比如图像)并且同时也能节省计算资源。
降维的时候,我们希望保留主要特征,所以我们想删除不是那么重要的信息【或者说某一个维度的信息】。
这个维度的信息 可以通过其他维度的信息进行生成,所以这个维度自然也就没有保留的含义了。
怎么降维?
将高位数据投影到低维的空间中。
1.
低维空间: 可以理解为基的数量相对原来减少,我们将之前高维数据 投影到 低位的基上,得到的坐标值,就是降维之后的而数据。
投影到基上: 其实就是基向量和原始的向量做点积【也就是】
2.
关键点:怎样找到低纬度的基,并且降维之后数据不会消失过大(或者说数据点坐标 还比较发散)。
3.
如何用数学方式定义发散程度,或者说数据之间的相关性?方差。
但是方差只能找到一个基,对于高维的数据,可以采用协方差。
4.我们降维之后 不同记录 相关性不强,这样才能将数据更好的区分。可以利用
协方差 ,
注:【可以直观的从几何层面来看,如果点积为0,说明两条数据基本重合,相关性比较强】
希望找到的基 相互之间的协方差都为0,【也就是只剩下对角阵】 这样就能相互正交了,也就可以实现我们的效果。
5.假设 降维之后的数据为 ,协方差矩阵为, 原始数据为 ,协方差矩阵为,转换矩阵为
可以看到我们就是想要 为对角阵,找到 ,将 对角化。
我们知道 是对称矩阵
实对称矩阵有如下性质:
1.实对称矩阵 不同特征值对应的特征向量必定正交
2.如果相同特征值 对应 多个特征向量,这些特征向量一定是不相关的,所以我们可以将其正交化。
完美解决了上面的基需要正交 的要求:
所以我们需要找到 原始数据协方差的 特征值和特征向量。
步骤:
1.将数据记录按照行排好,进行中心化
2.求出协方差矩阵
3.求出特征值 及 特征向量
4.将特征向量 按照特征值大小 排列,取前 K 行 作为
5.为降维之后的数据
参考博客:
1. https://www.matongxue.com/madocs/1025.html
2. ??:http://blog.codinglabs.org/articles/pca-tutorial.html