P paper2skillsPlaybook
AI 路线图 →

图因果预测GCF — 时空GNN+Synthetic Control估计Listing删除的隐性需求

Skill-GCF-Counterfactual-Unobserved-Demand · 24-标签工程

causalexperimentforecastingoptimizationrecommendationpricing广告与投放供应链与补货推荐与搜索定价与利润WF-A 智能补货WF-B 广告优化WF-F 动态定价WF-G Listing内容优化
年化 ROI5-15 万元
实现难度⭐⭐⭐☆☆
业务优先级⭐⭐⭐⭐☆
业务视角
适用角色数据架构师 / 供应链数字化负责人 · CTO · 数据工程师 · 供应链团队
什么情况下用多平台数据孤岛导致断货识别延迟8小时;标签覆盖率不足使AI决策触发率<30%;想实现分析→行动自动闭环但不知从何下手
成功是什么样的统一 Tag Schema + 传播引擎将标签覆盖率从 30% 提升至 97%;Palantir 风格 Object-Action-Writeback 将补货响应从 2 天缩短至 4 小时自动触发
业务痛点
多平台 SKU 编码混乱无法统一合规标签手工维护遗漏频繁预测模型有了但结果无法自动触发采购标签打了但没有质量监控

1. 解决的问题

Listing断货/广告暂停期间观测销量为0导致预测系统性低估备货量——GCF时空GNN+合成控制估计真实需求,MAPE降低75.3%,备货推荐准确率提升61.2%

2. 核心算法逻辑

核心问题:跨境电商存在大量"观测不到的需求"——Listing 被封号、商品搜索被屏蔽、竞品打压导致流量消失——此时记录到的销量是 0,但真实需求并非 0。传统预测模型只能学习"已观测的销量",会系统性低估备货需求。

3. 业务应用场景

吸奶器旗舰 ASIN 因入库超限导致 FBA 断货 3 周,期间销量记录为 0。备货决策时系统预测"日均 5 件"(被历史0值污染),但真实日均需求约 25 件。

GCF 通过同类产品合成控制,估计断货期真实需求为日均 23 件,备货量提升 4.6 倍,避免断货后恢复期的 GMV 损失。

数据要求:目标 SKU 历史销量(含断货期)、同品类对照 SKU 销量、品类相似度特征 预期产出:断货期反事实需求曲线 + 修正后的预测区间 + 建议备货量 业务价值:备货量准确率提升 61.2%,减少因历史0值污染导致的系统性低估,年化防损 5-15 万元

4. 输入数据要求

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

5. 输出结果

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

6. 业务价值 / ROI

  • ROI 预估:MAPE 降低 75.3%(AAAI 2025 验证),备货量推荐准确率↑61.2%,年化减少因历史0值污染导致的系统性低估损失 5-15 万元
  • 实施难度:⭐⭐⭐☆☆(主要是数据处理 + scipy 优化,无复杂 DL 依赖)
  • 优先级:⭐⭐⭐⭐☆(Listing 断货是跨境电商常态,此方法论独特价值高)
  • 企业AI知识库依赖:中 — 需要同品类对照 SKU 历史数据 + 干预事件记录

7. 代码模板

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

import numpy as np
import pandas as pd
from typing import List, Optional, Dict, Tuple
from scipy.optimize import minimize
from dataclasses import dataclass

@dataclass
class GCFConfig:
    """GCF 模型配置"""
    n_control_units: int = 10       # 对照 SKU 数量
    pre_period_weight: float = 0.7  # 拟合前期权重
    similarity_threshold: float = 0.3  # 最低相似度阈值
    min_obs: int = 30               # 最少历史观测期数

class SyntheticControlSC:
    """
    供应链 Synthetic Control 反事实需求估计
    
    适用场景:
    - FBA 断货期需求估计
    - Listing 屏蔽期隐性需求
    - 竞品干扰导致的流量损失量化
    """
    
    def __init__(self, config: GCFConfig = None):
        self.config = config or GCFConfig()
        self.weights_: Optional[np.ndarray] = None
        self.control_units_: Optional[List[str]] = None
        self.pre_period_end_: Optional[int] = None
    
    def _compute_sku_similarity(self, target: pd.Series,
                                donors: pd.DataFrame,
                                pre_period_end: int) -> np.ndarray:
        """计算目标SKU与对照SKU的相似度(基于预干预期销量模式)"""
        target_pre = target.values[:pre_period_end]
        similarities = []
        for col in donors.columns:
            donor_pre = donors[col].values[:pre_period_end]
            # 归一化后的 cosine 相似度
            if np.std(target_pre) > 0 and np.std(donor_pre) > 0:
                corr = np.corrcoef(target_pre, donor_pre)[0, 1]
                sim = (corr + 1) / 2  # 映射到 [0, 1]
            else:
                sim = 0.0
            similarities.append(max(0, sim))
        return np.array(similarities)
    
    def fit(self, target: pd.Series, donors: pd.DataFrame,
            intervention_start: int) -> 'SyntheticControlSC':
        """
        拟合合成控制模型
        
        Args:
            target: 目标 SKU 销量时序(含干预期)
            donors: 对照 SKU 矩阵(列=SKU,行=时期)
            intervention_start: 干预开始的时期索引(如断货第一天)
        """
        self.pre_period_end_ = intervention_start
        T_pre = intervention_start
        

8. 论文来源

未自动抽取;请查看原始 Skill 卡片。