用矩阵分解找寻数据“灵魂”-线性代数(3)

前言-PREFACE

数据是人工智能得以现实的基础,如何面向业务目标从浩瀚的数据中挖掘出相关性最高的数据“灵魂”,抓住数据本质高效构建出针对目标的算法模型,是人工智能面临的最主要的挑战。矩阵分解作为线性代数中一种强大的工具,它将一个矩阵分解成多个具有特殊性质的矩阵的乘积,帮助我们更好地识别矩阵的结构和更深入地洞察矩阵数据潜在的重要特性,起到非常重要的作用。借由矩阵分解对数据核心内容的识别和简化,从而实现数据降维和压缩,可有效优化和加速模型训练过程,在数据分析和机器学习等领域有着广泛的应用。

本文将深入探讨特征分解(Eigenvalue Decomposition, EVD)、奇异值分解(Singular Value Decomposition, SVD)这两种常见的矩阵分解方法、原理和应用。

找寻数据的“灵魂”-DELVING INTO THE CORE OF DATA

 1. 特征分解(EVD) 

1.1 特征向量和特征值

  • 特征值和特征向量的定义

特征分解是一种针对方阵的分解方法。设A是n×n的方阵,如果存在标量λ和非零向量x,满足Axx,则称λ为矩阵A的特征值,x为与之对应的特征向量。为可视化展示特征分解的实质,下图在二维空间,可以看到Ax相当于在特征向量x的原方向上扩缩了λ倍:

如果对于两个实数λ1*λ2=λ,那么Axx可以变换成Ax=λ1*(λ2x),即对于特征向量x的任意实数倍都是矩阵A的特征向量,基于这个原因,我们一般只考虑单位特征向量,这样向量x代表特征变换的方向,λ代表伸缩比例。

  • 特征值和特征向量计算实例

举一个计算特征值和特征向量的过程的例子,考虑一个二维矩阵A

如果向量x不为0,且Axx,则行列式det(AI)=0,其中I为单位矩阵,因为

那么

解上述方程,特征向量λ的值为:

接下来带入等式Axx来求解特征向量相对比较容易,本文不再赘述。以下使用python代码实现了上述计算过程:

运行结果为:

1.2 特征分解

  • 特征分解定义

方阵A可以通过以下形式表示:

其中,Λ 是一个对角矩阵,其对角线元素为矩阵A的特征值,而矩阵V的列向量则是对应的特征向量。

上述公式的推导过程为:

1、由于 V 的列向量是 的特征向量,所以AV的第i列满足以下等式

2、由于Λ 是一个对角矩阵, VΛ 的第i列的值同样等于

3、通过1、2两步可以得出:AV=VΛ 

4、因为V为方阵A的矩阵向量组成的正交矩阵,所以V的逆矩阵肯定存在,在AV=VΛ 两侧分别乘以V的逆矩便得出公式:

  • 特征分解的计算实例

形象地来说, 我们可以将矩阵 A 看成一个机器,这个机器将输入的向量进行变换。而这个分解就相当于将这个机器拆解成了三个部分:

  • :将输入向量转换到特征向量构成的基上。
  •   Λ:在每个基上进行缩放。
  •   V:将缩放后的向量转换回原来的基。

下面以具体的例子说明,假设有矩阵为:

可以分解成的值分别为:

对于一个向量的计算过程可如下图所示:

第一步:

第二步:

第三步:

1.3 特征分解的意义

特征分解在人工智能和机器学习方面具有广泛的应用和深远的意义,具体包括:

  • 简化计算

在处理大规模矩阵运算时,特征分解可以将一个复杂的矩阵转换为对角矩阵的形式,从而大大简化计算。对角矩阵的运算(如乘法、求逆等)通常比非对角矩阵的运算要快得多,因为对角矩阵的运算可以分解为对各个对角元素的独立运算。

如果我们要计算A的100次幂乘以向量x:x,直接计算需要进行100次矩阵乘法,计算量很大。但是,如果使用对角化方式,则只需要计算。由于Λ是对角矩阵,计算非常简单,只需要将对角线上的元素分别取100次幂即可。

  • 揭示矩阵的本质

在上述例子中,特征向量(V的列)和特征值(Λ的对角元素)揭示了矩阵A如何作用于其定义的空间。特征向量是矩阵作用后方向的向量,而特征值则描述了这种作用的大小。通过特征分解,我们可以清楚地看到哪些方向(特征向量)在矩阵变换下是“重要”的(即对应的特征值较大),哪些方向是“不重要”的(即对应的特征值较小或接近零)。

在机器学习中,这有助于我们理解数据的内在结构。例如,在PCA中,我们可以根据特征值的大小来选择最重要的特征向量作为新的数据表示方向,从而实现数据的降维和去噪,PCA内容我们后续将进行专题讲解。

 2. 奇异值分解(SVD) 

2.1 奇异值分解的定义

如前所述,特征分解适用于矩阵是方阵的情况,对于更加普适的矩阵分解方式却是奇异值分解(SVD)。奇异值分解(SVD)可以视为是矩阵的“特征分解”的一种推广,它不仅适用于方阵,还能有效地应用于任意形状的矩阵。奇异值分解的定义公式为:

对于一个任意的 m×n矩阵 A,SVD 将其分解为三个矩阵的乘积:

其中:

  • U是一个 m×m的正交矩阵,其列是 A 的左奇异向量。

  • Σ是一个m×n的对角矩阵,其对角线上是 A 的奇异值(非负数),非对角线元素为零,并且按从大到小的顺序排列。

  • V是一个n×n的正交矩阵,其列是 的右奇异向量,表示 V 的转置。

我们可以参考特征分解(EVD)去理解奇异值分解(SVD),矩阵A的左奇异向量是方阵的特征向量,矩阵A的右奇异向量是方阵的特征向量。矩阵A的非零奇异值是特征值的平方根,同时也是特征值的平方根。

2.2 奇异值分解的计算实例

由于奇异值分解计算步骤相对比较繁琐,但并不困难,使用之前分享的知识完全可以解决,本文以python为例,演示一下奇异值分解计算方式:

python代码示例为:

计算结果为:

2.3 奇异值分解的意义

在人工智能领域,尤其是机器学习和数据科学中,数据往往包含大量的特征,这些特征可能包含冗余或噪声信息。通过奇异值分解(SVD),我们可以将原始数据矩阵分解为三个矩阵的乘积,其中,对角矩阵Σ上的奇异值表示了各个特征的重要性。在实际应用中,我们通常会保留前几个较大的奇异值(即最重要的特征),而将较小的奇异值置为0,从而实现数据的降维、特征提取和噪声去除,特别是在图像处理、推荐系统等应用中被广泛的使用。  

结语-EPILOGUE

通过上述内容,我们将常见的特征分解(Eigenvalue Decomposition, EVD)、奇异值分解(Singular Value Decomposition, SVD)的定义、计算实例和应用进行了说明,虽然该部分内容不是解决实际问题的完整方案,但却是理解特征提取、数据降维和噪声去除等常见人工智能数据过程的核心原理,要想筑牢理论基础,必须要对上述内容了然于胸。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值