# -Collaborative-filtering-algorithm-
基于python实现,通过协同过滤算法实现的一个简单的豆瓣电影推荐系统
本次实验学习如何利用python、MySQL作为开发环境(主要调用pymysql、request、json、numpy、pandas等python库),通过爬取豆瓣电影数据,实现了一个基于基于用户协同过滤的简单推荐系统demo,笔者主要行文思路如下图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201015155333926.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1plbmdtZW5nMTk5OA==,size_16,color_FFFFFF,t_70#pic_center)
## 数据获取
本次实验数据获取源选取自[豆瓣电影](https://movie.douban.com/),主要通过python中resquest库对数据进行爬取与处理,再通过pymysql库实现对数据的存储(此处未将数据全部导入SQL不作E-R图展示),最终爬取数据构成如下图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201015155527771.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1plbmdtZW5nMTk5OA==,size_16,color_FFFFFF,t_70#pic_center)
## 界面设计
界面设计主要通过python中PyQT5库进行实现,实现了初始的用户登录、用户注册与电影检索等初始功能,同时再结合推荐算法,可以实现推荐系统中对初始用户的冷启动、老用户个性化推荐功能。初始界面如下图所示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201015155554296.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1plbmdtZW5nMTk5OA==,size_16,color_FFFFFF,t_70#pic_center)
@[toc](简单的豆瓣电影推荐系统demo)
>推荐毕设前的小项目demo,主要内容是ItemCF+简单的系统开发
# 前言
本次实验学习如何利用python、MySQL作为开发环境(主要调用pymysql、request、json、numpy、pandas等python库),通过爬取豆瓣电影数据,实现了一个基于基于用户协同过滤的简单推荐系统demo,笔者主要行文思路如下图:![在这里插入图片描述](https://img-blog.csdnimg.cn/20201015155333926.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1plbmdtZW5nMTk5OA==,size_16,color_FFFFFF,t_70#pic_center)
# 背景介绍
如果说互联网的目标是连接一切,哪推荐系统的功能与作用就是建立起更加有效率的连接,推荐系统可以连接用户与内容与服务,可以为企业、政府等组织节省大量的成本,同时将有用的内容精准的投放到个性用户里,大大节省用户的时间成本。
# 开发部分介绍
## 数据获取与存储
本次实验数据获取源选取自[豆瓣电影](https://movie.douban.com/),主要通过python中resquest库对数据进行爬取与处理,再通过pymysql库实现对数据的存储(此处未将数据全部导入SQL不作E-R图展示),最终爬取数据构成如下图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201015155527771.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1plbmdtZW5nMTk5OA==,size_16,color_FFFFFF,t_70#pic_center)
## 界面设计
界面设计主要通过python中PyQT5库进行实现,实现了初始的用户登录、用户注册与电影检索等初始功能,同时再结合推荐算法,可以实现推荐系统中对初始用户的冷启动、老用户个性化推荐功能。初始界面如下图所示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201015155554296.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1plbmdtZW5nMTk5OA==,size_16,color_FFFFFF,t_70#pic_center)
# 算法原理
## 推荐算法与冷启动简述
推荐算法的初衷想法就是希望把商品、内容精准的推送到用户手中,使得商品得到精准的流量,帮助用户省去选择和寻找信息的时间成本。![在这里插入图片描述](https://img-blog.csdnimg.cn/20201015155622185.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1plbmdtZW5nMTk5OA==,size_16,color_FFFFFF,t_70#pic_center)
从电影的推荐系统角度看推荐算法,推荐系统主要需要解决的问题是推荐系统的冷启动、推荐系统怎样基于用户的兴趣推荐出准确的内容与信息?
对于推荐系统的冷系统的冷启动问题,主流解决思想有基于用户的冷启动、基于物品的冷启动、基于非个性化的推荐,本次实验只考虑新用户注册的情况,不考虑新物品进入系统的情况,故解决的是用户的冷启动问题,解决思想是根据新用户登入其自定义的个性标签(感兴趣的电影类型)定义出一大致的粗粒度的个性化用户画像,再根据这个画像做出一个个性化推荐的左端界面,右端界面为基于物品的热度的热门电影推荐。
完成用户的“冷启动”后,系统得到足够支撑推荐算法的用户行为数据,基于相关的推荐算法,可以对用户做出更加精确的推荐。结合笔者所查文献与资料,
常用推荐算法主要有:基于用户的协同过滤推荐、基于物品的协同过滤推荐、隐语义模型的推荐、基于图的推荐。结合所抓取数据的构成与体量,采用基于用户的协同过滤算法做系统的主要的推荐算法。
## 基于物品的协同过滤(ItemCF)
基于物品的协同过滤算法是目前业界应用做多的算法,如:亚马逊、YouTube其推荐算法基础都是该算法。基于物品的协同过滤在解决物品数量一定,但用户数量巨大的应用场景上很有优势,与本次实验解决问题类型相近故选用(豆瓣网站的电影数量是一定的,但是用户数量巨大。)在本次实验中ItemCF算法的实现思想主要为以下两个步骤:
1.计算物品间的相似度:
从物品上出发,可以定义物品的相似度计算公式为:$$w_{i j}=\frac{|N(i) \cap N(j)|}{|N(i)|}$$
其中分母|N(i)|是喜欢物品i的用户数,分子${|N(i) \cap N(j)|}$是既喜欢物品i同时也喜欢物品j的用户数量。不难看出,公式的定义是喜欢物品i的用户同时也喜欢物品j的用户比例,该公式一定程度上可以反映物品i、j的相似程度,但是对于j是热门物品的情况,其很多人都喜欢j,j的体量本身就很大,那么上述公式的计算结果 将接近于1,这对对于致力于挖掘长尾信息的推荐来说显然是一个不好的特性。因此,在此基础上加入对物品j权重的惩罚,得到改进的相似度计算公式为:![在这里插入图片描述](https://img-blog.csdnimg.cn/2020101515582068.png#pic_center)
计算物品相似度的算法部分实现思路为:
(1)建立用户-物品倒排表(对每个用户建立一个其喜欢的物品的列表);
(2)对于每个用户,将其的物品列表两两在共现矩阵中加1;
(3)将各用户的共现矩阵相加得到总的共现矩阵C;
(4)将C矩阵归一化即得到物品之间的余弦相似矩阵W。
形象的实现思路如图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020101515583558.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1plbmdtZW5nMTk5OA==,size_16,color_FFFFFF,t_70#pic_center)
2.根据物品相似度和用户的历史行为生成个性化的推荐列表:
在计算得到物品间的相似度后,再同如下公式计算得到用户u对物品j的兴趣:$$
p_{\text {uj }}=\sum_{i=N(u) \cap s(j, K)} w_{j i} r_{u i}
$$
其中N(u)是用户喜欢的物品的集合,S(j,K)是和物品j最相似的K个物品集合,s(j,K)是与物品j最相似的K个物品的集合,wij是物品i与物品j的相似度,rui是用户u对物品j的�
没有合适的资源?快使用搜索试试~ 我知道了~
基于python实现,通过协同过滤算法实现的一个简单的豆瓣电影推荐系统+源代码+文档说明
共2个文件
rar:1个
md:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 110 浏览量
2024-04-24
10:14:50
上传
评论
收藏 2.56MB ZIP 举报
温馨提示
- 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
资源推荐
资源详情
资源评论
收起资源包目录
-Collaborative-filtering-algorithm--main.zip (2个子文件)
-Collaborative-filtering-algorithm--main
2017326603042徐思孟数据挖掘大作业(电影推荐系统).rar 2.55MB
README.md 16KB
共 2 条
- 1
资源评论
机器学习的喵
- 粉丝: 517
- 资源: 1269
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 海信智能电视刷机数据 LED32K20JD(1115)BOM5 生产用软件数据 务必确认机编一致 强制刷机 整机USB升级程序
- 520表白html5爱心代码
- TINY Syntax Tree -setup1.0.0
- mmexport1689832776313.jpg
- 月宝の病理の爱(黑).zi
- 海信智能电视刷机数据 LED32EC510N(2000)BOM22 生产用软件数据 务必确认机编一致 强制刷机 整机USB升级
- 电磁场与波,非常基础的知识总结
- android ios java后台通用DES base64加密
- 华为OD刷题C卷练习记录(300道).rar
- 最新《Vue-框架开发》期末考试试题分享给需要的同学
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功