P paper2skillsPlaybook
AI 路线图 →

Purchase Intent Prediction — 买家购买意图预测:从行为序列到转化概率

Skill-Purchase-Intent-Prediction · 14-用户分析

causalexperimentforecastingrecommendationpricing广告与投放客服与VOC推荐与搜索定价与利润WF-B 广告优化WF-C 客服分诊WF-D 选品扫描WF-F 动态定价WF-H 复购增长WF-I 智能体工程WF-J DTC 独立站增长
年化 ROI¥30-80 万
实现难度⭐⭐⭐☆☆
业务视角
适用角色运营负责人 / 用户增长负责人 · CMO · 产品经理
适用平台Amazon 买家分层 · DTC 站 LTV 预测 · Klaviyo/Brevo 邮件分群
什么情况下用有大量老客户,但不知道谁是高价值客户、谁快要流失;新客获取成本越来越高,老客复购却上不去
成功是什么样的用户按 RFM/LTV 分层精准触达,高价值用户留存率提升,老客贡献收入占比从 30% 提升到 50%
业务痛点
老客复购率上不去不知道哪些用户要流失了所有用户用同一套活动买过一次就不见了

1. 解决的问题

独立站每月800个弃购用户全部发同一封挽回邮件点击率仅4%——买家意图预测只对高意图用户(P>0.7)精准触达CVR从4%提升到12-18%,年化GMV增益30-80万元同时降低低意图用户退订率

2. 核心算法逻辑

购买意图(Purchase Intent)≠ 购买兴趣(Purchase Interest):

3. 业务应用场景

业务问题:独立站每月约 800 个用户加购后未付款,平均客单价 $149。传统做法是给所有弃购用户发同一封挽回邮件,点击率仅 4%。实际上 70% 的弃购用户已经离开决策窗口,只有 30% 还在"考虑购买"阶段。

数据要求: - 用户行为序列(浏览/加购/结账/购买的时间戳) - 用户历史购买记录(频率/客单价/品类偏好) - 当前 session 行为(近 24 小时)

预期产出: - 每个弃购用户的购买意图评分(0-1) - 高意图用户名单(P > 0.7):24h 内发挽回邮件 - 中意图用户名单(0.4-0.7):3 天内发限时优惠 - 低意图用户(< 0.4):不触达(降低退订率)

4. 输入数据要求

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

5. 输出结果

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

6. 业务价值 / ROI

  • ROI 预估
  • 弃购挽回精准化(只触达高意图用户):CVR 从 4% → 12-18%,月增收 ¥8-25 万
  • DSP 再营销出价优化:ROAS 提升 20-35%,月节省无效广告 ¥3-10 万
  • 减少低意图用户骚扰:退订率降低,长期邮件健康度提升
  • 年化综合 ROI:¥30-80 万
  • 实施难度:⭐⭐⭐☆☆(需要用户行为埋点基础设施;规则加权版 2 周,ML 版本约 4 周)

7. 代码模板

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

"""
Purchase Intent Prediction
CATS 框架:聚类聚合 + 时序建模的买家意图预测
"""
import numpy as np
from collections import defaultdict
from dataclasses import dataclass


# 行为权重(意图信号强度)
BEHAVIOR_WEIGHTS = {
    'view_product':    0.05,
    'view_detail':     0.10,
    'search_price':    0.15,
    'compare':         0.20,
    'add_wishlist':    0.25,
    'add_cart':        0.50,
    'start_checkout':  0.80,
    'return_checkout': 0.90,
    'purchase':        1.00,
}


@dataclass
class UserSession:
    user_id: str
    events: list   # [{'action': str, 'timestamp': float, 'price': float}]
    history_purchases: int = 0
    days_since_last_purchase: float = 30.0


def compute_intent_timeseries(events: list, window_days: int = 7) -> np.ndarray:
    """计算用户近期行为的意图时序(每日意图强度)"""
    if not events:
        return np.zeros(window_days)

    now = max(e['timestamp'] for e in events)
    daily_intent = np.zeros(window_days)

    for event in events:
        days_ago = (now - event['timestamp']) / 86400  # 秒转天
        if days_ago < window_days:
            day_idx = min(int(days_ago), window_days - 1)
            weight = BEHAVIOR_WEIGHTS.get(event.get('action', 'view_product'), 0.05)
            daily_intent[window_days - 1 - day_idx] += weight

    # 归一化
    max_val = max(daily_intent.max(), 1e-8)
    return daily_intent / max_val


def cluster_user_style(history_purchases: int, days_since_last: float,
                       avg_session_events: float) -> str:
    """用户购买风格聚类(简化版)"""
    if history_purchases >= 5 and days_since_last < 30:
        return 'loyal_active'      # 忠诚活跃用户:高频购买
    elif history_purchases >= 2 and avg_session_events > 8:
        return 'deliberate'        # 谨慎型:行为多但购买频率适中
    elif history_purchases == 0 and avg_session_events > 5:
        return 'new_high_intent'   # 新用户高意图

8. 论文来源

  • 2505.13558