Surprise 專注於推薦系統的 Python庫

Surprise 專注於推薦系統的 Python庫

Surprise是一個專注於推薦系統的 Python scikit 庫,其結構與 scikit-learn 非常相似。

Surprise的工作流程與 scikit-learn 中的分類器模型是不一樣的。在 scikit-learn 的模型中你有一個大的矩陣,你可以根據自己的需要將其拆分為訓練 / 驗證 / 測試集,做交叉驗證,因為它們本質上仍是相同類型的數據。但在 surprise 中有三種不同的數據類,每種都有自己獨特的用法。


安裝:

需要安裝 Surprise 軟件包,pip install scikit-surprise

數據準備:

Dataset:可以直接或通過交叉驗證迭代器拆分為訓練集和測試集。意味著如果你在交叉驗證中將一個 Dataset 作為參數傳遞,它將創建許多訓練 - 測試拆分。 Trainset:在模型的 fit 方法中用作參數。 Testset:在模型的 test 方法中用作參數。


交叉驗證 surprise 中測試和驗證的機制有所不同。你只能對原始 Dataset 對象進行交叉驗證,而不能為最終測試留出單獨的測試部分,至少目前找不到相應的方法。所以流程基本上是這樣的:

對具有不同參數的多種模型類型進行交叉驗證, 選出平均測試 RMSE 得分最低的配置, 在整個 Dataset 上訓練這個模型, 用它來預測。


預測 surprise 有兩點可能和你期望的不一樣:

只能對已經在數據集中的用戶進行預測。這也是為什麼我認為在流程結束時在整個數據集上訓練模型才有意義的原因所在。

你不能調用一次就從模型中獲得輸出列表。你可以請求一個特定用戶對某個特定項目的估計評分結果。

代碼參見https://github.com/MatePocs/boardgame_recommendation/blob/master/02_modelling_neighbours.ipynb


Surprise 專注於推薦系統的 Python庫


Surprise 專注於推薦系統的 Python庫


分享到:


相關文章: