电影推荐系统
技术采用
- 前端: bootstrap3 + vue + jquery
- 后端: django 2.2.1 +djangorestframework (MVC框架)
- 数据库: mysql
- 数据集:
- 豆瓣数据集+豆瓣电影爬虫+csv存储
- movielens数据集+图片+用户数据和评分数据+csv存储
功能介绍
- 录入电影信息
- 用户打分
- 电影标签分类
- 电影推荐
- 电影分享
- 电影收藏
- 后台管理系统。
算法
基于用户的协同过滤
算法: 协同过滤, 根据用户的打分来进行推荐。从所有打分的用户中找出和当前用户距离最近的n用户,然后从n个用户打分的电影中找15个当前用户未看过的电影。
最近距离算法通过协同过滤来实现。
推荐算法—协同过滤 - 简书 此项目采用的是皮尔逊相关系数来计算相似度。采取基于用户模型的的协同过滤(Neighbor-based Collaborative Filtering)。
皮尔森距离公式:
基于物品的协同过滤
计算物品之间的相似度,然后根据相似度来推荐
物品间的共现矩阵,两个物品同时被n个用户购买
物品间的相似度
相似度:共现值/N的点赞值M的点赞值 开根号
推荐值: 相似度评分
根据用户点赞过得商品来寻找相似度推荐。
计算每个点赞过的物品和所有未点赞物品之间的得分。得分=相似度*打分值
得分越高表示越相似。 然后返回结果
基于tensorflow/文本卷积网络的推荐
通过movielens所提供的用户信息: 年龄—性别—职业。这三个数据维度来刻画用户数据信息。然后构造文本卷积网络来生成模型。
用户可以根据自己的年龄/性别等特征信息来得到个性化的推荐。
基于交互式的推荐
交互式的推荐为通过问答选择的形式来为用户推荐电影,根据回答的问题不同,得到的推荐电影也不同。
各文件功能
- media/ 静态文件存放处,图片
- movie/ Django的默认app,负责设置的配置还有url路由,部署等功能
- static/ css文件和js文件的存放处
- user/ 主app,程序的所有代码基本都在这下面 user/migrations为自动生成的数据库迁移文件 user/templates为前端页面模板文件, user/admins.py 为管理员后台代码 user/forms.py为前端表单代码 user/models.py为数据库orm模型 user/serializers.py为restful文件,不用管。 user/urls为路由注册文件。 user/views为负责处理前端请求和与后端数据库交互的模块,也就是controller模块。
- cache_keys.py为缓存的key值名称存放文件,不用管。
- db.sqlite3数据库文件
- douban_crawler.py 豆瓣爬虫文件
- manage.py 运行的主程序,从这里启动
- populate_movies_script.py 填充电影数据到数据库中
- populate_user_rate.py 随机生成用户评分
github链接
https://github.com/Colaplusice/movie_recommend