机器学习之 奇异值分解 SVD


 奇异值分解(Singular Value decomposition SVD), 更小的数据集来表示原始数据。去除噪音和冗余数据。

 大致原理记录:

1、特征值

 如果说一个向量v是方阵A的特征向量,将一定可以表示成下面的形式:
在这里插入图片描述
在这里插入图片描述
 这时候λ就被称为特征向量v对应的特征值,一个矩阵的一组特征向量是一组正交向量。特征值分解是将一个矩阵分解成下面的

形式:
在这里插入图片描述
其中Q是这个矩阵A的特征向量组成的矩阵,Σ是一个对角阵,每一个对角线上的元素就是一个特征值

 线性变换(矩阵近似),略。再看分解得到的Σ矩阵是一个对角阵,里面的特征值是由大到小排列的,这些特征值所对应的特征

向量就是描述这个矩阵变化方向(从主要的变化到次要的变化排列)。利用这前N个变化方向,就可以近似这个矩阵(变换)

 特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么,可以将

每一个特征向量理解为一个线性的子空间。


2、奇异值

 特征值使用与方阵,那么矩阵可以分解成:
在这里插入图片描述
 假设A是一个M *N的矩阵,那么得到的U是一个M *M的方阵(里面的向量是正交的,U里面的向量称为左奇异向量),

Σ是一个M *N的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值),V’(V的转置)是一个N *N的矩阵,里面的

向量也是正交的,V里面的向量称为右奇异向量)。推理略。

 这些奇异值(Σ对角元素)对应了原始数据集矩阵A的奇异值。对于PCA,得到的是矩阵的是矩阵的特征值,

并告诉它们是数据集中的重要特征。Σ的奇异值也是如此,奇异值和特征值是有关系的,这里的奇异值就是矩阵A*At特征值的平方根。

2、奇异值与主成分分析(PCA)

 矩阵Σ只有从大到小排列的对角矩阵。在科学和工程中,实际上:在某个奇异值的数目(r个)之后,其他奇异值都置为0。

这就意味着数据集中仅有r个重要特征,而其余特征则都是噪声或冗余特征。

如下图,矩阵A奇异值分解:

在这里插入图片描述

机器学习之 奇异值分解 SVD_第1张图片
假设Σ中阴影部分的奇异值远远大于剩余的值,那么A可以用阴影部分的乘积来近似
机器学习之 奇异值分解 SVD_第2张图片
 那么如何保留前r个奇异值呢?确定保留的奇异值的数目有很多启发式的策略。其中一个典型的做法就是保留矩阵90%的能量信息。

为了计算总能量信息,将所有奇异值求平方和, 并把平方和累加到总值得90%为止。

 理解原理后,实现比较简单,python 实现了SVD分解函数(linalg库下svd)。

你可能感兴趣的:(SVD,奇异值分解)