降维的目的
- 进行数据降维处理,我们可以容易地实现高维数据可视化——将其降为三维甚至二维。
- 由于可能存在许多冗余特征量,所以需要减少特征量的数量。(比如同时有英寸和米的数据,这样的数据是线性相关的,可以去掉其中之一)
- 机器学习算法的复杂度和数据的维数有着密切关系,甚至与维数呈指数级关联。因此我们必须对数据进行降维。
降维的方法
在机器学习领域,我们对原始数据进行特征提取,有时会得到比较高维的特征向量。在这些向量所处的高维空间中,包含很多的冗余和噪声。我们希望通过降维的方式来寻找数据内部的特性,从而提高特征的表达能力,降低训练复杂度。
主要有三种方法:1)主成分分析(PCA);2)因子分析(FA);3)独立成分分析(ICA)。其中 PCA是一种具有严格数学基础并且已被广泛采用的降维方法。
它属于一种线性、无监督、全局的降维方法。
PCA的理论基础和思想
- PCA理论中,主要是用到线性代数中的特征值和特征向量。(详情可参考本博主的特征值和特征向量的几何意义的博文)
- PCA的目标是降低每一个特征量到投影直线的距离,也就是降低投影误差。
- PCA深入浅出的基本思想讲解还可参考
吴恩达老师的《机器学习课程》
- 用到的统计中的概念:均值、方差和协方差矩阵
给定一个含有m个样本的集合:X={X1,…,Xm}
均值:
方差:
均值描述的是样本集合的平均值,方差描述的是样本集合中各个点到均值的距离的平均,也就是数据的离散程度。
如果数据的维数比较多的话,我们想知道某两个特征之间是否有关系,比如说统计学生的成绩,数学成绩和物理成绩
之间是否有关系,如果有是正相关呢还是负相关,协方差就是用来描述两个随机变量X,Y之间关系的统计量,协方差
定义如下:
协方差的结果为正的话,表明二者之间是正相关,为负的话表明二者之间是负相关。这里的X,Y两个一维的随机变量,
如果随机变量的个数很多呢,这时候就引入了协方差矩阵的概念:对于一个n维的数据,分别计算每两个维度之间的协方差,就构成了一个协方差矩阵:
可见这是一个对称矩阵,对角线上的是方差。如果数据是三维的,则协方差矩阵如下:
PCA算法实现过程推导
-
给定一个训练集 x 1 x^{1} x1, x 2 x^{2} x2,…, x m x^{m} xm。其中m表示样本数量, x i x^{i} xi是表示
i
样本的n维特征向量(为列向量)
x ( i ) = ( x 1 ( i ) x 2 ( i ) . . . x n ( i ) ) x^{(i)}=\begin{pmatrix} x^{(i)}_{1} \\x^{(i)}_{2}\\.\\.\\.\\x^{(i)}_{n} \end{pmatrix} x(i)=⎝⎜⎜⎜⎜⎜⎜⎜⎛x1(i)x2(i)...xn(i)⎠⎟⎟⎟⎟⎟⎟⎟⎞ -
对数据进行预处理(特征缩放,均值为零)
μ j = 1 m ∑ i = 1 m x j ( i ) μ_{j}=\frac{1}{m}\sum_{i=1}^{m}x^{(i)}_{j} μj=m1i=1