1、使用預測算法
Surprise提供了一堆內置算法。所有算法都派生自AlgoBase基類,其中實現了一些關鍵方法(例如predict,fit和test)。可以在prediction_algorithms包文檔中找到可用預測算法的列表和詳細信息 。
每個算法都是全局Surprise命名空間的一部分,因此您只需要從Surprise包中導入它們的名稱,例如:
from surprise import KNNBasic algo = KNNBasic()
(1)、基線估計配置
可以使用兩種不同的方式估算基線:
- 使用隨機梯度下降(SGD)。
- 使用交替最小二乘法(ALS)。
可以使用bsl_options 在創建算法時傳遞的參數來配置基線的計算方式。此參數是一個字典,其中的鍵'method'指示要使用的方法。可接受的值是'als'(默認)和'sgd'。根據其值,可以設置其他選項。
對於ALS:
reg_i:item的正則化參數。默認為10.
reg_u:user的正則化參數。默認為15.
n_epochs:ALS過程的迭代次數。默認為10.
對於SGD:
reg:優化的成本函數的正則化參數。默認為0.02.
learning_rate:SGD的學習率。默認為0.005.
n_epochs:SGD過程的迭代次數。默認為20.
不論SGD還是ALS,損失量默認為0.
例子:
print('Using ALS') bsl_options = {'method': 'als', 'n_epochs': 5, 'reg_u': 12, 'reg_i': 5 } algo = BaselineOnly(bsl_options=bsl_options) print('Using SGD') bsl_options = {'method': 'sgd', 'learning_rate': .00005, } algo = BaselineOnly(bsl_options=bsl_options) #請注意,某些相似性度量可能會使用基線,例如 pearson_baseline相似性。無論基線是否用於實際預測r,配置的工作方式都相同 bsl_options = { 'method' : 'als' , 'n_epochs' : 20 , } sim_options = { 'name' : 'pearson_baseline' } algo = KNNBasic (bsl_options = bsl_options , sim_options = sim_options )
(2):相似度配置
許多算法使用相似性度量來估計評級。它們的配置方式與基線評級類似:您只需sim_options在創建算法時傳遞參數即可。此參數是包含以下(所有可選)鍵的字典:
name:要使用的相似性的名稱,如similarities模塊中所定義 。默認是'MSD'。
user_based:是否在用戶之間或項目之間計算相似性。這對預測算法的性能有很大影響。默認是True。
min_support:共同項目的最小數目(當'user_based' 是'True')或普通用戶的最小數目(當'user_based'是 'False'用於相似性)不為零
shrinkage:要應用的收縮參數(僅與pearson_baseline相似性相關 )。默認值為100。
用法:
sim_options = {'name': 'cosine',
'user_based': False # compute similarities between items
}
algo = KNNBasic(sim_options=sim_options)
sim_options = {'name': 'pearson_baseline',
'shrinkage': 0 # no shrinkage
}
algo = KNNBasic(sim_options=sim_options)
