paper2skills Playbook

Marketing-Driven Recommendation — 营销活动驱动的推荐系统:Promotion-Aware 个性化协同优化

Skill-Marketing-Driven-Recommendation · 05-推荐系统

causalexperimentforecastingoptimizationrecommendationdata_collectionpricing广告与投放供应链与补货推荐与搜索数据采集与治理定价与利润WF-A 智能补货WF-B 广告优化WF-D 选品扫描WF-F 动态定价WF-H 复购增长
实现难度⭐⭐⭐⭐☆
业务视角
适用角色运营负责人 / 选品负责人 · 产品经理 · 广告优化师
适用平台Amazon · DTC 独立站 · 邮件/SMS 个性化
什么情况下用老客来了只买一件就走,相关产品没被推出去;Bundle 商品连带销售做不起来;站内推荐位点击率低
成功是什么样的老客连带购买率提升 20-35%,客单价提升,品类交叉销售做起来
业务痛点
老客复购率上不去相关产品没有被看到Bundle 凑单没人用新品没有曝光机会

1. 解决的问题

传统推荐系统的目标是最大化用户相关性(CTR/CVR),营销系统的目标是最大化 GMV 和促销 ROI。这两个目标通常分开优化,导致推荐了用户喜欢但不需要促销的商品(浪费预算),或促销了高利润商品但对用户不相关(浪费曝光)。

2. 核心算法逻辑

传统推荐系统的目标是最大化用户相关性(CTR/CVR),营销系统的目标是最大化 GMV 和促销 ROI。这两个目标通常分开优化,导致推荐了用户喜欢但不需要促销的商品(浪费预算),或促销了高利润商品但对用户不相关(浪费曝光)。

3. 业务应用场景

业务背景:母婴品类 Amazon Prime Day 期间,运营团队准备了 200 个参与促销的 SKU(折扣率 15%-50%),需要对不同用户展示「最可能因折扣购买」的商品组合,而非单纯推热销榜。

量化 ROI:促销预算 $50,000,利用率提升 35pp,间接减少预算浪费: $50,000 × 35% = $17,500 促销预算增效;GMV 增量 31.4% × baseline $200,000 = +$62,800

数据要求: - 促销池:`{item_id, original_price, promo_price, promo_type, promo_start, promo_end}` - 用户历史:含折扣购买标记(`{price_paid, original_price}`) - 促销效果反馈:`{impression_id, clicked: bool, purchased: bool}`

4. 输入数据要求

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

5. 输出结果

  • MMM 的输出(各渠道 ROI 系数)可作为 DECE 中的收益权重初值
  • PRME 学到的价格弹性曲线,可反馈到 MMM 的价格模型验证
  • 两者共享营销日历配置,避免信号漂移

6. 业务价值 / ROI

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

7. 代码模板

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

"""
Marketing-Driven Recommendation
整合 PRME (促销感知) + DECE (双目标优化) + PRM (策略梯度协同排序)
母婴电商场景 mock 实现,含完整测试
"""

from __future__ import annotations

import numpy as np
from dataclasses import dataclass, field
from typing import Dict, List, Optional, Tuple
from enum import Enum


# ── 数据模型 ─────────────────────────────────────────────────────────────

class PromoType(Enum):
    DISCOUNT = "discount"        # 直接折扣
    BUNDLE = "bundle"            # 买赠/捆绑
    COUPON = "coupon"            # 优惠券
    FLASH_SALE = "flash_sale"    # 秒杀


@dataclass
class PromotionInfo:
    """促销信息"""
    promo_id: str
    item_id: str
    original_price: float
    promo_price: float
    promo_type: PromoType
    stock_remaining: int = 9999

    @property
    def discount_rate(self) -> float:
        """折扣率 Δp"""
        return (self.original_price - self.promo_price) / self.original_price

    @property
    def margin_rate(self) -> float:
        """毛利率(mock:假设成本=原价40%)"""
        cost = self.original_price * 0.4
        return (self.promo_price - cost) / self.promo_price

    @property
    def is_available(self) -> bool:
        return self.stock_remaining > 0


@dataclass
class MarketingItem:
    """带营销属性的商品"""
    item_id: str
    title: str
    category: str
    base_embedding: np.ndarray = field(default_factory=lambda: np.random.randn(32))
    rating: float = 4.5


@dataclass

8. 论文来源

  • 2310.01837
  • 2311.05698
  • 2406.12847