1. 程式人生 > 其它 >ML .NET 電影推薦

ML .NET 電影推薦

參考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對多部電影的評分,然後排序取高分的電影,即是可以向該使用者推薦的電影

示例程式碼

MovieRecommendation

參考資料

使用 Model Builder 訓練推薦模型
教程:使用矩陣因子分解和 ML.NET 生成影片推薦系統
Movie Recommendation