23 奇异值分解的应用
系列进度
AI 线性代数必备 · 第 23 / 26 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
SVD 的应用核心是保留主要结构、丢掉弱噪声。图像压缩、推荐系统和 PCA 都能从这个角度理解。
我会画奇异值衰减曲线。保留多少维,不应只凭感觉决定。
在上一篇中,我们深入探讨了如何计算奇异值及其相关的概念。奇异值分解(SVD)是一种强大的工具,它在许多领域都有广泛的应用,特别是在数据分析、信号处理和机器学习过程中。接下来,我们将重点讨论奇异值分解的实际应用,展示其如何在不同情境中发挥作用。
1. 数据降维
1.1 应用背景
读这篇时,可以把「数据降维 -> 应用背景 -> 例子:图像压缩 -> 示例代码」当成一条检查线:先抓住对象、动作和判断依据,再回到案例、代码或指标里复查。
当我们面对高维数据时,降维是一个常见的需求。高维数据不仅存储空间大,计算开销高,同时也容易导致“维度灾难”。奇异值分解为我们提供了一种有效的降维方法。
1.2 例子:图像压缩
假设我们有一幅灰度图像,其像素值可以表示为一个矩阵 。我们可以对这个矩阵进行奇异值分解:
这里,、 和 都是通过 SVD 得到的矩阵,其中 是对角矩阵,包含了奇异值。
为了实现图像压缩,我们只保留前 个最大的奇异值(以及对应的 和 矩阵中的列),构造一个新的矩阵 :
通过选择较小的 ,我们可以在保留大部分图像信息的同时,实现良好的压缩效果。
1.3 示例代码
以下是使用 Python 中的 NumPy 库来实现图像压缩的简单示例:
import numpy as np
import matplotlib.pyplot as plt
# 读取图像
image = plt.imread('image.jpg') # 假设图像是灰度图像
# 将图像转换为矩阵
A = image[:, :, 0]
# 执行奇异值分解
U, S, Vt = np.linalg.svd(A, full_matrices=False)
# 保留前k个奇异值
k = 50
A_k = np.dot(U[:, :k], np.dot(np.diag(S[:k]), Vt[:k, :]))
# 显示原始图像和压缩后的图像
plt.subplot(1, 2, 1)
plt.title('Original Image')
plt.imshow(A, cmap='gray')
plt.subplot(1, 2, 2)
plt.title('Compressed Image')
plt.imshow(A_k, cmap='gray')
plt.show()
2. 推荐系统
2.1 应用背景
读完《奇异值分解的应用》后,可以回头问三件事:它解决什么问题,哪一步最容易出错,自己能否拿一个小例子跑通。
推荐系统在电商、社交媒体和内容平台等领域中至关重要。借助奇异值分解,我们可以利用用户-物品交互矩阵进行降维,从而发掘潜在的用户偏好。
2.2 例子:协同过滤
在一个简单的推荐系统场景中,我们可以将用户对商品的评分表示为一个矩阵 。通过对 进行 SVD 分解,得到以下形式:
这里, 包含了用户的潜在特征,而 包含了产品的潜在特征。我们可以通过重构 的低秩近似,来预测未评分产品的评分。
2.3 示例代码
使用 Python 实现简单的推荐:
import numpy as np
# 用户-产品评分矩阵(示例)
R = np.array([[5, 4, 0, 1],
[4, 0, 0, 1],
[1, 1, 0, 5],
[1, 0, 5, 4]])
# 执行奇异值分解
U, S, Vt = np.linalg.svd(R, full_matrices=False)
# 重构评分矩阵
k = 2 # 选择潜在特征的数量
R_approx = np.dot(U[:, :k], np.dot(np.diag(S[:k]), Vt[:k, :]))
# 输出重构后的评分矩阵
print("Reconstructed Rating Matrix:")
print(R_approx)
3. 噪声过滤与信号处理
3.1 应用背景
在信号处理领域,奇异值分解被广泛应用于噪声过滤与信号提取。通过对信号矩阵进行 SVD 分解,我们可以容易地区分信号部分和噪声部分,从而降低噪声的影响,提高信号的质量。
3.2 例子:噪声去除
假设我们有一组时间序列数据,其中混入了噪声。可以构建一个矩阵,其中每行是不同时间点的观测。通过对其进行 SVD,保留前几个奇异值,重构信号矩阵,便可获得去噪后的结果。
如果《奇异值分解的应用》还没完全消化,可以从这张卡片的四个动作重新走一遍。
回看《奇异值分解的应用》时,不必一次做大项目,先用一条简单样例确认主线是否清楚。
总结
奇异值分解是一种强大的工具,广泛应用于数据降维、推荐系统和信号处理等领域。通过对数据进行奇异值分解,我们不仅能提取出数据的基本结构,还可以进行有效的降维和噪声去除。随着 AI 和机器学习发展的不断深入,对线性代数及其应用的理解将为我们在数据处理和分析中提供更强的支持。
在下篇文章中,我们将讨论线性代数在机器学习中的应用,探索其在模型构建、优化算法中的重要角色,敬请期待!
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
奇异值分解的应用适合谁读?
这是 AI 线性代数必备 系列第 23 / 26 篇,适合正在学习AI 线性代数必备,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇AI 线性代数必备教程要多久?
按中文技术文章阅读速度估算,通读大约 4 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读