ML .NET 電影推薦
阿新 • • 發佈:2022-03-17
參考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