PCA(主成分分析-principal components analysis)学习笔记以及源代码实战讲解
文章目录
前言
在看完吴恩达讲解的PCA(主成分分析)方法后,想着能够用代码的方式实践一下。紧接着就借阅了一下《机器学习实战》里面对PCA的流程的讲解和代码。现在对PCA的运算过程还是比较明白的,也希望这份学习笔记能够帮助刚开始学习PCA的同学们。
源代码已上传到github,有需要的同学可以去下载,别忘了给个⭐哦
源代码地址
PCA(主成分分析) 原理分析
PCA即主成分分析,是一种数据降维的方法,可以将多指标转化为少指标。这里举个例子吧,在我们使用数据做分析前,需要对数据进行一系列的处理。假如我们手上有一组房屋数据,房屋指标分别有建筑面积、实际面积、长、宽等等。这些指标中,建筑面积和实际面积之间有很强的正相关性,那也就说,我们其实可以使用一个指标来取代这两个指标。
- 能够降低算法的计算开销。我们在使用深度网络训练模型时,使用1000层网络消耗的计算资源远远大于100层消耗的资源。
- 能够去除一些噪声。PCA的思想就决定了我们所取得特征都是能够尽可能区分数据得特征,在我们得数据中,有一些指标并没有实际作用。
- 使得数据集更易使用。
内积:也称数量积,两个向量对应元素的的乘积之和百度百科-内积。计算很简单,但是我们这里说一下它在几何中的作用。看下面这张图:
这里有两个向量,分别是向量A和向量B,二者的内积为:A·B = |A| ·|B|·cos(a)
这里我们令B向量为单位向量(或模长为1),即|B|=1,所以有A·B = |A|·cos(a)
此时结果等于向量A在向量B上的投影长度。
也就是说当B向量的模长为1时,A与B的内积等于向量A在向量B上的投影的长度
坐标轴的基:在我们平常见到的x-y坐标轴,(1,0)和(0,1)为该坐标轴的一组基。坐标轴上的任意一个向量都能够用这与一组基来表示。
图中的向量为(3,2),可以用两个(0,1)和三个(1,0)来表示。我们将这个向量分别向这两个基做投影,所得到的投影的长度就是我们可以用来表示的数量。
前面的内积公式大家没忘记吧,A**·B = |A|·|B|·**cos(a) 。我们令B向量为一个基(1,0),A向量为图中(3,2)。
A**·B = |A|·**cos(a)=3.
也就是说,只要我们确定一组基,给出向量在这组基上的投影长度,就能够描述这个向量。
前面我们给出的是一组默认基,咱们接下来将(1,1)和(-1,1)作为一组基。因为我们想使基的模长为1,所以我们分别除以其模长。上面的基可以变为
( 1 2 , 1 2 ) \left ( \frac{1}{\sqrt{2}},\frac{1}{\sqrt{2}} \right ) (21,21)
和
( − 1 2 , 1 2 ) \left ( -\frac{1}{\sqrt{2}},\frac{1}{\sqrt{2}} \right ) (−21,2