Skip to content

Latest commit

 

History

16 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Make Video Great Again

Python License Status

基于 Flask 的视频数据分析与推荐系统,数据结构课程大作业,一个追求高性能的视频推荐系统。

项目简介

本项目采用爬取+模拟多平台(抖音/TikTok/快手/X/Facebook)短视频推荐场景,从零构建数据结构层(HashMap、稀疏矩阵、堆、图、线段树、Trie、LRU),替代 scipy/pandas 等库的数据组织能力,并在此基础上实现相似用户查找、视频推荐、热度预测、用户聚类、视频聚类及强化学习推荐增强等分析任务,最终通过 Flask Web 界面交互式展示。

运行环境

  • Python 3.9–3.12(推荐 3.12)
  • 依赖包见 requirements.txt

快速开始

# 1. 创建虚拟环境
python3.12 -m venv .venv
source .venv/bin/activate      # macOS/Linux
# .venv\Scripts\activate       # Windows

# 2. 安装依赖
pip install -r requirements.txt

# 3. 启动应用
python3 app.py

# 4. 浏览器访问
# http://localhost:8080/

项目结构

Make_Video_Great_Again/
├── .gitignore                      # 本地环境与生成文件忽略规则
├── app.py                          # Flask Web 后端(端口8080)
├── database.py                     # SQLite 数据库初始化
├── data_manager.py                 # 数据导入管理
├── data_cache.py                   # 数据缓存层
├── requirements.txt                # Python 依赖
│
├── ds/                             # 自建数据结构层
│   ├── hash_map.py                 # HashMap — O(1) 键值查询
│   ├── sparse_matrix.py            # CSRSparseMatrix — 稀疏矩阵压缩存储
│   ├── max_heap.py                 # MaxHeap — Top-K 筛选
│   ├── segment_tree.py             # SegmentTree — O(log n) 区间和查询
│   ├── graph.py                    # Graph — BFS 路径回溯
│   ├── trie.py                     # Trie — 前缀搜索
│   ├── lru_cache.py                # LRUCache — 最近最少使用缓存
│   ├── bandit_store.py             # BanditDataStore — 强化学习数据结构
│   └── data_store.py               # DataStore — 统一数据入口
│
├── task1_similar_users.py          # 任务1:相似用户分析(稀疏矩阵+余弦相似度+Top-K)
├── task2_recommend_videos.py       # 任务2:视频推荐(图BFS协同过滤+推荐路径解释)
├── task3_predict_heat.py           # 任务3:热度预测(线段树+ARIMA时序预测)
├── task4_user_clustering.py        # 任务4:用户聚类(稀疏矩阵+PCA+MiniBatchKMeans)
├── task5_video_clustering.py       # 任务5:视频聚类(SVD降维+MiniBatchKMeans)
│
├── Alpha_embedding_Cluster.py      # 增强算法A:SVD Embedding 聚类推荐
├── Beta_Thompson_Sampling.py       # 增强算法B:Thompson Sampling 冷启动
├── Charlie_LinUCB.py               # 增强算法C:LinUCB 交互式反馈训练
│
├── crawl_real_data.py              # 真实数据爬取(B站API)
├── capture_videos.py               # 视频信息采集
├── capture_users_operation.py      # 用户行为数据采集
├── generate_videos.py              # 模拟视频生成
├── generate_users_operations.py    # 模拟用户与行为生成
├── test_performance.py             # 性能测试
│
├── data/                           # 本地生成的数据(不提交)
├── results/                        # Embedding 数据与可视化输出
└── web/                            # 前端
    ├── templates/index.html        # 主页模板
    ├── templates/test.html         # 测试页面
    └── static/
        ├── css/style.css           # 样式
        └── js/app.js               # 前端交互逻辑

功能模块

六个核心分析任务

任务 说明 核心数据结构
Task1 相似用户 构建用户-标签稀疏矩阵,计算余弦相似度,Top-K 堆筛选 CSRSparseMatrix + MaxHeap
Task2 视频推荐 基于图的 BFS 协同过滤,生成推荐路径解释 Graph + HashMap + MaxHeap
Task3 热度预测 按天统计观看量,ARIMA 预测未来7天趋势 SegmentTree
Task4 用户聚类 构建用户兴趣特征矩阵,PCA 降维 + MiniBatchKMeans CSRSparseMatrix + HashMap
Task5 视频聚类 构建视频-用户稀疏矩阵,SVD 降维 + MiniBatchKMeans HashMap + CSRSparseMatrix
Task6 推荐增强 SVD Embedding、Thompson Sampling、LinUCB 交互训练 BanditDataStore

数据与生成文件

  • data/ 不提交到仓库;缺少 CSV 时,首次启动会自动生成模拟数据。
  • 首次生成数据并构建自定义数据结构可能需要几分钟;需要保存聚类结果时会创建 data/app.db
  • SQLite 数据库、缓存、虚拟环境、日志和生成图片已通过 .gitignore 排除。
## 🤝 贡献指南

我们欢迎各种形式的贡献,包括但不限于:

  • 提交问题和建议
  • 改进文档
  • 提交代码改进
  • 分享使用经验

📄 开源协议

本项目采用 MIT 协议开源,详情请查看 LICENSE 文件。

👥 开发团队

  • 项目负责人: AlexBybye
  • 核心开发者: AlexBybye BUSYING-1 happytzh
  • UI/UX 设计: BUSYING-1 AlexBybye
  • 强化学习等深度设计: AlexBybye
  • 后续开源贡献者: hhhDengggg

📞 联系我们

🌟 暴力测试(亿级数据:50000users - 500000videos - 800-1200operations

  • cpu: i9-13900
  • 内存:2048MB
  • 测试结果:
| 步骤           | 耗时(秒)|
| -----------    | -------- |
| 生成数据        | 340.8385 |
| 加载数据        | 359.1548 |
| Task1 预模拟    | 7.3957   |
| Task1 模拟1     | 0.1570   |
| Task2 模拟      | 1.0478   |
| Task1 模拟2     | 0.1492   |
| Task3 模拟      | 10.0709  |
| Task4 模拟      | 20.7974  |
| Task5 模拟      | 14.4364  |

Built with ❤️ by AlexBybye and contributors.

About

短视频推荐系统(亿级数据优化)This is an application whose main function is to recommand videos personalized to the users.

Resources

Security policy

Stars

6 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages