首页 » 机器学习实战 » 机器学习实战全文在线阅读

《机器学习实战》14.2 矩阵分解

关灯直达底部

在很多情况下,数据中的一小段携带了数据集中的大部分信息,其他信息则要么是噪声,要么就是毫不相关的信息。在线性代数中还有很多矩阵分解技术。矩阵分解可以将原始矩阵表示成新的易于处理的形式,这种新形式是两个或多个矩阵的乘积。我们可以将这种分解过程想象成代数中的因子分解。如何将12分解成两个数的乘积?(1,12)、(2,6)和(3,4)都是合理的答案。

不同的矩阵分解技术具有不同的性质,其中有些更适合于某个应用,有些则更适合于其他应用。最常见的一种矩阵分解技术就是SVD。SVD将原始的数据集矩阵Data分解成三个矩阵UΣVT。如果原始矩阵Data是m行n列,那么UΣVT就分别是m行m列、m行n列和n行n列。为了清晰起见,上述过程可以写成如下一行(下标为矩阵维数):

上述分解中会构建出一个矩阵Σ,该矩阵只有对角元素,其他元素均为0。另一个惯例就是,Σ的对角元素是从大到小排列的。这些对角元素称为奇异值(Singular Value),它们对应了原始数据集矩阵Data的奇异值。回想上一章的PCA,我们得到的是矩阵的特征值,它们告诉我们数据集中的重要特征。Σ中的奇异值也是如此。奇异值和特征值是有关系的。这里的奇异值就是矩阵Data * DataT特征值的平方根。

前面提到过,矩阵Σ只有从大到小排列的对角元素。在科学和工程中,一直存在这样一个普遍事实:在某个奇异值的数目(r个)之后,其他的奇异值都置为0。这就意味着数据集中仅有r个重要特征,而其余特征则都是噪声或冗余特征。在下一节中,我们将看到一个可靠的案例。

我们不必担心该如何进行矩阵分解。在下一节中就会提到,在NumPy线性代数库中有一个实现SVD的方法。如果读者对SVD的编程实现感兴趣的话,请阅读Numerical Linear Algebra1。

1. L. Trefethen and D. Bau III, Numerical Linear Algebra (SIAM: Society for Industrial and Applied Mathematics, 1997).