User Profile Long Memory — 跨会话用户画像:育儿阶段感知与偏好记忆
Skill-User-Profile-Long-Memory · 14-用户分析
1. 解决的问题
用户上月购买了 Stage 1 奶粉,系统推断宝宝约 2-3 月龄
2. 核心算法逻辑
传统电商推荐的痛点:每次会话独立,用户偏好从零识别——上月的购买行为、表达过的品牌偏好、当下育儿阶段的隐含需求全部丢失。用户画像长期记忆(User Profile Long Memory)通过跨会话持久化画像,将用户的历史交互沉淀为可更新、可检索的结构化特征,驱动无缝个性化体验。
3. 业务应用场景
业务问题:用户上月购买了 Stage 1 奶粉,系统推断宝宝约 2-3 月龄。本月用户再次进入 App,系统需要主动预判宝宝已接近 4-5 月,即将进入 Stage 2 窗口,无需用户重复说明偏好即可精准推荐。
数据要求: - 历史购买记录:品类(Stage 1/2/3 奶粉、辅食泥、学步玩具)+ 购买时间 - 浏览行为:浏览了哪些品类页 + 停留时长 - 画像特征存储:JSON 结构,持久化到用户数据库
| 时间节点 | 画像状态 | 推荐行为 | |---------|---------|---------| | 购买 Stage 1(Month 0) | `baby_stage=NEWBORN, brand=Aptamil, organic=True` | 写入画像 | | 用户回访(Month 3) | 推断宝宝≈4月,检测到临近升阶窗口 | 推荐 Stage 2 同品牌有机配方 + 辅食入门套装 | | 用户回访(Month 6) | 推断宝宝≈8月,进入辅食深度期 | 推荐有机米粉/果泥 + Stage 3 过渡产品 |
4. 输入数据要求
请查看原始代码模板获取输入规格。
5. 输出结果
请查看原始代码模板获取输出规格。
6. 业务价值 / ROI
- 育儿阶段感知是母婴场景特有的强信号,其他通用推荐系统缺失此维度
- 实现成本低(无 LLM 调用、无向量库),运行成本接近零
- 与 Shopping Companion Agent 结合后形成完整的"偏好识别→记忆→复现"闭环
- 仅基于购买行为推断,浏览行为未纳入时推断精度受限
- 多宝宝家庭(二胎)可能导致阶段推断混乱(需要会话分离机制)
7. 代码模板
代码块数量:1 · 路径:paper2skills-code/user_analytics/user_profile_long_memory
"""
User Profile Long Memory — 跨会话用户画像积累
来源: Personalized Memory Architecture + LLM Personal Assistant 2025-2026
场景: 育儿阶段感知 + 品牌偏好 + 价格敏感度的持久化画像管理
"""
import math
import json
from dataclasses import dataclass, field
from datetime import datetime, timezone
from enum import Enum
from typing import Optional
# ─────────────────────────────────────────────
# 枚举定义
# ─────────────────────────────────────────────
class UserProfileDimension(Enum):
"""用户画像维度枚举"""
PARENTING_STAGE = "parenting_stage" # 育儿阶段
BRAND_PREFERENCE = "brand_preference" # 品牌偏好
PRICE_SENSITIVITY = "price_sensitivity" # 价格敏感度
ORGANIC_PREFERENCE = "organic_preference" # 有机偏好
CATEGORY_AFFINITY = "category_affinity" # 品类亲和度
QUALITY_WEIGHT = "quality_weight" # 品质权重
BABY_AGE_MONTHS = "baby_age_months" # 宝宝月龄(推断值)
class ParentingStage(Enum):
"""育儿阶段枚举"""
NEWBORN = "newborn" # 新生儿(0-3月)
INFANT = "infant" # 婴儿期(4-6月)
CRAWLER = "crawler" # 爬行期(7-9月)
TODDLER_EARLY = "toddler_early" # 学步初期(10-12月)
TODDLER_MID = "toddler_mid" # 学步中期(13-18月)
TODDLER_LATE = "toddler_late" # 学步晚期(19-24月)
PRESCHOOL = "preschool" # 学前期(25+月)
UNKNOWN = "unknown" # 未知阶段
# ─────────────────────────────────────────────
# 数据类定义
# ─────────────────────────────────────────────
@dataclass
class ProfileAttribute:
"""单一画像属性,含置信度与衰减机制"""
value: object
confidence: float # 置信度 [0,1]
last_updated: str # ISO 8601 时间戳
decay_rate: float = 0.05 # 月衰减率(λ)
source: str = "purchase_history" # 来源标注
evidence_count: int = 1 # 支撑证据条数
def effective_confidence(self, now: Optional[datetime] = None) -> float:
"""计算时间衰减后的有效置信度"""
if now is None:
now = datetime.now(timezone.utc)
last = datetime.fromisoformat(self.last_updated)
8. 论文来源
未自动抽取;请查看原始 Skill 卡片。