ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

基于Python机器学习方法的电影推荐系统

2022-01-24 13:35:09  阅读:324  来源: 互联网

标签:机器 Python 电影 用户 libFM 消息 模块 打分 recsys


整体介绍

  • recsys_ui: 前端技术(html5+JavaScript+jquery+ajax)
  • recsys_web: 后端技术(Java+SpringBoot+mysql)
  • recsys_spider: 网络爬虫(python+BeautifulSoup)
  • recsys_sql: 使用SQL数据处理
  • recsys_model: pandas, libFM, sklearn. pandas数据分析和数据清洗,使用libFM,sklearn对模型初步搭建
  • recsys_core: 使用pandas, libFM, sklearn完整的数据处理和模型构建、训练、预测、更新的程序
  • recsys_etl:ETL 处理爬虫增量数据时使用kettle ETL便捷处理数据

为了能够输出一个可感受的系统,我们采购了阿里云服务器作为数据库服务器和应用服务器,在线上搭建了电影推荐系统的第一版,地址是:

www.technologyx.cn

可以注册,也可以使用已有用户:

用户名密码
gavin123
gavin2123
wuenda123

欢迎登录使用感受一下。

设计思路

用简单地方式表述一下设计思路,

1.后端服务recsys_web依赖于系统数据库的推荐表‘recmovie’展示给用户推荐内容
2.用户对电影打分后(暂时没有对点击动作进行响应),后台应用会向mqlog表插入一条数据(消息)。
3.新用户注册,系统会插入mqlog中一条新用户注册消息
4.新电影添加,系统会插入mqlog中一条新电影添加消息
5.推荐模块recsys_core会拉取用户的打分消息,并且并行的做以下操作:
a.增量的更新训练样本
b.快速(因服务器比较卡,目前设定了延时)对用户行为进行基于内容推荐的召回
c.训练样本更新模型
d.使用FM,LR模型对Item based所召回的数据进行精排
e.处理新用户注册消息,监听到用户注册消息后,对该用户的属性初始化(统计值)。
f.处理新电影添加消息,更新基于内容相似度而生成的相似度矩阵

注:

  • 由于线上资源匮乏,也不想使系统增加复杂度,所以没有直接使用MQ组件,而是以数据库表作为代替。
  • recsys_model属于用notebook进行数据分析和数据处理以及建模的草稿,地址为:https://github.com/GavinHacker/recsys_model
  • 其余的所有项目的地址索引为:https://github.com/GavinHacker/technologyx
    http://www.biyezuopin.vip/search.asp?key=%B5%E7%D3%B0%CD%C6%BC%F6&otype=title&submit2=%B5%E3%CE%D2%CB%D1%CB%F7

模型相关的模块介绍

增量的处理用户comment,即增量处理评分模块

这个模块负责监听来自mqlog的消息,如果消息类型是用户的新的comment,则对消息进行拉取,并相应的把新的comment合并到总的训练样本集合,并保存到一个临时目录
然后更新数据库的config表,把最新的样本集合(csv格式)的路径更新上去

运行截图

消息队列的截图

把csv处理为libsvm数据

这个模块负责把最新的csv文件,异步的处理成libSVM格式的数据,以供libFM和LR模型使用,根据系统的性能确定任务的间隔时间

运行截图

基于内容相似度推荐

当监听到用户有新的comment时,该模块将进行基于内容相似度的推荐,并按照电影评分推荐

运行截图

libFM预测

http://www.libfm.org/

对已有的基于内容推荐召回的电影进行模型预测打分,呈现时按照打分排序

如下图为打分更新

逻辑回归预测

对样本集中的打分做0,1处理,根据正负样本平衡,> 3分为喜欢 即1, <=3 为0 即不喜欢,这样使用逻辑回归做是否喜欢的点击概率预估,根据概率排序

标签:机器,Python,电影,用户,libFM,消息,模块,打分,recsys
来源: https://blog.csdn.net/newlw/article/details/122665580

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有