Name Last Update
..
collaboration Loading commit data...
config Loading commit data...
deepwalk Loading commit data...
doc Loading commit data...
scripts Loading commit data...
COMMANDS.txt Loading commit data...
README.md Loading commit data...
check_table_structure.py Loading commit data...
example_query_redis.py Loading commit data...
install.sh Loading commit data...
log.runall Loading commit data...
run.sh Loading commit data...
test_connection.py Loading commit data...
test_memory_monitor.sh Loading commit data...

README.md

推荐系统离线任务

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

🚀 快速开始

运行所有任务

cd /home/tw/recommendation/offline_tasks

# ⭐ 推荐:使用 run.sh(完整流程,包含Redis加载)
bash run.sh

# 备用:使用 run_all.py(简化版,不含C++ Swing和Redis)
python3 run_all.py --debug

说明:

  • run.sh: 主执行脚本,包含完整流程、内存监控、自动Redis加载
  • run_all.py: Python简化版本,只包含Python算法任务

任务执行顺序

前置任务:
1. fetch_item_attributes.py     → 获取商品属性映射
2. generate_session.py          → 生成用户行为session
3. collaboration/run.sh         → C++ Swing算法(高性能)

核心算法任务:
4. i2i_swing.py                → Python Swing(支持日期维度)
5. i2i_session_w2v.py          → Session W2V
6. i2i_deepwalk.py             → DeepWalk
7. i2i_content_similar.py      → 内容相似度
8. interest_aggregation.py     → 兴趣聚合

📚 文档

所有文档位于 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
├── collaboration/        # C++ Swing算法
│   ├── src/
│   ├── bin/
│   ├── run.sh
│   └── output/
├── config/               # 配置文件
│   └── offline_config.py
├── doc/                  # 文档中心
│   ├── README.md
│   ├── 快速开始.md
│   ├── Swing算法使用指南.md
│   └── ...
├── output/               # 输出目录
│   ├── item_attributes_mappings.json
│   ├── session.txt.*
│   └── *.txt
├── logs/                 # 日志目录
├── run.sh               # 主执行脚本(推荐)
├── run_all.py           # Python版本(简化)
└── 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
状态: ✅ 生产就绪