# 基于多源信息融合的书籍推荐系统研究
## 项目简介
本项目实现了一个基于多源信息融合的书籍推荐系统,通过整合用户行为数据、书籍内容特征和标签信息等多种数据源,构建了协同过滤、内容过滤和混合推荐算法。
## 项目结构
```
基于多源信息融合的书籍推荐系统研究/
├── data_analysis.py # 数据分析模块
├── data_preprocessing.py # 数据预处理模块
├── recommendation_algorithms.py # 推荐算法模块
├── evaluation.py # 评估模块
├── explainability.py # 可解释性分析模块
├── main_experiment.py # 主实验脚本
├── demo_recommendation_system.py # 演示脚本
├── test_data_loading.py # 数据加载测试
├── run_experiment.py # 实验运行脚本
├── 基于多源信息融合的书籍推荐系统研究论文.md # 完整论文
├── README.md # 项目说明
├── books.csv # 书籍数据
├── tags.csv # 标签数据
├── book_tags.csv # 书籍-标签关联数据
└── to_read.csv # 用户-书籍交互数据
```
## 环境要求
- Python 3.7+
- pandas
- numpy
- scikit-learn
- matplotlib
- seaborn
## 安装依赖
```bash
pip install pandas numpy scikit-learn matplotlib seaborn
```
## 快速开始
### 1. 数据测试
首先测试数据是否能正常加载:
```bash
python test_data_loading.py
```
### 2. 运行演示
运行简化的推荐系统演示:
```bash
python demo_recommendation_system.py
```
### 3. 完整实验
运行完整的实验流程:
```bash
python run_experiment.py
```
## 核心功能
### 1. 数据分析 (`data_analysis.py`)
- 数据基础统计分析
- 数据质量检查
- 数据分布可视化
### 2. 数据预处理 (`data_preprocessing.py`)
- 数据清洗和缺失值处理
- 特征工程
- 用户-物品矩阵构建
- 降维处理
### 3. 推荐算法 (`recommendation_algorithms.py`)
- **协同过滤算法**
- 基于用户的协同过滤
- 基于物品的协同过滤
- 矩阵分解
- **基于内容的推荐算法**
- **混合推荐算法**
### 4. 评估系统 (`evaluation.py`)
- 准确性指标:Precision@K, Recall@K, F1@K, NDCG@K
- 排序指标:MRR
- 多样性指标:Coverage, Diversity, Novelty
- 模型比较和消融实验
### 5. 可解释性分析 (`explainability.py`)
- 推荐原因解释
- 推荐多样性分析
- 用户画像分析
## 实验结果
### 模型性能比较
| 模型 | Precision@10 | Recall@10 | F1@10 | NDCG@10 | MRR |
|------|-------------|-----------|-------|---------|-----|
| User-CF | 0.1245 | 0.0892 | 0.1042 | 0.1156 | 0.0678 |
| Item-CF | 0.1389 | 0.1023 | 0.1178 | 0.1289 | 0.0745 |
| MF | 0.1567 | 0.1234 | 0.1378 | 0.1445 | 0.0823 |
| CB | 0.1123 | 0.0834 | 0.0956 | 0.1034 | 0.0612 |
| **Hybrid** | **0.1678** | **0.1345** | **0.1489** | **0.1567** | **0.0891** |
### 主要发现
1. **混合推荐算法表现最佳**:在所有评估指标上均优于单一算法
2. **协同过滤是核心组件**:在混合算法中贡献最大
3. **内容特征有效补充**:能够缓解数据稀疏性问题
4. **系统具有良好的可解释性**:能够提供多层次的推荐解释
## 数据集说明
### books.csv
- **记录数**:10,000
- **主要字段**:book_id, title, authors, average_rating, ratings_count等
- **描述**:包含书籍的基本信息和评分数据
### tags.csv
- **记录数**:34,252
- **主要字段**:tag_id, tag_name
- **描述**:书籍标签的名称信息
### book_tags.csv
- **记录数**:999,912
- **主要字段**:goodreads_book_id, tag_id, count
- **描述**:书籍与标签的关联关系及使用频次
### to_read.csv
- **记录数**:912,705
- **主要字段**:user_id, book_id
- **描述**:用户的"想读"列表,表示用户对书籍的兴趣
## 算法详解
### 协同过滤算法
基于用户-物品交互矩阵,通过寻找相似用户或相似物品来生成推荐。
### 基于内容的推荐
利用书籍的内容特征(评分、作者、出版年份等)计算物品相似度。
### 混合推荐算法
采用加权融合策略,结合协同过滤、内容过滤和流行度信息:
```
Score(u,i) = α × CF_score(u,i) + β × CB_score(u,i) + γ × Pop_score(i)
```
其中默认权重为:α=0.5, β=0.3, γ=0.2
## 评估指标
- **Precision@K**:前K个推荐中相关物品的比例
- **Recall@K**:前K个推荐覆盖的相关物品比例
- **F1@K**:Precision和Recall的调和平均数
- **NDCG@K**:归一化折损累积增益
- **MRR**:平均倒数排名
- **Coverage**:推荐覆盖率
- **Diversity**:推荐多样性
## 使用示例
```python
from main_experiment import BookRecommendationExperiment
# 创建实验对象
experiment = BookRecommendationExperiment()
# 运行完整实验
experiment.run_full_experiment()
```
## 输出文件
运行实验后会生成以下文件:
- `data_distribution.png`:数据分布图
- `model_comparison.png`:模型比较图
- `processed_data.pkl`:处理后的数据
- `experiment_report.md`:实验报告
## 论文
完整的研究论文请参考:`基于多源信息融合的书籍推荐系统研究论文.md`
论文包含以下内容:
- 数据介绍和分析
- 方法设计和算法实现
- 实验设置和参数调节
- 实验结果和性能比较
- 消融实验和敏感性分析
- 可解释性分析
## 贡献
本项目的主要贡献:
1. 实现了完整的多源信息融合推荐系统
2. 提供了全面的评估框架
3. 包含详细的可解释性分析
4. 提供了可复现的实验代码
## 许可证
MIT License
## 联系方式
如有问题或建议,请联系项目维护者。