1. 奇异值分解(SVD)原理与计算详解
奇异值分解(Singular Value Decomposition)是线性代数中一种强大的矩阵分解技术,广泛应用于数据降维、信号处理和推荐系统等领域。它能够将任意实数矩阵分解为三个特殊矩阵的乘积形式。
1.1 SVD基本概念
给定一个m×n的实数矩阵A,其SVD分解可以表示为:
A = UΣVᵀ
其中:
- U是一个m×m的正交矩阵,其列向量称为左奇异向量
- Σ是一个m×n的对角矩阵,对角线上的非负实数称为奇异值(σ₁ ≥ σ₂ ≥ ... ≥ σₙ ≥ 0)
- V是一个n×n的正交矩阵,其列向量称为右奇异向量
在实际应用中,我们通常只保留前k个较大的奇异值及其对应的奇异向量,这就是所谓的截断SVD(Truncated SVD),它可以有效降低数据维度同时保留主要信息。
1.2 奇异值计算实例解析
让我们详细解析题目中给出的矩阵A的SVD计算过程:
给定矩阵:
A = [3 4]
[0 0]
1.2.1 计算奇异值
首先计算AAᵀ:
AAᵀ = [3 4][3 0] = [25 0]
[0 0][4 0] [0 0]
AAᵀ的特征值为25和0,因此奇异值为:
σ₁ = √25 = 5
σ₂ = √0 = 0
所以Σ矩阵为:
Σ = [5 0]
[0 0]
1.2.2 计算右奇异向量V
计算AᵀA:
AᵀA = [3 0][3 4] = [9 12]
[4 0][0 0] [12 16]
求AᵀA的特征值和特征向量:
特征值λ₁=25对应的特征向量v₁=[3,4]ᵀ,单位化后:
v₁ = [3/5, 4/5]ᵀ
与v₁正交的单位向量v₂=[-4/5,3/5]ᵀ
因此:
V = [3/5 -4/5]
[4/5 3/5]
1.2.3 计算左奇异向量U
根据公式u₁ = (1/σ₁)Av₁:
u₁ = (1/5)[3 4][3/5] = [1]
[0 0][4/5] [0]
选择与u₁正交的单位向量u₂=[0,1]ᵀ
因此:
U = [1 0]
[0 1]
1.2.4 验证SVD分解
将U、Σ、V相乘验证:
UΣVᵀ = [1 0][5 0][3/5 4/5] = [3 4] = A
[0 1][0 0][-4/5 3/5] [0 0]
验证结果正确。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基于用户的协同过滤推荐算法
协同过滤是推荐系统中最为经典和广泛使用的算法之一,主要分为基于用户的协同过滤(User-based CF)和基于物品的协同过滤(Item-based CF)。
2.1 问题描述与数据准备
给定用户-物品评分矩阵:
| i1 | i2 | i3 | |
|---|---|---|---|
| u1 | 5 | 3 | ? |
| u2 | 4 | 2 | 1 |
| u3 | 5 | ? | 2 |
目标:预测用户u1对物品i3的评分(r̂u1,i3)
2.2 相似度计算
采用余弦相似度计算用户间的相似性,公式为:
sim(u,v) = (u·v) / (||u||·||v||)
2.2.1 计算sim(u1,u2)
共同评分物品:i1,i2
u1向量:[5,3]
u2向量:[4,2]
点积:5×4 + 3×2 = 26
模长:||u1|| = √(5²+3²) = √34 ≈ 5.831
||u2|| = √(4²+2²) = √20 ≈ 4.472
sim(u1,u2) = 26 / (5.831×4.472) ≈ 0.997
2.2.2 计算sim(u1,u3)
共同评分物品:i1
u1向量:[5]
u3向量:[5]
sim(u1,u3) = (5×5)/(5×5) = 1
2.3 评分预测
使用加权平均公式预测r̂u1,i3:
r̂u1,i3 = Σ[sim(u1,v)×rv,i3] / Σ|sim(u1,v)|
已知:
- sim(u1,u2)≈0.997,u2对i3评分为1
- sim(u1,u3)=1,u3对i3评分为2
计算:
分子 = 0.997×1 + 1×2 = 2.997
分母 = 0.997 + 1 = 1.997
r̂u1,i3 = 2.997/1.997 ≈ 1.50
2.4 算法优化思考
在实际应用中,基于用户的协同过滤可能面临以下挑战:
- 数据稀疏性问题:当用户-物品矩阵非常稀疏时,可能难以找到足够多的共同评分物品来计算相似度
- 冷启动问题:新用户或新物品缺乏足够的历史数据
- 计算效率问题:用户数量庞大时,实时计算用户相似度开销较大
解决方案可能包括:
- 结合基于内容的推荐方法
- 使用矩阵分解技术降低维度
- 采用聚类技术对用户分组
3. 主成分分析(PCA)原理与计算
主成分分析(Principal Component Analysis)是一种常用的降维技术,通过线性变换将高维数据投影到低维空间,同时保留数据的主要变化特征。
3.1 PCA计算步骤详解
给定2D数据点:(2,0), (0,1), (2,2)
3.1.1 计算均值向量
μ = [(2+0+2)/3, (0+1+2)/3] = [4/3, 1]
3.1.2 中心化数据
x₁ = (2-4/3, 0-1) = (2/3, -1)
x₂ = (0-4/3, 1-1) = (-4/3, 0)
x₃ = (2-4/3, 2-1) = (2/3, 1)
3.1.3 计算协方差矩阵
总体协方差矩阵(除以n):
Σ = (1/3) × Σ(xᵢxᵢᵀ)
计算各xᵢxᵢᵀ:
x₁x₁ᵀ = [4/9 -2/3]
[-2/3 1 ]
x₂x₂ᵀ = [16/9 0 ]
[0 0 ]
x₃x₃ᵀ = [4/9 2/3]
[2/3 1 ]
求和:
Σxᵢxᵢᵀ = [8/3 0]
[0 2]
协方差矩阵:
Σ = [8/9 0 ]
[0 2/3]
3.1.4 计算主成分
协方差矩阵已是对角矩阵,特征值为:
λ₁ = 8/9 ≈ 0.889
λ₂ = 2/3 ≈ 0.667
对应的特征向量(主成分方向):
w₁ = [1, 0]ᵀ (x轴方向)
w₂ = [0, 1]ᵀ (y轴方向)
3.1.5 计算方差贡献率
第一主成分贡献率:
ratio = λ₁/(λ₁+λ₂) = (8/9)/(8/9+2/3) = (8/9)/(14/9) = 8/14 ≈ 57.1%
3.2 PCA应用注意事项
- 数据标准化:当不同特征的量纲差异较大时,应先对数据进行标准化处理
- 主成分选择:通常选择累计贡献率达到80%-90%的前k个主成分
- 解释性:主成分是原始特征的线性组合,可能缺乏明确的业务含义
- 非线性关系:PCA只能捕捉线性关系,对于非线性结构可能需要使用核PCA或其他非线性降维方法
4. 二部图推荐算法解析
二部图(Bipartite Graph)是推荐系统中常用的数据结构,由两类不相交的顶点集合构成,边只连接不同集合的顶点。
4.1 问题描述
给定:
- 用户集合 U =
- 物品集合 I =
- 边关系:
u1-i1, u1-i2
u2-i2, u2-i3
u3-i1, u3-i3, u3-i4
4.2 构建邻接矩阵
用户-物品邻接矩阵B(3×4):
B = [1 1 0 0] # u1
[0 1 1 0] # u2
[1 0 1 1] # u3
4.3 计算物品共现矩阵
C = BᵀB
计算过程:
i1 = [1, 0, 1]ᵀ
i2 = [1, 1, 0]ᵀ
i3 = [0, 1, 1]ᵀ
i4 = [0, 0, 1]ᵀ
C = [i1·i1 i1·i2 i1·i3 i1·i4]
[i2·i1 i2·i2 i2·i3 i2·i4]
[i3·i1 i3·i2 i3·i3 i3·i4]
[i4·i1 i4·i2 i4·i3 i4·i4]
= [2 1 1 1]
[1 2 1 0]
[1 1 2 1]
[1 0 1 1]
4.4 基于二部图的推荐
为u2推荐新物品(u2已连接i2,i3,候选i1,i4)
使用两步路径数作为评分:
score(i1) = C(i1,i2) + C(i1,i3) = 1 + 1 = 2
score(i4) = C(i4,i2) + C(i4,i3) = 0 + 1 = 1
因此推荐i1(得分更高)
4.5 二部图推荐的扩展方法
-
基于随机游走的方法:
- Personalized PageRank(PPR)
- SimRank
- 可以捕捉多跳关系
-
基于矩阵分解的方法:
- 将邻接矩阵分解为用户和物品的隐因子
- 如SVD++, BPR等
-
基于图神经网络的方法:
- 使用GCN、GraphSAGE等模型学习节点表示
- 可以结合节点特征和拓扑结构
在实际应用中,二部图推荐的效果很大程度上依赖于图的构建质量。边的权重设计、节点特征的加入等都会影响最终推荐效果。
5. 关键概念对比与总结
5.1 SVD与PCA的关系
-
数学本质:
- PCA是对中心化数据的协方差矩阵进行特征分解
- SVD是对数据矩阵直接分解,不需要先计算协方差矩阵
-
实际应用:
- 对于中心化后的数据矩阵X,PCA的主成分方向就是X的SVD中V矩阵的列向量
- 在实践中常用SVD计算PCA,因为:
- 数值稳定性更好
- 可以处理高维稀疏矩阵
- 方便进行截断降维
-
计算复杂度:
- 对于n×d矩阵(n样本数,d特征数):
- 当n>d时,计算协方差矩阵(d×d)再做特征分解更高效
- 当d>n时,直接使用SVD更高效
- 对于n×d矩阵(n样本数,d特征数):
5.2 推荐系统算法对比
| 算法类型 | 核心思想 | 优点 | 缺点 |
|---|---|---|---|
| 协同过滤(CF) | 利用用户行为相似性进行推荐 | 不依赖物品内容信息;实现简单直观 | 数据稀疏性问题;冷启动问题 |
| 基于内容(CB) | 根据物品特征匹配用户偏好 | 对新物品友好;可解释性强 | 需要丰富物品特征;可能导致推荐同质化 |
| 矩阵分解(MF) | 将评分矩阵分解为用户和物品的隐因子 | 处理稀疏数据效果好;可扩展性强 | 训练成本高;解释性相对较弱 |
5.3 降维技术选择建议
- 当需要最大程度保留方差时:选择PCA
- 当处理非负数据时:考虑NMF(非负矩阵分解)
- 当数据具有非线性结构时:考虑t-SNE、UMAP等非线性方法
- 当处理文本等稀疏数据时:LSA(潜在语义分析)或截断SVD
- 当需要保留局部结构时:考虑LLE(局部线性嵌入)
在实际项目中,降维方法的选择应基于:
- 数据特性(线性/非线性,稀疏/稠密)
- 降维目标(可视化/特征提取/压缩)
- 计算资源限制
- 下游任务需求
