P paper2skillsPlaybook
AI 路线图 →

Anomaly Detection Foundation Model — 异常检测基础模型:零样本时序异常感知

Skill-Anomaly-Detection-Foundation-Model · 19-风控反欺诈

causalexperimentforecastingrecommendationragmulti_agentdata_collectionfraud_detection广告与投放供应链与补货推荐与搜索知识图谱与RAG数据采集与治理MAS与智能体工程风控与合规WF-A 智能补货WF-B 广告优化WF-I 智能体工程WF-K 全域风险防御
年化 ROI¥20-60 万
实现难度⭐⭐⭐☆☆
业务视角
适用角色运营负责人 / 合规负责人 · 品牌负责人 · CEO
适用平台Amazon 刷评检测与举报 · TikTok Shop 刷单识别 · 竞品 Listing 攻击溯源
什么情况下用竞品刷单刷好评,自己的 BSR 和评分被打压;账号/ASIN 被恶意投诉删除;店铺有异常订单不确定是真实买家
成功是什么样的识别过滤刷评/恶意竞争行为,账号风险提前预警,维权有数据证据,降低封号风险
业务痛点
竞品刷评打压我们我们的好评被恶意举报删除不知道差评是真实的还是恶意的如何证明竞品恶意行为

1. 解决的问题

运营每天需手动检查35个SKU×8个指标共280个时序数据点是否异常——时序基础模型零样本异常检测1小时内自动发现全域异常按优先级排队处理,提前发现缺货/竞品攻击/点击欺诈年化挽回20-60万元

2. 核心算法逻辑

ChronosAD 的反直觉设计:

3. 业务应用场景

业务问题:运营团队每天需要手动检查 35 个 SKU × 8 个关键指标 = 280 个时序数据点是否异常。大促期间异常更多,根本看不过来,重要异常被淹没在数据海洋中。

数据要求: - 各 SKU 的日度指标序列(销量/ROAS/退货率/评论分/CTR) - 历史数据(越多越好,但最少 14 天即可)

预期产出: - 全域异常热力图:哪个 SKU × 哪个指标今天异常 - 异常优先级队列:按异常严重程度排序,运营只需处理 Top 5 - 异常类型分类:缺货/竞品/质量/欺诈(基于异常方向和幅度)

4. 输入数据要求

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

5. 输出结果

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

6. 业务价值 / ROI

  • ROI 预估
  • 异常发现时间:人工每日巡检(可能 24h 延迟)→ 自动 1h 内预警
  • 提前发现缺货/差评攻击/点击欺诈:每次挽回 ¥5-20 万
  • 减少运营人工巡检工作量:每人每天节省 2-3 小时,年化 ¥5-15 万
  • 年化综合 ROI:¥20-60 万
  • 实施难度:⭐⭐⭐☆☆(需要 Chronos/TimesFM 集成;多指标实时监控需要数据管道;约 3-4 周)

7. 代码模板

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

"""
Anomaly Detection Foundation Model (ChronosAD-style)
时序基础模型驱动的零样本异常检测
"""
import numpy as np
from scipy import stats


class FoundationAnomalyDetector:
    """
    ChronosAD 风格的异常检测器
    核心:用预测误差量化异常程度
    生产环境推荐: pip install chronos-forecasting 后替换预测模块
    """

    def __init__(self, context_len: int = 30, sensitivity: float = 2.5):
        self.context_len = context_len
        self.sensitivity = sensitivity  # 异常阈值(σ倍数)

    def _foundation_predict(self, history: np.ndarray, steps: int = 1) -> tuple:
        """
        模拟基础模型预测(生产替换为 ChronosPipeline.predict())
        返回 (预测中位数, 预测标准差)
        """
        if len(history) < 7:
            return history.mean(), history.std() + 1e-8

        # 简化预测:局部趋势 + 季节性
        recent = history[-min(14, len(history)):]
        trend = np.polyfit(range(len(recent)), recent, 1)[0]

        # 季节性(7天周期)
        if len(history) >= 14:
            weekly = np.array([history[i::7].mean() for i in range(7)])
            seasonal_factor = weekly[len(history) % 7] / (weekly.mean() + 1e-8)
        else:
            seasonal_factor = 1.0

        pred_mean = (recent[-1] + trend) * seasonal_factor
        # 不确定性:历史方差 + 预测步数(越远越不确定)
        pred_std = recent.std() * (1 + 0.1 * steps) + 1e-8

        return float(pred_mean), float(pred_std)

    def compute_anomaly_scores(self, timeseries: np.ndarray) -> np.ndarray:
        """
        计算每个时间点的异常分数
        使用滑动窗口:用历史预测当前值
        """
        n = len(timeseries)
        scores = np.zeros(n)

        for t in range(min(self.context_len, 7), n):
            history = timeseries[max(0, t - self.context_len):t]
            pred_mean, pred_std = self._foundation_predict(history)
            actual = timeseries[t]
            # 标准化异常分
            scores[t] = abs(actual - pred_mean) / pred_std

        return scores

8. 论文来源

  • 2606.01300