Skip to content

ML .NET 电影推荐

L edited this page Mar 17, 2022 · 8 revisions

参考Movie Recommendation
我采用ML .NET自动化模型的推荐方案来完成这件事情

场景

根据用户以往对电影的评分,向用户推荐他/她可能感兴趣的电影,从而精确推广目标电影给可能感兴趣的用户群体
比如,打开某部电影的介绍页面,会有“喜欢这部电影的人也喜欢”这样的栏目
或者在用户页面,有推荐电影的栏目

数据集

原始数据是ml-latest-small.zip,包括4个.csv文件
包含了用户id,电影id,电影名称,电影标签,用户对电影的评分,时间信息等信息
实际上最后只使用了用户iduserId,电影idmovieId,评分rating,时间timestamp这四个数据,数据不需要额外处理

训练模型

选择方案建议
1
选择训练环境
2

数据

选择数据文件,并设置要预测的列用户列项列
3
要预测的列是评分rating
用户列是评分的人,用户iduserId
项列是评分的目标,电影idmovieId
然后设置高级数据选项
4
完成训练
这里训练项目需要手动添加引用Microsoft.ML.Recommender
5
可以看出,训练结果并不好,具体输出如下

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      |
------------------------------------------------------------------------------------------------------------------

训练完成后有评估、使用、优化模型的相关指引
6
由于R-Squared较低,故进行重新训练,稍微提高了一些
7

小提示

最终得到的模型是否合格,和训练数据,数据量、特征的提取,数据统一性都有关系
和选择的训练模型、对应参数也有关系

调用模型完成功能

添加UI展现结果
8
计算用户1对多部电影的评分,然后排序取高分的电影,即是可以向该用户推荐的电影

示例代码

MovieRecommendation

参考资料

使用 Model Builder 训练推荐模型
教程:使用矩阵因子分解和 ML.NET 生成影片推荐系统
Movie Recommendation

Clone this wiki locally