README.md 5.3 KB

推荐系统离线任务

推荐系统的离线索引生成模块,包含多种算法和数据处理任务。

🚀 快速开始

运行所有任务(推荐)

cd /home/tw/recommendation/offline_tasks

# 运行全部离线任务(包括C++ Swing)
python3 run_all.py

# 开启debug模式(详细日志 + 可读文件)
python3 run_all.py --debug

任务执行顺序

前置任务:
1. fetch_item_attributes.py  → 获取商品属性映射
2. generate_session.py       → 生成用户行为session
3. C++ Swing算法             → 高性能i2i相似度计算

核心算法任务:
4. Python Swing算法          → 支持日期维度的i2i
5. Session W2V              → 基于序列的embedding
6. DeepWalk                 → 图结构embedding
7. 内容相似度               → 基于ES向量
8. 兴趣聚合                 → 多维度商品聚合

📚 文档

所有文档位于 doc/ 目录:

🔧 核心功能

1. 前置任务优化

  • 商品属性缓存: 一次获取,多次使用,减少90%数据库查询
  • Session文件复用: 统一生成,多算法共享
  • C++ Swing集成: 自动执行,高性能计算

2. 算法增强

  • 双维度Swing: 同时考虑用户整体行为和单日行为
  • 时间衰减: 可选的时间权重衰减
  • Debug模式: 自动生成可读版本(ID + 名称)

3. 自动化流程

# 一条命令完成所有任务
python3 run_all.py --debug

输出文件:

  • output/item_attributes_mappings.json - ID映射
  • output/session.txt.YYYYMMDD - 用户session
  • collaboration/output/swing_similar.txt - C++ Swing结果
  • output/i2i_swing_YYYYMMDD.txt - Python Swing结果
  • ... 其他算法输出

📊 性能对比

任务 改进前 改进后 提升
数据库查询 5-10次 1次 80-90% ↓
Swing性能 Python C++ 10-100x ↑
任务管理 手动分步 自动流程 100% ↑

🛠️ 单独运行任务

1. 获取商品属性

python3 scripts/fetch_item_attributes.py

2. 生成Session

python3 scripts/generate_session.py --lookback_days 730

3. C++ Swing

cd ../collaboration
bash run.sh

4. Python Swing(支持日期维度)

python3 scripts/i2i_swing.py --lookback_days 730 --use_daily_session --debug

5. 其他算法

# Session W2V
python3 scripts/i2i_session_w2v.py --lookback_days 730 --debug

# DeepWalk
python3 scripts/i2i_deepwalk.py --lookback_days 730 --debug

# 内容相似度
python3 scripts/i2i_content_similar.py

# 兴趣聚合
python3 scripts/interest_aggregation.py --lookback_days 730 --debug

📁 项目结构

offline_tasks/
├── scripts/              # 所有任务脚本
│   ├── fetch_item_attributes.py
│   ├── generate_session.py
│   ├── i2i_swing.py
│   ├── i2i_session_w2v.py
│   ├── i2i_deepwalk.py
│   ├── i2i_content_similar.py
│   ├── interest_aggregation.py
│   ├── add_names_to_swing.py
│   └── debug_utils.py
├── config/               # 配置文件
│   └── offline_config.py
├── doc/                  # 文档中心
│   ├── README.md
│   ├── 快速开始.md
│   ├── Swing算法使用指南.md
│   └── ...
├── output/               # 输出目录
│   ├── item_attributes_mappings.json
│   ├── session.txt.*
│   └── *.txt
├── logs/                 # 日志目录
├── run_all.py           # 统一入口
└── README.md            # 本文件

⚙️ 配置

配置文件:config/offline_config.py

主要参数:

DEFAULT_LOOKBACK_DAYS = 730    # 数据回看天数
DEFAULT_I2I_TOP_N = 50         # i2i推荐数量
DEFAULT_INTEREST_TOP_N = 1000  # 兴趣聚合数量

# 数据库配置
DB_CONFIG = {...}

# 算法参数
I2I_CONFIG = {...}

🐛 故障排查

常见问题

1. 映射文件不存在

# 先运行前置任务
python3 scripts/fetch_item_attributes.py

2. Session文件找不到

# 生成session文件
python3 scripts/generate_session.py

3. C++ Swing编译失败

cd ../collaboration
make clean
make

详见:doc/故障排查指南.md

📝 日志

日志位置:

  • 主日志:logs/run_all_YYYYMMDD.log
  • Debug日志:logs/debug/*.log

查看最新日志:

tail -f logs/run_all_$(date +%Y%m%d).log

🔗 相关项目

  • Collaboration: ../collaboration/ - C++ 协同过滤
  • GraphEmbedding: ../graphembedding/ - 图embedding
  • Hot: ../hot/ - 热门推荐
  • Frontend: ../frontend/ - 推荐接口

📞 更多信息


最后更新: 2024-10-17
状态: ✅ 生产就绪