paper2skills Playbook

不确定性感知矩阵补全 - 补全值带置信区间的页面转移矩阵恢复

Skill-Utimac-Uncertainty-Completion · 14-用户分析

causalexperimentforecastingoptimization广告与投放WF-B 广告优化WF-H 复购增长
年化 ROI5-20 万
实现难度⭐⭐⭐☆☆
业务优先级⭐⭐⭐⭐☆
业务视角
适用角色运营负责人 / 用户增长负责人 · CMO · 产品经理
适用平台Amazon 买家分层 · DTC 站 LTV 预测 · Klaviyo/Brevo 邮件分群
什么情况下用有大量老客户,但不知道谁是高价值客户、谁快要流失;新客获取成本越来越高,老客复购却上不去
成功是什么样的用户按 RFM/LTV 分层精准触达,高价值用户留存率提升,老客贡献收入占比从 30% 提升到 50%
业务痛点
老客复购率上不去不知道哪些用户要流失了所有用户用同一套活动买过一次就不见了

1. 解决的问题

Utimac 的核心洞察是:不直接补全矩阵条目,而是推断数据生成过程的参数(Estimate the Process, Not the Entries)。

2. 核心算法逻辑

Utimac 的核心洞察是:不直接补全矩阵条目,而是推断数据生成过程的参数(Estimate the Process, Not the Entries)。

3. 业务应用场景

业务问题:跨境电商平台(如独立站)的用户行为分析依赖页面转移矩阵——HOME 页流向哪里?PDP 页流失到哪里?但由于用户路径稀疏(每个session仅3-8次点击),加之数据收集丢失(广告拦截器、延迟等),实际观测到的转移矩阵往往只有 30%-60% 填充率。

现有矩阵补全方法(如低秩补全)给出的是点估计:HOME→CHECKOUT 转移概率 = 12%,但无法回答「这个 12% 可信吗?」。

Utimac 的价值:输出 12% ± 区间,例如: - 区间窄(95% CI: [10%, 14%]):数据充分,可信,基于此优化 HOME 页 CTA 按钮 - 区间宽(95% CI: [3%, 21%]):数据不足,不可信,告诉决策者「暂不基于此做预算调整,先补充数据」

4. 输入数据要求

请查看原始代码模板获取输入规格。

5. 输出结果

请查看原始代码模板获取输出规格。

6. 业务价值 / ROI

5-20 万

7. 代码模板

代码块数量:2 · 路径:未检测到

"""
Utimac: Uncertainty-Aware Matrix Completion
基于 arXiv:2605.02225 的实现

适用场景:稀疏页面转移矩阵补全,输出每个补全值的 95% 置信区间

用法示例:
    python utimac.py  # 运行内置示例(母婴电商转移矩阵)
"""

import numpy as np
from scipy.linalg import solve, cho_factor, cho_solve
from scipy.stats import norm as scipy_norm
from typing import List, Tuple, Optional
import warnings

warnings.filterwarnings("ignore", category=RuntimeWarning)


# ─── 软阈值算子(偏差更新核心)────────────────────────────────────────────────

def soft_threshold(x: np.ndarray, threshold: float) -> np.ndarray:
    """逐元素软阈值:sign(x) * max(|x| - threshold, 0)"""
    return np.sign(x) * np.maximum(np.abs(x) - threshold, 0.0)


def update_deviation(
    z_obs: np.ndarray,       # 观测 log 域子向量 (|Ω|,)
    mu_obs: np.ndarray,      # 均值子向量 (|Ω|,)
    sigma_obs: np.ndarray,   # 协方差子矩阵 (|Ω|, |Ω|)
    lam: float,              # 稀疏度参数
    max_iter: int = 100,
    tol: float = 1e-6
) -> np.ndarray:
    """
    求解偏差更新:argmin ½(o-r)ᵀ Q(o-r) + λ‖o‖₁
    使用坐标下降(对角近似时退化为软阈值)

    当 Σ 接近对角矩阵时,使用封闭式软阈值;
    否则使用 ADMM 风格的坐标下降
    """
    r = z_obs - mu_obs
    d = len(r)

    # 尝试 Cholesky 分解判断正定性
    try:
        cho = cho_factor(sigma_obs, lower=False)
        Q = np.linalg.inv(sigma_obs)  # 精度矩阵
    except np.linalg.LinAlgError:
        # 添加微小对角扰动保证正定
        sigma_obs = sigma_obs + 1e-6 * np.eye(d)
        Q = np.linalg.inv(sigma_obs)

    # 检查是否接近对角(对角近似加速)
    off_diag_ratio = (
        np.sum(np.abs(Q - np.diag(np.diag(Q)))) /
        (np.sum(np.abs(Q)) + 1e-10)
    )

    if off_diag_ratio < 0.01:

8. 论文来源

  • 2605.02225