动机
部分观测的数据表包含两种信息:测得的数值,以及尚未测量的位置。矩阵补全利用行与列之间的关系,估计这些缺值。低秩模型用少量共同潜在因子描述关系;同一批因子连接已观测与未观测项,使表内不同位置的信息能够相互影响。
缺值分布与测量数量同样重要。三项观测可以确定一个小型秩一矩阵;换一种观测分布,则可能存在很多补全方式。以下先准确指定哪些观测进入损失,再用凸的奇异值惩罚鼓励较简单的拟合矩阵。算法结合观测残差的梯度步,以及作用于整个矩阵的奇异值软阈值。
定义
设 P∈Rn×d 存储可用数据,Ω⊆{1,…,n}×{1,…,d} 记录已观测位置。P 在 Ω 以外的数字只是存储选择,不是拟合目标。观测到的零仍是测量,属于 Ω。
定义
观测投影与矩阵范数
观测算子只保留已观测坐标:
(PΩX)ij={Xij,0,(i,j)∈Ω,(i,j)∈/Ω.PΩc=I−PΩ.同形矩阵的 Frobenius 内积与范数是 ⟨X,Y⟩F=∑ijXijYij、∥X∥F2=∑ijXij2。若 X 的奇异值为 σ1,…,σp,p=min(n,d),核范数定义为
∥X∥∗=j=1∑pσj,∥X∥F2=j=1∑pσj2.
两个范数描述奇异谱的不同方面。Frobenius 范数量度总平方大小,核范数则合计奇异值大小;秩计算的是正奇异值数量。核范数惩罚通过阈值步把部分奇异值变成零,无须直接搜索离散的秩。
观测几何与低秩因子
定理
观测掩码是正交投影
在 Frobenius 内积下,PΩ 自伴且幂等。特别地,
∥X∥F2=∥PΩX∥F2+∥PΩcX∥F2,∥PΩX∥F≤∥X∥F.
证明
投影到已测量坐标
⟨PΩX,Y⟩F 与 ⟨X,PΩY⟩F 均等于 ∑(i,j)∈ΩXijYij,所以算子自伴。同一掩码作用两次不变,所以幂等。已观测部分与未观测部分的非零位置不重叠,内积为零;勾股定理给出范数等式及不等式。
秩不超过 r 的模型可写成 X=LRT,其中 L∈Rn×r、R∈Rd×r。Xij 是 L 第 i 行与 R 第 j 行的内积。这些共同坐标让缺值依赖解释观测的同一批因子。直接搜索两组因子是非凸问题,因为它们相互相乘。
因子坐标本身并不唯一。任取可逆 Q∈Rr×r,把因子换成 LQ 和 RQ−T,乘积 LRT 不变。完整矩阵也可能无法由观测唯一确定。讨论恢复时,需要区分因子坐标自由与缺值是否唯一:低秩提供结构假设,观测分布仍须有足够联系。
例题
1. 确定的缺值与含糊的观测分布
设已知项构成
X=[23b6].秩一要求 detX=12−3b=0,所以唯一得到 b=4。完成矩阵可分解为 (2,3)T(1,2)。
若只观测两个对角项,则全部矩阵
Xt=[212/tt6],t=0,都是秩一且符合观测。例如 t=2 与 t=4 给出不同缺值。仅靠低秩无法选出真实数据表;正则化可以表达对拟合的偏好,却不会增加观测信息。
只计算观测项的损失
允许测量含噪声时,考虑
Φ(X)=f(X)+λ∥X∥∗,f(X)=21∥PΩ(X−P)∥F2,λ>0.
只有已测量残差进入 f。改写 P 未使用的项不改变目标。核范数作用于整个候选矩阵,用奇异方向连接各坐标。两项都凸,但不完整观测下,整体目标未必严格凸。
参数控制拟合与复杂度的权衡。较大参数更重视缩小奇异值,常会移除更多奇异方向;观测位置的拟合值也可偏离测量。精确测量可另建约束模型:在 PΩX=PΩP 下最小化 ∥X∥∗。本节推导的是上述惩罚模型,观测残差仍参与最优化。
核范数是凸矩阵范数。它也可写成:在谱范数不超过一的矩阵中,与 X 作内积的最大值。奇异值迹不等式把内积界于奇异值总和,对齐奇异方向即可达到上界;线性函数的最大值是凸函数。这把惩罚的凸性联系到以下同一套奇异向量几何。
奇异值软阈值
定义
对奇异值作软阈值
设 Y=Udiag(sj)VT、τ≥0,定义
SVTτ(Y)=Udiag((sj−τ)+)VT,(a)+=max(a,0).
定理
核范数的近端问题
对任意完整指定的矩阵 Y 及 τ≥0,
21∥X−Y∥F2+τ∥X∥∗的唯一最小化矩阵是 SVTτ(Y)。
证明
把矩阵问题化为逐个奇异值的阈值
设 X、Y 已排序奇异值分别为 tj、sj。von Neumann 迹不等式给出 ⟨X,Y⟩F≤∑jtjsj。展开平方距离,目标因此至少是
j∑[21(tj−sj)2+τtj],tj≥0.每项在 tj=(sj−τ)+ 最小;此运算保持排序。把 X 的奇异向量与 Y 对齐,迹不等式取等号,并同时达到全部标量最小值。平方距离严格凸,所以最小化矩阵唯一,即使奇异向量基未必唯一。
软阈值从每个正奇异值减去相同数量,把小于或等于阈值的奇异值设成零;秩截断则把选中的大奇异值原样保留。两者都可能产生较低秩矩阵,但解不同目标。遇到重复奇异值,数值 SVD 可换用该子空间的另一正交归一基;在整个子空间施加同一阈值,重建矩阵仍相同。
例题
2. 完整观测的阈值计算
取 Y=diag(3,1)、τ=1/2。奇异方向为坐标轴,解是 X=diag(5/2,1/2)。平方距离项为 21(1/4+1/4)=1/4,惩罚为 21(5/2+1/2)=3/2,目标总值是 7/4。保持 Y 不变则得到 2,所以精确符合数据并非此惩罚问题的最小值;两个观测奇异值都被缩小。
带掩码的近端梯度步
观测损失的梯度为
∇f(X)=PΩ(X−P),∥∇f(X)−∇f(Y)∥F≤∥X−Y∥F.
不等式来自投影定理,所以梯度的 Lipschitz 常数可取一。步长 0<η≤1 给出
X+=SVTηλ(X−ηPΩ(X−P)).
单位步长时,化为
X+=SVTλ(PΩP+PΩcX).
梯度步的中间矩阵在观测处采用测量,其余保留当前估计,然后对整个矩阵施加阈值。结果可以改变观测项并填入缺值,符合残差与核范数的权衡。缺值估计会留到下一个中间矩阵,影响下一次 SVD,而不是每步都被视为测得的零。
为证明步长合理,对增量 D 展开二次损失:
f(X+D)=f(X)+⟨∇f(X),D⟩F+21∥PΩD∥F2≤f(X)+⟨∇f(X),D⟩F+21∥D∥F2.
加上核范数后,得到在 X 处等于 Φ 的二次上界模型。由近端定理,其最小值正是单位步更新,所以更新不增加 Φ。较小步长把二次项系数换成 1/(2η),仍是有效上界。步长限制直接来自掩码的范数。
惩罚大小与零解的精确判据
令 Y=PΩP,用 ∥Y∥2 表示其最大奇异值。迹不等式给出
Φ(X)−Φ(0)=21∥PΩX∥F2−⟨Y,X⟩F+λ∥X∥∗≥21∥PΩX∥F2+(λ−∥Y∥2)∥X∥∗.
因此,参数至少等于此最大奇异值时,零矩阵是全局最小值。这精确解释了为什么迭代会移除全部奇异方向:模型对矩阵大小所收取的代价,已超过任何观测拟合改善。这个尺度来自已观测表及其掩码,不依赖想象中的完整矩阵。比较一系列参数时,它提供明确端点;逐步减小参数,才允许更显著的拟合结构。
不动点证明什么
非光滑惩罚目标的最优条件不只看梯度。核范数在 X 的次梯度 G,意指对所有 Z 都有 ∥Z∥∗≥∥X∥∗+⟨G,Z−X⟩F。单位步更新满足
λX−X+−∇f(X)∈∂∥X+∥∗.
若更新返回相同矩阵,这条支撑不等式就把观测梯度与惩罚平衡。加上凸函数 f 的一阶不等式,即证明任意候选的目标均不小于当前值;不动点是指定凸目标的全局最小值。此时观测残差仍可非零,因为其梯度由核范数次梯度平衡。
所以,除了目标值,也可检查近端更新的大小。变化很小度量的是整个惩罚问题的近似驻定性,不要求观测梯度本身为零,也不等于已经核对缺值的预测准确度。
例题
3. 一次迭代填入缺值
沿用首例的三项观测,存储 P=[2306],取 X0=0、λ=1。右上缺值不在 Ω 中。中间矩阵 Y=P 的奇异值为 (73+5)/2、(73−5)/2,两者均大于一。其正交极分解因子为
UVT=731[83−38],X1=[2−8/733−3/733/736−8/73].缺值由存储的零变成约 0.351123,观测项也移动。目标从 49/2=24.5 降至 73−2+137/146≈7.482360。精确秩一补全的缺值为 4;首次惩罚迭代给出的是拟合与惩罚准则下的中间估计。
可执行计算
布尔掩码独立记录观测状态。以下实现使用单位步长,以及刚推导的目标。
import numpy as np
observed = np.array([[True, False], [True, True]])
P = np.array([[2., 0.], [3., 6.]])
lam = 1.
def svt(Y, threshold):
U, s, Vt = np.linalg.svd(Y, full_matrices=False)
return (U * np.maximum(s - threshold, 0.)) @ Vt
def objective(X):
residual = np.where(observed, X - P, 0.)
return 0.5 * np.sum(residual**2) + lam * np.linalg.svd(
X, compute_uv=False
).sum()
X = np.zeros_like(P)
first = svt(P, lam)
history = [objective(X)]
for _ in range(100):
gradient = np.where(observed, X - P, 0.)
X = svt(X - gradient, lam)
history.append(objective(X))
assert np.all(np.diff(history) <= 1e-10)
print(np.round(first, 6))
print(round(history[0], 6), round(history[-1], 6))
首个输出矩阵约为 [1.0636712.6488770.3511235.063671];目标值输出为 24.5 和约 7.073338。固定迭代次数使例子可重现。较大型应用可同时记录目标与迭代变化量,决定何时停止;未提供数值的位置,其预测准确度需要额外验证数据。
参数尺度与拟合评估
参数数值受数据及损失的尺度影响。把测量乘以正常数 c 时,也把参数乘以同一常数;候选矩阵同样缩放后,残差项与惩罚都乘以 c2,全部候选目标的排序不变。这说明更换测量单位后等价模型怎样变化,而不是给某个参数数值一个绝对意义。
若把观测平方损失总和改成均值,要同时把惩罚系数除以观测数量,才得到相同最优解。只平均损失却保留原系数,会提高惩罚的相对影响。比较不同实现或观测数量不同的数据表前,先说明损失的归一化方式。
评估预测时,可留出部分真正测得的项作验证,用其余项建立拟合掩码。梯度步不使用验证位置,再用预测值与留出测量比较,就度量未参与拟合的观测之预测表现。这也改变了拟合的观测分布,因此划分时要保留模型所需的行列信息。最优化诊断检查是否已最小化选定目标,预测诊断则评估估计值是否有用。
常见错误
常见错误
用数值是否为零判断观测状态
观测零也产生平方残差。缺值则不产生残差,与存储的数字无关。掩码必须由观测状态建立。更新顺序也按推导:先作梯度步的中间矩阵,再作奇异值软阈值,才能对应指定的惩罚目标与步长论证。
总结
观测算子是正交投影,决定损失和梯度。低秩结构连接缺值,可辨识性则取决于测量位置。核范数给出凸奇异值惩罚,其近端映射是奇异值软阈值。把它与观测梯度结合,就得到可由二次上界直接解释单位步长的算法。
练习
思考检查
1. 秩不超过一的表已观测 X11=0、X21=2、X22=4。求缺值 X12,并解释观测零为什么属于掩码。
思考检查
2. 完整观测 Y=diag(5,2),惩罚参数 τ=3。求核范数近端解、其秩及最小目标值。
思考检查
3. 在掩码例子中,把惩罚改为 λ=7 并从零开始。首次近端梯度更新是什么?此目标是否强制精确符合三项观测?
解答
解答 · 1. 零测量也提供信息
行列式为 0⋅4−2X12,所以秩不超过一要求 X12=0。第二行非零,完成矩阵秩为一。若漏掉 X11=0,就移除了一条实际方程,允许其他秩一补全。数值为零不等于缺失。
解答 · 2. 缩小奇异值
解为 diag(2,0),秩一。平方距离项为 21(32+22)=13/2,惩罚为 3⋅2=6,最小目标值是 25/2=12.5。
解答 · 3. 首步移除全部奇异值
中间矩阵的最大奇异值为 (73+5)/2<7,阈值七给出零矩阵。模型对观测残差施加惩罚,允许拟合与测量不同;观测相等并非其约束。
相关笔记