福州市私家侦探公司 在这篇文章中,我将讨论以下内容。 特征分解奇异值分解伪逆矩阵 这三个方面是相互关联的。 一旦我们知道特征分解原理是什么,我们就能理解奇异值分解的原理。一旦我们知道奇异值分解,我们就能理解伪逆矩阵。 我们按顺序讨论以下几个方面。 方形矩阵(方阵)特征值和特征向量对称矩阵特征分解正交矩阵奇异值分解伪逆矩阵 方形矩阵 特征分解只对方形矩阵有效。让我们看看什么是正方形矩阵。在方形矩阵中,行数和列数是一样的。比如说: 这很简单。我们继续讨论特征值和特征向量的概念。 特征值和特征向量 当一个正方形矩阵A和一个向量x有如下关系。 我们称λ为特征值,向量x为特征向量。 以上意味着向量x与矩阵A相乘的结果与向量x与标量值λ相乘的结果相同。 为了找到具有特征值和特征向量的条件,我们把方程左边的东西都移动。 为了使矢量x不为零,(A-λI)的逆矩阵应该不存在。换句话说,(A-λI)的行列式需要为零。 让我们以2x2的正方形矩阵为例来计算行列式: 所以,(A-λI)是: 然后我们计算行列式(我们希望它是零)。 因此,λ不是1就是5。 我们来定义特征向量如下: 我们有如下的特征值和特征向量的方程式。 我们可以计算出λ=1的特征向量x,如下所示: 为了满足上述条件,x1和x2是: 尽管t可以是任何值,但我们通常会使L2范数(向量各元素的平方和然后求平方根)为1,否则就会有无限多的可能解: 特征值λ=1的特征向量是: 或: 它们是一样的,只是一个向量的方向与另一个相反。所以,我就选择第一个作为λ=1的特征向量。 让我们确认一下这是否符合预期: 我们可以用同样的方法求解λ=5的情况: 对于3×3或更大的矩阵,手动计算太繁琐了。我们可以用NumPy写一个python脚本来完成。 下面是输出结果。 我们可以确认它们是否正确。 下面是输出结果。 对称矩阵 对称矩阵的特征向量是相互正交的。让我们在这里证明一下。 假设λ1和λ2(λ1≠λ2)是特征值,x1和x2是相应的特征向量。 因此: 然而,λ1≠λ2。因此: 因此,对称矩阵的特征向量是相互正交的。现在我们准备讨论一下特征分解的原理。 特征分解 利用特征值和特征向量,我们可以将一个正方形矩阵A分解如下。 Q是一个矩阵,其列中有特征向量: 是大写的lambda,是一个对角矩阵,其对角线元素是特征值: 我们将特征值按降序排列,以使对角矩阵Λ唯一。 为了证明这种特征分解是可能的,我们稍微调整方程: 而我们将证明AQ=QΛ为真。 换句话说,AQ等同于矩阵Q内的每个特征向量乘以相应的特征值。 因此,我们已经证明了特征分解是可能的。让我们用Numpy试试特征分解。 下面是输出结果: 正交矩阵 如前所述,当矩阵A是对称的,矩阵Q中的特征向量是相互正交的。 当我们也使所有特征向量的L2范数为1(正交)时,我们称Q为正交矩阵。 当Q是一个正交矩阵时: 同样地: 因此: 上述事实在我们讨论奇异值分解时将会有所帮助。 让我们用Numpy计算QΛQ^T。 下面是输出结果: 另外,让我们确定一下Q是一个正交矩阵。 下面是输出结果: 这里我们看到了数值计算的局限性。非对角线元素应该是0,但相反,其中一些元素是非常小的值。 所以,到目前为止,我们处理的是方阵,因为特征分解只对方形矩阵有效。接下来,我们将看到适用于非方形矩阵的奇异值分解。 奇异值分解 奇异值分解对任何矩阵都有效,甚至适用于非方阵。 假设矩阵A是m×n(m≠n),我们仍然可以将矩阵A分解如下。 U是一个正交矩阵(m×m)。Σ是一个对角线矩阵(m×n)。V是一个正交矩阵(n×n)。 这看起来太抽象了,可视化有助于我们理解。 Σ有如下结构。左上角部分是一个对角线矩阵,对角线元素中有奇异值(后面会详细介绍)。Σ的其他元素都是零。 我们把奇异值按降序排列。 奇异值的数量与矩阵A的秩相同,也就是独立列向量的数量。 那么,我们如何创建这样一个分解呢? 主要的想法是,我们做一个如下的方形矩阵。 或 我们可以选择其中之一,但使用元素较少的那一个比较容易。例如,如果矩阵A是100×10,000。AA^T是100×100,而A^TA是10,000×10,000。所以,我会选择AA^T。 假设我们用AA^T对矩阵A进行奇异值分解。 其中: 是一个对角线矩阵(m×m)。这些值是AA^T的特征值,因为我们对AA^T进行了如下的特征分解。 矩阵U中的列向量是特征向量,因为: 换句话说,如果我们能对AA^T进行特征分解,我们就能计算出U和对角线的σ,然后我们就能计算出V。 我们可以考虑用A^TA进行同样的计算: 其中 是一个对角线矩阵(n×n)。这些值是特征值,因为我们对A^TA进行了如下的特征分解: 矩阵V中的列向量是特征向量,因为: 换句话说,如果我们能对A^TA进行特征分解,我们就能计算出V和对角线的Σ,然后我们就能计算出U。 因此,如果我们对AA^T或A^TA进行特征分解,我们就可以进行奇异值分解。 同样,我们应该选择AA^T或A^TA中较小的一个。 让我们用Numpy试试奇异值分解。 下面是输出结果: 让我们对矩阵Σ进行如下设置。 下面是输出结果。 现在,我们可以确认=ΣT。 下面是输出结果。 现在我们知道了奇异值分解,就可以准备研究伪逆矩阵了。 伪逆矩阵 逆矩阵并不总是存在,即使是方阵。然而,对于非正方形矩阵,存在一个伪逆矩阵,也叫摩尔-彭罗斯逆矩阵。 例如,矩阵A是m×n。 使用伪逆矩阵A^+,我们可以进行以下转换。 我们定义伪逆矩阵A^+为: V和U来自奇异值分解。 我们通过转置Σ和所有对角元素的逆得到D^+。假设Σ的定义如下: 那么D+的定义如下: 现在,我们可以看到A^+A的原理: 以同样的方式,AA^+=I。 综上所述,如果我们能够对矩阵A进行奇异值分解,我们就可以通过VD^+UT来计算A^+,这是一个A的伪逆矩阵。 让我们用Numpy试试伪逆矩阵吧。 下面是输出结果: 想了解更多精彩内容,快来关注老胡说科学 ![]() |