Popularity-Aware Meta-Learning for Cold-Start Recommendation
Skill-Cold-Start-Meta-Learning-PAM · 05-推荐系统
experimentforecastingrecommendation供应链与补货推荐与搜索WF-A 智能补货WF-G Listing内容优化
收录于用户增长决策手册
实现难度⭐⭐⭐☆☆
业务优先级⭐⭐⭐⭐⭐
业务视角
适用角色运营负责人 / 选品负责人 · 产品经理 · 广告优化师
适用平台Amazon · DTC 独立站 · 邮件/SMS 个性化
什么情况下用老客来了只买一件就走,相关产品没被推出去;Bundle 商品连带销售做不起来;站内推荐位点击率低
成功是什么样的老客连带购买率提升 20-35%,客单价提升,品类交叉销售做起来
业务痛点
1. 解决的问题
母婴品类SKU迭代快(奶粉按月龄分段、辅食按月添加),新品上架无历史交互数据,传统协同过滤无法推荐。
2. 核心算法逻辑
核心问题:母婴品类SKU迭代快(奶粉按月龄分段、辅食按月添加),新品上架无历史交互数据,传统协同过滤无法推荐。冷启动是母婴电商的结构性痛点。
3. 业务应用场景
业务问题:Momcozy每季度上架30+新品(新款吸奶器、新配件)。上架首周曝光转化率<0.5%,远低于成熟品的2.5%。
PAM 应用: 1. 分层: - 高流行度:月交互>1000的SKU - 中流行度:月交互100-1000 - 低流行度:月交互<100(主要是新品) 2. 元训练:在现有SKU上训练,学习"从商品属性预测用户偏好"的初始化参数 3. 快速适应:新品上架后,仅需少量交互(10-50次)即可微调出专属推荐模型
预期产出: - 新品首周转化率:0.5% → 1.5% - 新品达到成熟品转化率的时间:3个月 → 2周 - 长尾SKU总GMV占比:15% → 25%
4. 输入数据要求
请查看原始代码模板获取输入规格。
5. 输出结果
请查看原始代码模板获取输出规格。
6. 业务价值 / ROI
- ROI:新品GMV提升50-100%,试错周期缩短60%
- 难度:⭐⭐⭐☆☆(3/5)— 元学习概念门槛,但实现可模块化
- 优先级:⭐⭐⭐⭐⭐(5/5)— 母婴品类迭代快,冷启动是刚需痛点
7. 代码模板
代码块数量:1 · 路径:未检测到
"""
Popularity-Aware Meta-Learning (PAM) for Cold-Start Recommendation
用于新品/新用户的快速冷启动推荐
"""
import numpy as np
import torch
import torch.nn as nn
from collections import defaultdict
class PAMModel(nn.Module):
"""流行度感知的元学习推荐模型"""
def __init__(self, n_users, n_items, embedding_dim=64):
super().__init__()
self.user_emb = nn.Embedding(n_users, embedding_dim)
self.item_emb = nn.Embedding(n_items, embedding_dim)
self.content_proj = nn.Linear(embedding_dim * 2, embedding_dim)
def forward(self, user_ids, item_ids, item_content=None):
u = self.user_emb(user_ids)
i = self.item_emb(item_ids)
if item_content is not None:
# 低流行度:融合内容特征
i = self.content_proj(torch.cat([i, item_content], dim=-1))
score = (u * i).sum(dim=-1)
return torch.sigmoid(score)
def popularity_aware_meta_train(model, interactions, item_features,
popularity_thresholds=(1000, 100),
inner_lr=0.01, meta_lr=0.001, epochs=100):
"""
PAM元训练
Args:
interactions: [(user, item, rating)] 列表
item_features: 商品内容特征
popularity_thresholds: (高, 低) 流行度阈值
"""
meta_optimizer = torch.optim.Adam(model.parameters(), lr=meta_lr)
# 按流行度分层
item_counts = defaultdict(int)
for u, i, r in interactions:
item_counts[i] += 1
high_pop = [i for i, c in item_counts.items() if c >= popularity_thresholds[0]]
mid_pop = [i for i, c in item_counts.items()
if popularity_thresholds[1] <= c < popularity_thresholds[0]]
low_pop = [i for i, c in item_counts.items() if c < popularity_thresholds[1]]
layers = {
'high': high_pop,
'mid': mid_pop,
'low': low_pop
}
8. 论文来源
未自动抽取;请查看原始 Skill 卡片。