【实战分享】电影推荐系统项目实战应用

2019 年 3 月 7 日 七月在线实验室

导读:今天和大家分享一篇学员项目笔记,笔记作者:NoOne,主要内容是关于电影推荐系统方面项目知识,希望对大家学习有所帮助,以下是原文:

从2017年接触机器学习,到2018年5月开始学习机器学习,再到11月份开始学习七月在线的课程,算下来学习ML已经很久了。

不过在来到七月在线的平台学习之前,一直都是断断续续的学习,对于很多知识渠道觉得都很碎片化,在七月在线课程学习结束之际,平台组织了推荐系统项目比赛,同几位志同道合的小伙伴一起完成了这个比赛,并有幸得到大家的肯定,拿了第一名,在这个过程中,增长了很多经验,对于机器学习方法应用于工业生产的理解更是深刻了一些。

推荐算法在互联网行业的应用非常广泛,今日头条、美团点评等都有个性化推荐,推荐算法抽象来讲,是一种对于内容满意度的拟合函数,涉及到用户特征和内容特征,作为模型训练所需维度的两大来源,而点击率,页面停留时间,评论或下单等都可以作为一个量化的 Y 值,这样就可以进行特征工程,构建出一个数据集,然后选择一个合适的监督学习算法进行训练,得到模型后,为客户推荐偏好的内容,如头条的话,就是咨询和文章,美团的就是生活服务内容。

可选择的模型很多,如协同过滤,逻辑斯蒂回归,基于DNN的模型,FM等。我们使用的方式是,基于内容相似度计算进行召回,之后通过FM模型和逻辑斯蒂回归模型进行精排推荐,下面就分别说一下,我们做这个电影推荐系统过程中,从数据准备,特征工程,到模型训练和应用的整个过程

我们实现的这个电影推荐系统,限于大家平时工作时间紧张,爬取的数据实际上维度是相对少的,特别是用户这一侧的维度,正常推荐系统涉及的维度,诸如页面停留时间,点击频次,收藏等这些维度都是没有的,以及用户本身的维度也相对要少,没有地址、年龄、性别等这些基本的维度,这样我们爬取的数据只有打分和评论这些信息,所以之后我们又从这些信息里再拿出一些统计维度来用。

我们爬取的电影数据(除电影详情和图片信息外)是如下这样的形式:

这里的数据是有冗余的,又通过如下的代码,对数据进行按维度合并,去除冗余数据条目:

之后开始准备用户数据,我们从用户打分的数据中,统计出每一个用户的打分的最大值,最小值,中位数值和平均值等,从而作为用户的一个附加属性,存储于userproex表中:

以上两个SQL是最终插入表的时候用到的,代表准备用户数据的最终步骤,其余细节可以参考文末的github仓库,不在此赘述,数据处理还用到了一些SQL,以及其他处理细节。

系统上线运行时,第一次是全量的数据处理,之后会是增量处理过程,这个后面还会提到。

我们目前把用户数据和电影的数据的原始数据算是准备好了,下一步开始特征工程。做特征工程的思路是,对type, actors, director, trait四个类型数据分别构建一个频度统计字典,用于之后的one-hot编码,代码如下:

涉及到的冗余数据也要删除

将电影数据转换为字典列表,由于演员和导演均过万维,实际计算时过于稀疏,当演员或导演只出现一次时,标记为冷门演员或导演

使用DictVectorizer进行向量化,做One-hot编码

这样的数据,下面做余弦相似度已经可以了,这是特征工程的基本的一个处理,模型所使用的数据,需要将电影,评分,用户做一个数据拼接,构建训练样本,并保存CSV,注意这个CSV不用每次全量构建,而是除第一次外都是增量构建,通过mqlog中类型为'c'的消息,增量构建以comment(评分)为主的训练样本,拼接之后的形式如下:

这个数据的actors等字段和上面的处理是一样的,为了之后libfm的使用,在这里需要转换为libsvm的数据格式

有很多细节不在这里描述,这样大概的特征工程工作就做好了,之后使用相似度计算,FM,LR进行推荐模型的训练。 具体训练的过程不在这里进行阐述了,可以参考代码索引页 https://github.com/GavinHacker/technologyx

模型使用上遵循先召回,后精排的策略,先通过余弦相似度计算一个相似度矩阵,然后根据这个矩阵,为用户推荐相似的M个电影,在通过训练好的FM,LR模型,对这个M个电影做偏好预估,FM会预估一个用户打分,LR会预估一个点击概率,综合结果推送给用户作为推荐电影。

https://gitee.com/chengguowei/recsys_core 这个地址上面有详细的上线的项目截图和说明,大家有兴趣可以看一下,这里介绍了系统方面的结构,即,如何把推荐系统简单的应用到一个网站中。

做了这个电影推荐系统后,感觉算是对自己这么长时间学习机器学习知识做一个综合的实践,有不少的感悟,现在有很多学习机器学习的同学,建议在大家刷论文的同时,也注重在项目中实践,计算机科学,虽然叫做科学,实际却是一门实践性学科,一些AI顶级大牛,他们并不是数学家,也不是理论家,大多是从理论和实践结合这条路成就的,和金庸小说中的武林绝技是一个道理。

说到这,大家都知道,最近朋友圈被《94射雕英雄传》AI换脸杨幂刷屏了,看来AI视频换脸技术发展已经相当快,仔细想想,这已经是AI进入艺术创作领域的一个表象,笔者认为AI之后的发展一定是从互联网行业扩展出去,变成IT产业当中的一个重要的技术支柱。

七月在线的AI课程是国内做AI知识传播比较好的一个平台,在这里能够接触到很多小伙伴,大家一起分享,一起成长。

以上就是分享的关于电影推荐系统项目,如想了解此项目更多相关知识,扫描下方二维码,即可查看~


长按识别下方二维码

查看项目详情

长按识别二维码


今日学习推荐


助力“金三银四”

分享一套全体系人工智能学习资料

600G资料 限时限额0元领

小伙伴们可以屯起来,慢慢学习喔~


扫描下方海报二维码

 立即领取

往期推荐






万字长文概述NLP中的深度学习技术

34个最优秀好用的Python开源框架

一文详解机器学习中最好用的提升方法:Boosting 与 AdaBoost

神经网络P图新神器:摘墨镜戴美瞳都能搞定,加首饰换发型真假难分 | 代码开源

必备收藏!8500+公开代码论文,950多项机器学习任务最优结果汇总


点击“阅读原文”,查看项目相关详情

给我【好看

你也越好看!

登录查看更多
34

相关内容

推荐系统,是指根据用户的习惯、偏好或兴趣,从不断到来的大规模信息中识别满足用户兴趣的信息的过程。推荐推荐任务中的信息往往称为物品(Item)。根据具体应用背景的不同,这些物品可以是新闻、电影、音乐、广告、商品等各种对象。推荐系统利用电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助客户完成购买过程。个性化推荐是根据用户的兴趣特点和购买行为,向用户推荐用户感兴趣的信息和商品。随着电子商务规模的不断扩大,商品个数和种类快速增长,顾客需要花费大量的时间才能找到自己想买的商品。这种浏览大量无关的信息和产品过程无疑会使淹没在信息过载问题中的消费者不断流失。为了解决这些问题,个性化推荐系统应运而生。个性化推荐系统是建立在海量数据挖掘基础上的一种高级商务智能平台,以帮助电子商务网站为其顾客购物提供完全个性化的决策支持和信息服务。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
【2020新书】实战R语言4,323页pdf
专知会员服务
98+阅读 · 2020年7月1日
【干货书】机器学习Python实战教程,366页pdf
专知会员服务
331+阅读 · 2020年3月17日
近期必读的6篇AI顶会WWW2020【推荐系统】相关论文
专知会员服务
56+阅读 · 2020年2月25日
医疗知识图谱构建与应用
专知会员服务
372+阅读 · 2019年9月25日
我的推荐系统入门经验~
大数据技术
39+阅读 · 2019年9月19日
推荐系统
炼数成金订阅号
28+阅读 · 2019年1月17日
实战深度学习,我们给你整了6个杀手级项目
七月在线实验室
7+阅读 · 2018年3月27日
今日头条推荐算法原理全文详解
架构文摘
7+阅读 · 2018年1月30日
自然语言处理技术(NLP)在推荐系统中的应用
CSDN大数据
3+阅读 · 2017年6月29日
Deflecting Adversarial Attacks
Arxiv
8+阅读 · 2020年2月18日
Arxiv
10+阅读 · 2018年3月23日
Arxiv
5+阅读 · 2017年7月23日
VIP会员
相关资讯
我的推荐系统入门经验~
大数据技术
39+阅读 · 2019年9月19日
推荐系统
炼数成金订阅号
28+阅读 · 2019年1月17日
实战深度学习,我们给你整了6个杀手级项目
七月在线实验室
7+阅读 · 2018年3月27日
今日头条推荐算法原理全文详解
架构文摘
7+阅读 · 2018年1月30日
自然语言处理技术(NLP)在推荐系统中的应用
CSDN大数据
3+阅读 · 2017年6月29日
Top
微信扫码咨询专知VIP会员