参考Movie Recommendation
我采用ML .NET自动化模型的推荐
方案来完成这件事情
场景
根据用户以往对电影的评分,向用户推荐他/她可能感兴趣的电影,从而精确推广目标电影给可能感兴趣的用户群体
比如,打开某部电影的介绍页面,会有“喜欢这部电影的人也喜欢”这样的栏目
或者在用户页面,有推荐电影的栏目
数据集
原始数据是ml-latest-small.zip,包括4个.csv文件
包含了用户id,电影id,电影名称,电影标签,用户对电影的评分,时间信息等信息
实际上最后只使用了用户iduserId
,电影idmovieId
,评分rating
,时间timestamp
这四个数据,数据不需要额外处理
训练模型
选择方案建议
选择训练环境
数据
选择数据文件,并设置要预测的列
,用户列
,项列
要预测的列
是评分rating
用户列
是评分的人,用户iduserId
项列
是评分的目标,电影idmovieId
然后设置高级数据选项
完成训练
这里训练项目需要手动添加引用Microsoft.ML.Recommender
可以看出,训练结果并不好,具体输出如下
Set log file path to ......
| Trainer RSquared Absolute-loss Squared-loss RMS-loss Duration #Iteration |
|1 MatrixFactorization 0.2836 0.68 0.77 0.88 0.4 1 |
|2 MatrixFactorization 0.3057 0.67 0.75 0.86 0.5 2 |
|3 MatrixFactorization -7.7796 2.89 9.45 3.07 1.9 3 |
|4 MatrixFactorization -6.8064 2.71 8.40 2.90 1.0 4 |
|5 MatrixFactorization 0.3248 0.66 0.73 0.85 0.8 5 |
|6 MatrixFactorization -0.4381 1.00 1.55 1.24 0.3 6 |
|7 MatrixFactorization -0.1846 0.93 1.27 1.13 0.3 7 |
|8 MatrixFactorization -6.0314 2.56 7.57 2.75 0.4 8 |
|9 MatrixFactorization -6.9087 2.73 8.51 2.92 0.4 9 |
|10 MatrixFactorization -0.1570 0.88 1.24 1.12 0.6 10 |
|11 MatrixFactorization -6.0012 2.55 7.53 2.74 0.4 11 |
|12 MatrixFactorization -7.8689 2.91 9.54 3.09 0.4 12 |
|13 MatrixFactorization -5.9120 2.53 7.44 2.73 1.5 13 |
|14 MatrixFactorization 0.0634 0.82 1.01 1.00 0.6 14 |
|15 MatrixFactorization -6.8212 2.71 8.42 2.90 1.0 15 |
|16 MatrixFactorization -8.4288 3.01 10.15 3.19 0.3 16 |
|17 MatrixFactorization 0.2496 0.69 0.81 0.90 0.3 17 |
|18 MatrixFactorization -5.9911 2.55 7.52 2.74 6.8 18 |
|19 MatrixFactorization -5.9236 2.54 7.45 2.73 0.5 19 |
|20 MatrixFactorization -7.7404 2.88 9.40 3.07 0.4 20 |
|21 MatrixFactorization 0.3253 0.66 0.73 0.85 0.8 21 |
|22 MatrixFactorization 0.3248 0.66 0.73 0.85 1.3 22 |
|23 MatrixFactorization 0.3231 0.66 0.73 0.85 1.1 23 |
|24 MatrixFactorization 0.3255 0.66 0.73 0.85 1.3 24 |
|25 MatrixFactorization 0.3029 0.67 0.75 0.87 1.0 25 |
|26 MatrixFactorization 0.3245 0.66 0.73 0.85 1.2 26 |
|27 MatrixFactorization 0.0659 0.82 1.01 1.00 1.0 27 |
|28 MatrixFactorization 0.0653 0.82 1.01 1.00 1.4 28 |
|29 MatrixFactorization 0.0677 0.82 1.00 1.00 1.0 29 |
|30 MatrixFactorization 0.2823 0.68 0.77 0.88 1.0 30 |
|31 MatrixFactorization 0.3266 0.66 0.72 0.85 1.2 31 |
|32 MatrixFactorization -1.7496 1.51 2.96 1.72 1.0 32 |
|33 MatrixFactorization 0.0967 0.77 0.97 0.99 1.4 33 |
|34 MatrixFactorization 0.3007 0.67 0.75 0.87 1.2 34 |
|35 MatrixFactorization 0.2425 0.70 0.82 0.90 1.0 35 |
|36 MatrixFactorization 0.0647 0.82 1.01 1.00 1.0 36 |
|37 MatrixFactorization 0.3057 0.67 0.75 0.86 1.1 37 |
|38 MatrixFactorization 0.2152 0.72 0.84 0.92 1.4 38 |
|39 MatrixFactorization 0.0649 0.82 1.01 1.00 1.4 39 |
|40 MatrixFactorization 0.0966 0.77 0.97 0.99 1.4 40 |
|41 MatrixFactorization -0.8004 1.21 1.94 1.39 1.1 41 |
|42 MatrixFactorization -0.5061 1.05 1.62 1.27 1.1 42 |
|43 MatrixFactorization -0.2244 0.94 1.32 1.15 1.1 43 |
|44 MatrixFactorization 0.3116 0.67 0.74 0.86 1.1 44 |
|45 MatrixFactorization -7.9544 2.92 9.63 3.10 1.3 45 |
|46 MatrixFactorization 0.2827 0.68 0.77 0.88 1.0 46 |
|47 MatrixFactorization 0.3051 0.67 0.75 0.86 1.2 47 |
|48 MatrixFactorization 0.3240 0.66 0.73 0.85 1.2 48 |
|49 MatrixFactorization 0.3185 0.66 0.73 0.86 1.3 49 |
|50 MatrixFactorization -0.4177 1.02 1.53 1.24 1.0 50 |
|51 MatrixFactorization -0.1741 0.89 1.26 1.12 1.4 51 |
|52 MatrixFactorization 0.0604 0.83 1.01 1.01 1.2 52 |
|53 MatrixFactorization 0.2826 0.68 0.77 0.88 1.0 53 |
|54 MatrixFactorization 0.2864 0.67 0.77 0.88 1.0 54 |
===============================================Experiment Results=================================================
------------------------------------------------------------------------------------------------------------------
| Summary |
------------------------------------------------------------------------------------------------------------------
|ML Task: Recommendation |
|Dataset: ......\MovieRecommendation.Train\TrainData\recommendation-ratings-train.csv|
|Label : rating |
|Total experiment time : 58.2824409 Secs |
|Total number of models explored: 54 |
------------------------------------------------------------------------------------------------------------------
| Top 5 models explored |
------------------------------------------------------------------------------------------------------------------
| Trainer RSquared Absolute-loss Squared-loss RMS-loss Duration #Iteration |
|1 MatrixFactorization 0.3266 0.66 0.72 0.85 1.2 1 |
|2 MatrixFactorization 0.3255 0.66 0.73 0.85 1.3 2 |
|3 MatrixFactorization 0.3253 0.66 0.73 0.85 0.8 3 |
|4 MatrixFactorization 0.3248 0.66 0.73 0.85 1.3 4 |
|5 MatrixFactorization 0.3248 0.66 0.73 0.85 0.8 5 |
------------------------------------------------------------------------------------------------------------------
训练完成后有评估、使用、优化模型的相关指引
由于R-Squared
较低,故进行重新训练,稍微提高了一些
小提示
最终得到的模型是否合格,和训练数据,数据量、特征的提取,数据统一性都有关系
和选择的训练模型、对应参数也有关系
调用模型完成功能
添加UI展现结果
计算用户1对多部电影的评分,然后排序取高分的电影,即是可以向该用户推荐的电影
示例代码
参考资料
使用 Model Builder 训练推荐模型
教程:使用矩阵因子分解和 ML.NET 生成影片推荐系统
Movie Recommendation