# 豆瓣电影推荐系统
## 项目概述
本项目是一个基于Python实现的豆瓣电影推荐系统,集成了协同过滤、知识图谱和混合推荐算法,为用户提供个性化的电影推荐服务。系统采用FastAPI框架构建Web服务,使用SQLAlchemy进行数据库操作,并提供了直观的数据可视化功能。
## 系统架构
### 技术栈
- 后端框架:FastAPI
- 数据库:SQLite
- ORM:SQLAlchemy
- 数据处理:Pandas, NumPy
- 机器学习:Scikit-learn
- 图数据处理:NetworkX
- 数据可视化:前端图表库
### 核心模块
1. 数据管理模块
2. 用户认证模块
3. 推荐算法模块
4. 可视化模块
5. Web接口模块
## 推荐算法实现
### 1. 基于项目的协同过滤(Item-based CF)
- 实现原理:基于用户对电影的评分矩阵,计算电影之间的相似度
- 核心步骤:
- 构建用户-电影评分矩阵
- 计算电影间的相似度(采用余弦相似度)
- 基于相似电影的评分预测用户可能喜欢的电影
- 特点:
- 使用缓存优化(@lru_cache)提高性能
- 过滤低活跃用户和冷门电影
- 支持冷启动策略
### 2. 基于知识图谱的推荐(Knowledge Graph)
- 实现原理:构建用户-电影-特征的知识图谱,基于图结构推荐
- 核心步骤:
- 构建包含用户、电影节点的图结构
- 添加用户评分作为边的权重
- 计算用户相似度
- 基于相似用户的评分生成推荐
- 特点:
- 利用NetworkX构建和处理图结构
- 考虑用户间的相似度关系
- 支持冷启动处理
### 3. 混合推荐算法
- 实现原理:结合项目协同过滤和知识图谱推荐的优势
- 核心步骤:
- 获取两种算法的推荐结果
- 对推荐分数进行归一化处理
- 加权融合两种推荐结果
- 考虑用户兴趣偏好
- 特点:
- 权重可调整(当前项目CF:0.6,用户CF:0.4)
- 完善的冷启动处理机制
- 支持基于用户兴趣的推荐