01学完这一课,你能做到什么
学完这一课,你应该能:
- 检查矩阵乘法的维度,并用低秩矩阵表达主要结构;
- 区分“未知数据”和“已知的 0”,只在真正观察到的答案上计算损失;
- 解释 L1、L2 正则和交替最小二乘 ALS 在做什么;
- 读懂 SVD 的三个矩阵、奇异值和截断重构;
- 把矩阵分解迁移到金融数据时,先定义行、列、单元格和验证方式。
这节课的核心不是背一个分解公式,而是知道:模型保留了什么、丢掉了什么,以及这个结果能不能支持你的下一步判断。
一句话记住低维表示是压缩,不是自动解释。
02为什么要用少数维度表示大矩阵
股票与、用户与电影、像素与位置,都可以整理成矩阵。矩阵很大时,逐格观察很难发现共同结构。低秩近似的想法是:用少数几个潜在维度,表达数据里最主要的变化,同时接受一部分重构误差。
“低秩”可以先理解为“真正起作用的方向比表格的行列数少”。它可以用于推荐、图像表达、金融风险分析,也常出现在模型参数压缩中。但这些场景共享的是低维表达思想,不代表使用同一个算法。
例如,LoRA 通常学习一个低秩的权重更新分支,不等于把原模型权重直接做一次 SVD。常见图片压缩也不能一概说成 SVD。所谓“只用很少数据还原大部分信息”是帮助理解的比喻,不是对任意数据的保证。
一句话记住压缩保留主要结构,也会舍弃细节。
03用户—电影矩阵:未知不等于不喜欢
假设 R 有 12 个用户、9 部电影,共有 12×9=108 个格子。某个用户给《红海行动》和《战狼2》点赞,其他电影没有记录。这里的空白表示未知,不是“不喜欢”。
把 R 近似写成 P×Q:
- P 是 12×3,表示每个用户在 3 个潜在维度上的表示;
- Q 是 3×9,表示每部电影在同一套 3 维空间里的表示;
- P×Q 的结果仍是 12×9,可以为每个用户—电影组合给出预测分。
存储的数字量从 108 个变成 12×3+3×9=63 个,实际系统还要保存索引和其他元数据。3 个维度可以用动作、动画、爱情来帮助理解,但模型自动学出的维度不一定真的叫这些名字,也不要求类别互斥。
潜在向量里的数值可以为负。例如某个分量是 0.93、−0.08、0.07,它不是概率,也不是三个比例。只有和另一侧的表示一起相乘,才有完整含义。
重构后,原来已知的点赞值 1 可能变成 0.92 或 0.94,这说明模型有近似误差。把空白格填满,是模型的推断,不是用户真实反馈。新用户、新电影和兴趣变化,都可能让推荐失准。
- 1已观察反馈只记录真实发生的交互
- 2低维表示P 与 Q
- 3矩阵相乘得到预测分
- 4排序推荐仍需验证效果
一句话记住空白格是未知,不能直接当作 0。
04只在已观察数据上计算损失
设 Ω 表示已经观察到的用户—电影组合。一个带 L2 正则的目标函数可以写成:
L = Σ_(u,i∈Ω)(R_ui−p_uᵀq_i)² + λ(Σ_u‖p_u‖² + Σ_i‖q_i‖²)
前半部分比较已知反馈和模型预测。未观察的位置没有真实答案,所以不能直接拿它和 0 比较。某些隐式反馈模型会给未观察行为较低置信度,但那必须是另一个明确写出的建模选择。
平方误差求和是 SSE。若再除以样本数,才是 MSE。两者的数值和解读不同,报告里要写清口径。
L2 正则惩罚参数过大;L1 正则则使用参数绝对值之和。假设两套模型对已知评分拟合得一样,一套用了特别大的参数,另一套参数更克制,正则项会更偏向后一套。λ 太小可能,太大可能欠拟合,应该用验证数据选择。
L1 更容易产生稀疏解,但不代表一定更好。正则化是在拟合数据和控制复杂度之间做取舍。
解释已知答案
比较观察到的 R_ui 与 p_uᵀq_i。
控制模型复杂度
惩罚过大的 P、Q 参数。
一句话记住损失只比较已知答案,正则用来控制复杂度。
05ALS:固定一边,再优化另一边
P 和 Q 同时优化不容易。ALS(交替最小二乘)先固定 Q,求每个用户向量 p_u;再固定 P,求每个电影向量 q_i;如此交替进行。
基本流程是:
- 初始化两个较小的矩阵 P 和 Q;
- 固定 Q,优化 P;
- 固定 P,优化 Q;
- 重复,直到损失改善很小,或达到预先设定的次数上限。
固定 Q 后,用户向量可以放进一个带正则的最小二乘问题。设 Q_Ω 是该用户实际看过的电影向量,r_u 是对应反馈,可以写成:
(Q_ΩQ_Ωᵀ+λI)p_u = Q_Ωr_u
比如潜在维度为 3,Q_Ω 有 3 行,那么 Q_ΩQ_Ωᵀ 是 3×3,p_u 也是 3 维,等式两边的维度才能对上。实际计算通常是解线性方程,不是直接求矩阵逆。
固定一侧后的二次子问题,可以通过令梯度为 0 求解;这不等于整个非凸交替问题一定找到唯一的全局最优。初始化、秩和正则强度都会影响结果。梯度下降则沿着损失下降方向更新参数,不能笼统断言 ALS 或梯度下降永远更快。
- 1初始化 P、Q设定潜在维度
- 2固定 Q求 P
- 3固定 P求 Q
- 4检查损失继续或停止
一句话记住固定一边,另一边就变成较容易的最小二乘问题。
矩阵分解参数探索
调节保留维度 k,观察重构误差和信息保留比例。
调整保留维度 k,观察重构误差和信息保留比例
奇异值能量比例为教学样本设定,用来演示截断重构的取舍。
06SVD:把完整矩阵拆成三个部分
对一个 m×n 的完整矩阵 A,SVD 写成:
A = UΣVᵀ
Σ 对角线上是非负奇异值,并按 σ₁≥σ₂≥… 排序;U 和 V 包含左右奇异向量。奇异值不是一般意义上矩阵 A 的特征值,二者不能混称。
也可以写成秩一矩阵的叠加:
A = Σ_j σ_j u_jv_jᵀ
保留前 k 项,就得到低秩近似 A_k。奇异值越大,代表这个方向对矩阵的能量贡献通常越大,但它不自动代表更高收益、更强预测力或更好的交易机会。
SVD 和稀疏反馈的矩阵分解要区分:标准 SVD 面向已经给定数值的完整矩阵;不能把缺失反馈随手填成 0,再把它当成真实数据交给 SVD。ALS 可以围绕已观察项和正则化目标建模,问题设置不同。
A = UΣVᵀ = Σⱼ σⱼuⱼvⱼᵀ
前 k 个秩一分量组成截断重构。
一句话记住奇异值排序表达能量,不自动表达经济意义。
07用图像理解截断重构
把一张 1440×1080 的灰度图看成矩阵,每个像素值在 0 到 255 之间。矩阵最多有 1080 个奇异分量。保留 k=5、50、500 个分量时,通常会从粗结构逐步恢复到更多细节,但具体视觉差异取决于图像。
k=50 时,需要保存 U 的前 50 列、50 个奇异值和 Vᵀ 的前 50 行,数字数量是:
- U:1440×50;
- Σ:50;
- Vᵀ:50×1080;
- 合计:1440×50+50+50×1080=126050。
原始像素数是 1440×1080=1555200,所以数字数量约为 8.1%。这不等于最终图片文件一定只有原来的 8.1%,因为数据类型、编码和文件格式也会影响文件大小。
可以用能量比例选择 k:
保留能量比例 = Σ_(j≤k)σ_j² ÷ Σ_jσ_j²
能量比例高,说明样本矩阵的重构变化保留得多;细小但重要的内容仍可能落在较弱分量里。
更省存储
主要轮廓还在,细节和局部变化更容易丢失。
误差更小
重构更接近原矩阵,但存储和计算成本更高。
一句话记住数字数量变少,不等于文件大小按同样比例变小。
08迁移到金融数据,先定义矩阵
金融应用的第一步不是急着分解,而是把矩阵定义清楚:
- 行可以是股票,列可以是交易日,单元格是日收益;
- 行也可以是股票,列是因子,单元格是因子暴露;
- 还可以让行是样本、列是特征。
同样是“降到 3 维”,不同的行列定义会得到完全不同的含义。低维方向通常是原变量的组合,不代表自动找到了三项原来的指标。
动手时,可以先构造一个 12×9 的部分已知评分表,记录掩码 Ω,验证 P(12×3)和 Q(3×9)相乘后仍是 12×9。留出一部分已观察评分比较训练误差和验证误差,确认未知值没有被当成 0。
再对一个完整小矩阵做 SVD,分别保留 1、2 和全部分量,检查重构形状、奇异值顺序、重构误差和能量比例。k 越大,训练重构通常越准,但不代表对未来数据的预测一定更好。
把结果迁移到股票收益、因子或图片时,都要记录数据定义、缺失处理、参数 k、验证切分和误差口径。
一句话记住先写清矩阵含义,再谈分解结果。
4 道小题
全部答对,这一课就算真正读懂了。答错了会告诉你为什么。
这一课,浓缩成一张卡
学完可以保存或分享给朋友。保存成图片的功能会在下一版加上。
它能压缩共同结构,却不能自动把低维方向变成真实因子或交易信号。
- 未知不等于0
- ALS固定一侧优化
- SVD能量不等于收益
记住这 5 句话
- 01低秩近似用少数潜在维度表达主要结构,但会舍弃部分细节,不能把低维方向自动命名为经济因子。
- 02推荐矩阵里的空白通常是未知,不是 0;损失应先限定在已观察集合 Ω 上。
- 03L2 控制参数大小,L1 更容易得到稀疏解;λ 需要用验证数据选择,过大或过小都可能有问题。
- 04ALS 交替固定一侧求另一侧;SVD 则把完整矩阵拆为 U、Σ、Vᵀ,并可用前 k 项做截断重构。
- 05金融应用必须先定义矩阵、缺失和验证口径;保留方差或重构更好,不等于未来预测或交易更好。
完成这一课
读完讲义、动手做一次实验、答对小题,这一课就算学完了。
- 读完讲义
- 完成一次矩阵分解参数探索
- 通过随堂自测
实验数据AI+金融投资训练营教学样本。固定教学样本
固定教学样本只用于解释量化研究方法,不代表任何真实标的未来表现,也不构成投资建议。