PROJECT_SUMMARY.md 7.39 KB

推荐系统离线任务 - 项目总结

项目概述

本项目实现了一个完整的推荐系统离线任务框架,用于生成各种推荐索引。主要包括两大模块:

  1. i2i 行为相似索引:基于用户行为计算物品之间的相似度
  2. 兴趣点聚合索引:按多维度聚合用户行为,生成不同场景的推荐列表

技术架构

数据来源

  • 数据库:SelectDB(兼容MySQL协议)
  • 主要表:
    • sensors_events:用户行为事件表
    • prd_goods_sku:商品SKU表

算法实现

1. i2i 行为相似算法

算法 原理 优势 适用场景
Swing 基于用户共同行为的物品相似度,考虑用户重叠度 效果好,能发现深层关系 详情页推荐、相关商品
Session W2V 基于用户会话序列训练Word2Vec 能捕获序列关系 下一个可能感兴趣的商品
DeepWalk 基于图随机游走训练Word2Vec 能发现图结构特征 发现潜在关联商品

2. 兴趣点聚合

维度分类:

  • 单维度

    • 平台(PC/Mobile/App)
    • 国家/销售区域
    • 客户类型(零售商/批发商等)
    • 二级分类
    • 三级分类
  • 组合维度

    • 平台 + 国家
    • 平台 + 客户类型
    • 国家 + 客户类型
    • 平台 + 国家 + 客户类型

列表类型:

  • hot(热门):基于最近180天的高交互商品
  • cart(加购):基于加购行为的高频商品
  • new(新品):基于商品创建时间的新品
  • global(全局):基于所有数据的综合排序

核心特性

1. 时间衰减

  • 使用指数衰减模型,越近期的行为权重越高
  • 衰减因子:0.95(每30天衰减一次)
  • 公式:weight = decay_factor ^ (days / 30)

2. 行为权重

不同行为类型赋予不同权重:

行为类型 权重 说明
click 1.0 点击
addToPool 2.0 加入询盘池
addToCart 3.0 加入购物车
contactFactory 5.0 联系工厂
purchase 10.0 购买

3. 可配置参数

所有参数集中在 config/offline_config.py,便于调整优化。

文件清单

核心代码

/home/tw/recommendation/
├── db_service.py                              # 数据库连接服务
├── requirements.txt                            # Python依赖包
└── offline_tasks/
    ├── config/
    │   └── offline_config.py                  # 配置文件
    ├── scripts/
    │   ├── i2i_swing.py                       # Swing算法
    │   ├── i2i_session_w2v.py                 # Session W2V算法
    │   ├── i2i_deepwalk.py                    # DeepWalk算法
    │   ├── interest_aggregation.py            # 兴趣点聚合
    │   └── load_index_to_redis.py             # 加载索引到Redis
    ├── run_all.py                              # 统一调度脚本
    ├── test_connection.py                      # 连接测试脚本
    ├── example_query_redis.py                  # Redis查询示例
    ├── README.md                               # 详细文档
    ├── QUICKSTART.md                           # 快速启动指南
    └── PROJECT_SUMMARY.md                      # 本文档

输出目录

offline_tasks/
├── output/                                     # 索引输出目录
│   ├── i2i_swing_YYYYMMDD.txt
│   ├── i2i_session_w2v_YYYYMMDD.txt
│   ├── i2i_deepwalk_YYYYMMDD.txt
│   ├── session_w2v_model_YYYYMMDD.model       # W2V模型
│   ├── deepwalk_model_YYYYMMDD.model          # DeepWalk模型
│   ├── item_graph_YYYYMMDD.txt                # 物品图结构
│   ├── interest_aggregation_hot_YYYYMMDD.txt
│   ├── interest_aggregation_cart_YYYYMMDD.txt
│   ├── interest_aggregation_new_YYYYMMDD.txt
│   └── interest_aggregation_global_YYYYMMDD.txt
└── logs/                                       # 日志目录
    ├── run_all_YYYYMMDD.log
    └── ...

使用流程

1. 环境准备

pip install -r requirements.txt

2. 测试连接

cd offline_tasks
python test_connection.py

3. 运行离线任务

python run_all.py --lookback_days 730 --top_n 50

4. 加载索引到Redis

python scripts/load_index_to_redis.py --expire-days 7

5. 查询示例

python example_query_redis.py

数据格式

i2i索引格式

item_id \t item_name \t similar_item_id1:score1,similar_item_id2:score2,...

示例:

123456 \t 商品A \t 234567:0.8523,345678:0.7842,456789:0.7234

兴趣点聚合索引格式

dimension_key \t item_id1:score1,item_id2:score2,...

示例:

platform:PC \t 12345:98.52,23456:87.34,34567:76.89
country:US \t 45678:156.23,56789:142.87,67890:128.45
platform_country:PC_US \t 78901:234.56,89012:198.76,90123:187.23

在线推荐场景

场景1:详情页 - 大家都在看

用户浏览商品ID: 123456
查询: i2i:swing:123456
返回: 该商品的相似商品列表

场景2:首页 - 猜你喜欢

用户特征: PC端, 美国, 零售商
组合查询:
1. interest:hot:platform_country:PC_US
2. interest:cart:customer_type:retailer
3. 结合用户历史行为的i2i

场景3:搜索结果页 - 供应商推荐

用户搜索: 二级分类100
查询: interest:global:category_level2:100
返回: 该分类下的热门商品

性能指标

数据量参考(730天数据)

  • 用户行为记录:约100万-1000万条
  • 商品数量:约10万-50万个
  • 生成索引:约5万-20万条

运行时间(参考值)

  • Swing算法:2-4小时
  • Session W2V:30-60分钟
  • DeepWalk:1-2小时
  • 兴趣点聚合:30-60分钟
  • 总计:约5-8小时

资源占用

  • CPU:8-16核
  • 内存:8-16GB
  • 磁盘:输出文件约500MB-2GB

优化建议

1. 算法层面

  • Swing算法:可以使用C++版本(已有实现),性能提升10倍
  • 并行化:将不同算法分配到不同机器并行运行
  • 增量更新:对于变化不大的索引,考虑增量更新

2. 工程层面

  • 分布式计算:使用Spark/Flink处理大规模数据
  • 缓存中间结果:避免重复计算
  • 数据采样:调试阶段使用采样数据

3. 业务层面

  • A/B测试:对比不同算法的效果
  • 融合策略:组合多个算法的结果
  • 实时更新:结合实时计算补充离线索引

后续扩展

1. 新增算法

  • ItemCF(物品协同过滤)
  • Node2Vec(带权重的图游走)
  • Graph Neural Network(图神经网络)

2. 新增维度

  • 价格区间
  • 品牌
  • 标签组合
  • 用户画像更多维度

3. 实时化

  • 实时更新热门商品
  • 实时更新新品列表
  • 实时i2i相似度计算

4. 个性化

  • 结合用户画像的个性化排序
  • 多目标优化(点击率、转化率、GMV)
  • 强化学习排序

维护说明

定期检查

  • 每周检查日志,确保任务正常运行
  • 每月检查索引质量,调整参数
  • 每季度评估算法效果,优化策略

监控指标

  • 任务执行成功率
  • 索引生成数量
  • Redis命中率
  • 推荐点击率/转化率

联系方式

如有问题或建议,请联系推荐系统团队。


文档版本: v1.0
最后更新: 2025-10-16
作者: 推荐系统团队