特征值分解和奇异值分解(SVD)在主成分分析(PCA)和机器学习领域都有广泛的应用。PCA的实现由两种方法,一种是特征值分解,另一种是奇异值分解,特征值分解和奇异值分解的目的是一样的,都是提取出一个矩阵最重要的特性。

特征值

线性代数中对特征值和特征向量的定义:设A是n阶方阵,如果存在 λ 和n维非零向量x,使 Ax=λxAx=λx,则 λ 称为方阵A的一个特征值,x为方阵A对应于或属于特征值 λ 的一个特征向量。从定义可以看出,对特征向量x进行A变换的实质是将特征向量进行缩放,缩放因子为特征值λ。因此,特征向量的代数上含义是:将矩阵乘法转换为数乘操作;特征向量的几何含义是:特征向量通过方阵A变换只进行伸缩,而保持特征向量的方向不变。特征值表示的是这个特征到底有多重要,类似于权重,而特征向量在几何上就是一个点,从原点到该点的方向表示向量的方向。

  一个变换方阵的所有特征向量组成了这个变换矩阵的一组基。所谓基,可以理解为坐标系的轴。我们平常用到的大多是直角坐标系,在线性代数中可以把这个坐标系扭曲、拉伸、旋转,称为基变换。我们可以按需求去设定基,但是基的轴之间必须是线性无关的,也就是保证坐标系的不同轴不要指向同一个方向或可以被别的轴组合而成,否则的话原来的空间就“撑”不起来了。从线性空间的角度看,在一个定义了内积的线性空间里,对一个N阶对称方阵进行特征分解,就是产生了该空间的N个标准正交基,然后把矩阵投影到这N个基上。N个特征向量就是N个标准正交基,而特征值的模则代表矩阵在每个基上的投影长度。特征值越大,说明矩阵在对应的特征向量上的方差越大,功率越大,信息量越多。总结一下,特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么,可以将每一个特征向量理解为一个线性的子空间,我们可以利用这些线性的子空间干很多的事情。不过,特征值分解也有很多的局限,比如说变换的矩阵必须是方阵。

  在机器学习特征提取中,意思就是最大特征值对应的特征向量方向上包含最多的信息量,如果某几个特征值很小,说明这几个方向信息量很小,可以用来降维,也就是删除小特征值对应方向的数据,只保留大特征值方向对应的数据,这样做以后数据量减小,但有用信息量变化不大,PCA降维就是基于这种思路。

注意:矩阵的特征值要求矩阵是非奇异矩阵(即方阵且行列式的值不为零)

奇异值

特征值及特征值分解都是针对方阵而言,现实世界中,我们看到的大部分矩阵不是方阵,比如每道数据有M个点,一共采集了N道数据,这样就形成了一个N*M的矩阵,那么怎样才能像方阵一样提取出它的特征,以及特征的重要性。奇异值分解就是来干这个事情的。奇异值相当于方阵中的特征值,奇异值分解相当于方阵中的特征值分解。

奇异值分解(SVD)是一种适用于任意矩阵的分解方法。

奇异值分解的原理就不在这里阐述(感兴趣的读者,可以进一步看本博主关于SVD原理的博文)

特征值和奇异值关系

个人觉得:对于非奇异矩阵,对应着特征值。对于奇异矩阵,就需要进行奇异值分解,对应着奇异值。对于奇异矩阵,将A与其转置相乘ATAATA将会得到一个方阵,再求特征值。值得注意的是,对于非奇异矩阵进行奇异值分解(SVD),得到的奇异值,其实就是特征值。

参考



特征值分解和奇异值分解(SVD)在主成分分析(PCA)和机器学习领域都有广泛的应用。PCA的实现由两种方法,一种是特征值分解,另一种是奇异值分解,特征值分解和奇异值分解的目的是一样的,都是提取出一个矩阵最重要的特性。