导读:今天和大家分享一篇学员项目笔记,笔记作者: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元领
小伙伴们可以屯起来,慢慢学习喔~
扫描下方海报二维码
立即领取
☟
▼
一文详解机器学习中最好用的提升方法:Boosting 与 AdaBoost
点
点击“阅读原文”,查看项目相关详情
给我【好看】
你也越好看!