查看原文
其他

用Azure中的Matchbox Recommender向豆瓣用户推荐电影

高秦汉 微软中国MSDN 2020-10-17


本文转载自公众号:云就该这么玩


实验目的:

用机器学习针对用户以往对电影的评分实现三个功能

1. 为预测用户对不同电影的评分

2. 为用户推荐电影

3. 从电影目录中选出每位用户最可能喜欢的电影


主要步骤:

1.处理数据集

2. 建立模型

3. 训练模型 + 评估

4. 部署web服务


使用Azure Machine Learning Studio完成本次实验。


处理数据集:

数据集分为两部分,第一部分由三列组成,分别为用户ID,电影ID以及用户评分。第二部分三列数据分别为电影ID, 电影评分和电影名。

数据库地址:https://github.com/smallnest/douban-recommender/tree/master/data

通过本地上传两份DATASET,完成后可用visualize查看数据集。


创建项目:

在Experiment中建立一个空白实验,具体模型搭建可以直接从左侧把模块拖入工作区。

从左边栏My Dataset中选取实验中的两个数据集,进行数据处理。首先编辑用户评分格式,因为训练模型要求rating格式为int,使用Edit Metadata修改数据集,在右边栏中选择rating并将Data type改为Integer。

这时需要合并两个数据库,让用户名,评分直接对应电影名而不是电影ID。使用join Data模块在column selector中选择MovieID进行合并。合并后进入Select Column in Dataset, 在模块column selector中依次选择UserID, MovieName和Rate进行合并。

不排除有用户为同一电影多次打分的可能,需要对数据集进一步处理保留第一次评分,选择Remove Duplicate Row模块同样在column selector中选择UserID和MovieName。处理过的数据通入Split Data模块,将数据集75%用作训练,剩余25%作为评估指标


训练模型 + 评估:

接下来,训练数据接入Train Matchbox Recommender开始训练模型,Matchbox Recommender采用矩阵分解作为推荐算法,通过用户兴趣向量和电影参数向量的点积估算,预测未知得分。

Number of traits决定根据每个用户或电影学习数据的最大数量,Number of recommendation algorithm iterations决定算法处理数据的次数,Batches用来把数据集分组进行训练。在这里我们设定为20, 10, 4。


现在我们有训练好的模型了,把模型和测试数据接入Score Matchbox Recommender来实现希望达到的三个功能:

1.为预测用户对不同电影的评分

在Score Matchbox Recommender中选择Rating Prediction, 可以通过visualize来查看具体预测。

输出结果和测试数据集接入模块Evaluate Recommendation, 需要提供的参数是最小电影数和最小用户数,这两个参数可以排除数据集中评论电影数太少的用户和被评论次数太少的电影。评估采用MAE和RMSE两种方法。

可以看到在五分制中这样的误差还是可以接受的。


2.为用户推荐电影

在这一步中依然采用Score Matchbox Recommender, 具体功能选择Item Recommendation, 需要提供的两个参数分别为 1. 为用户提供最大推荐数 2. 推荐用户的最低评价数(没办法为评价数过少的用户推荐)在这里分别设定为5和2。

同样可以visualize查看具体推荐。

和第一个功能一样,评估还是采用Evaluate Recommendation, 参数还是2,2  visualize看看评估结果,NDCG为1时预测完美,可以看到0.95还是不错的。


3.从电影目录中选出每位用户最可能喜欢的电影

这一步中需要对数据集再次进行处理,首先还是调用Remove Duplicate Rows只选取UserID, 接下来要抽取100名用户,用Partition and Sample 中的head选择前100,接下来接入Select Columns模块,只保留UserID,最后一部把处理完成的数据集和训练模型接入Score Matchbox Recommender完成预测。

至此我们期望的功能都实现了,可以部署web服务获取API了。


部署web服务:

这一步我们先保存训练好的模型,整合好的web服务中只保Score Matchbox Recommender即可,这一步用Deploy Web Service完成。


▼往期精彩回顾▼「Azure」数据分析师有理由爱Azure之一-Azure能带给我们什么?
数据合规性难题,微软专家怎么解决?
在Dynamics365V9版本里创建使用统一界面客户端的App



微软开发者社区

注册微软开发者社区

更多活动资讯一手掌握


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存