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%,客单价提升,品类交叉销售做起来
业务痛点
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