P paper2skillsPlaybook
AI 路线图 →

Ad Fraud IVT Detection — 行为图 + GNN 无效流量实时检测

Skill-Ad-Fraud-IVT-Detection · 19-风控反欺诈

causalexperimentmulti_agentfraud_detection广告与投放MAS与智能体工程风控与合规WF-B 广告优化WF-F 动态定价WF-I 智能体工程WF-K 全域风险防御WF-L 内容营销增长
年化 ROI30 万
实现难度⭐⭐⭐☆☆
业务优先级⭐⭐⭐⭐⭐
业务视角
适用角色运营负责人 / 合规负责人 · 品牌负责人 · CEO
适用平台Amazon 刷评检测与举报 · TikTok Shop 刷单识别 · 竞品 Listing 攻击溯源
什么情况下用竞品刷单刷好评,自己的 BSR 和评分被打压;账号/ASIN 被恶意投诉删除;店铺有异常订单不确定是真实买家
成功是什么样的识别过滤刷评/恶意竞争行为,账号风险提前预警,维权有数据证据,降低封号风险
业务痛点
竞品刷评打压我们我们的好评被恶意举报删除不知道差评是真实的还是恶意的如何证明竞品恶意行为

1. 解决的问题

母婴品牌 TikTok/Google 广告月均 30 万投放中 15-25% 为无效点击(Bot/竞品刷量),ROAS 被高估 30%——行为图 WTG + DGCNN 将 IVT 识别率提升至 95%+,年化节省无效广告支出 5-15 万元,并为平台申诉提供量化证据

2. 核心算法逻辑

核心思路:传统 IVT 检测依赖 IP 黑名单和 UserAgent 特征,Bot 可轻易伪造;BOTracle 转而对用户会话行为序列建图,捕捉"鼠标轨迹是否太规律、页面停留时间是否异常短、点击深度是否缺乏探索性"等难以伪造的行为模式。

3. 业务应用场景

场景A:TikTok Ads 竞品刷量识别 - 业务问题:母婴品牌(吸奶器/婴儿推车)TikTok 投流月均 30 万,点击后转化率异常低(< 0.3%),疑似竞品雇佣点击农场刷量消耗预算 - 数据要求:TikTok 广告点击日志(click_id, session_id, timestamp, page_sequence, dwell_time_ms, scroll_events) - 检测逻辑:会话中位停留 < 800ms、点击间隔 CV < 0.1、页面深度 ≤ 1 → 标记为 IVT - 预期产出:识别 IVT 率 15-25%,自动向平台提交无效点击申诉(部分平台支持退款) - 业务

**场景B:Google Ads 搜索欺诈保护** - 业务问题:婴儿湿巾/纸尿裤关键词竞价激烈(CPC $2-5),疑似竞品批量点击消耗日预算 - 数据要求:Google Ads 点击日志 + GA4 会话行为序列(page_path, session_duration, bounce, engagement_time) - 检测逻辑:构建用户访问图,计算图级聚类系数 + 度分布异常度,融合 Isolation Forest 打分 - 预期产出:每天屏蔽 200-500 个异常 IP 段,日均节省无效点击费 1,500-3,000 元 - 业务价值:年化节省 55-110 万元投放预算浪费,

4. 输入数据要求

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

5. 输出结果

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

6. 业务价值 / ROI

  • ROI 预估:月均 30 万广告预算中 15-25% 为 IVT(4.5-7.5 万元/月),年化节省 5-15 万元无效消耗;ROAS 真实值比平台报告值高 20-35%,指导预算重新分配
  • 额外价值:为 TikTok/Google 提交无效点击申诉提供量化证据,历史申诉成功率 40-70%,可额外追回 1-3 万元/月
  • 实施难度:⭐⭐⭐☆☆(需要广告点击日志访问权限,Bot 特征需周期性更新)
  • 优先级:⭐⭐⭐⭐⭐(直接影响广告投放 ROI,止损效果立竿见影)

7. 代码模板

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

"""
Ad Fraud IVT Detection — 行为图 + 统计异常检测
基于 BOTracle (arXiv:2412.02266) + GCD-GNN (arXiv:2407.17333) 核心思想
使用 numpy + collections,无需额外依赖
"""
import numpy as np
from collections import defaultdict
import random

random.seed(42)
np.random.seed(42)


# ─────────────────────────────────────────────
# 1. 数据生成:模拟广告点击会话(真实用户 vs Bot)
# ─────────────────────────────────────────────

def generate_session_data(n_sessions=100):
    """
    生成模拟广告点击会话数据
    返回:list of dict,每条为一个会话
    """
    sessions = []
    for i in range(n_sessions):
        is_bot = i < 30  # 前30条为Bot(30% IVT率)

        if is_bot:
            # Bot特征:均匀间隔、极短停留、浅页面深度
            n_clicks = random.randint(2, 4)
            intervals_ms = [random.uniform(80, 120) for _ in range(n_clicks - 1)]  # 过于规律
            dwell_times_ms = [random.uniform(50, 300) for _ in range(n_clicks)]      # 极短停留
            page_depth = random.randint(1, 2)
            scroll_events = random.randint(0, 2)  # 几乎不滚动
            engagement_score = random.uniform(0, 0.2)
        else:
            # 真实用户:随机间隔、正常停留、有探索行为
            n_clicks = random.randint(3, 12)
            intervals_ms = [random.uniform(500, 15000) for _ in range(n_clicks - 1)]
            dwell_times_ms = [random.uniform(800, 60000) for _ in range(n_clicks)]
            page_depth = random.randint(2, 8)
            scroll_events = random.randint(3, 30)
            engagement_score = random.uniform(0.3, 1.0)

        sessions.append({
            'session_id': f'sess_{i:04d}',
            'is_bot_truth': is_bot,
            'n_clicks': n_clicks,
            'intervals_ms': intervals_ms,
            'dwell_times_ms': dwell_times_ms,
            'page_depth': page_depth,
            'scroll_events': scroll_events,
            'engagement_score': engagement_score,
        })
    return sessions


# ─────────────────────────────────────────────
# 2. 行为特征提取(BOTracle 核心特征)
# ─────────────────────────────────────────────

8. 论文来源

  • 2407.17333
  • 2412.02266