如何调整AWS Personalize配置以弱化近期行为对推荐的影响?
针对你使用aws-user-personalization方案时过度依赖近期行为的问题,结合你的数据规模(7500万交互、200万商品、1000万用户),可以从以下几个维度调整配置:
一、优化算法超参数,降低近期行为权重并延长历史序列考量
调整
bptt参数
当前设置的bptt: "16"控制模型反向传播的时间步数,决定了模型能捕捉的历史交互序列长度。增大该值(比如改为"32"或"64"),可以让模型纳入更多早期行为进行学习,避免只聚焦最近的少数交互。注意:数值越大训练时间会相应增加,但你的数据量支撑这种调整。添加
recency_weight参数
即使禁用了recency_mask,模型仍默认给近期行为更高权重。显式设置recency_weight为小于1的值(比如"0.7"或"0.8"),直接降低近期行为的影响力,让历史行为的权重占比提升。修改后的算法超参数示例:"algorithmHyperParameters": { "bptt": "32", "hidden_dimension": "70", "recency_mask": "false", "recency_weight": "0.7" }
二、调整特征转换参数,保留更多用户历史行为
当前max_user_history_length_percentile: "0.95"意味着只保留95%用户的历史行为长度上限,可能截断了部分用户的长历史序列。可以:
- 将
max_user_history_length_percentile提升至"0.99",覆盖更多有长历史行为的用户; - 或者直接设置固定值
max_user_history_length: "200"(根据你的用户平均历史长度调整),强制模型保留更多历史交互记录。修改后的特征转换参数示例:"featureTransformationParameters": { "max_user_history_length": "200", "min_user_history_length_percentile": "0.05" }
三、强化探索策略,拓宽推荐范围
虽然开启了performExploration: true,默认的探索权重可能不足。添加explorationWeight参数(比如"0.2"或"0.3"),让模型在推荐时更多尝试与用户历史行为(而非仅近期)相关的商品,避免过度聚焦近期交互的物品。调整后的配置片段:
{ "performExploration": true, "explorationWeight": "0.2", // 其他参数保持不变 }
四、引入附加特征维度,丰富用户兴趣画像
仅依赖交互数据时,模型只能从时序行为中学习偏好。补充以下特征可以帮助模型从更多维度挖掘用户兴趣,减少对近期行为的依赖:
- 用户特征:比如年龄、注册时长、偏好标签等;
- 物品特征:比如商品分类、品牌、描述标签、价格区间等;
将这些特征加入对应的用户/物品数据集,重新训练模型后,模型会结合用户长期属性和物品属性进行推荐,而非仅依赖近期行为序列。
五、重新训练模型并验证效果
调整参数后,需要重新创建解决方案版本并训练模型。训练完成后,通过批量推荐或实时推荐的测试,对比推荐结果中历史行为关联商品的占比,逐步调整参数数值(比如recency_weight、bptt的具体值),直到达到预期的平衡效果。
内容的提问来源于stack exchange,提问作者J.Kh

