surprise庫官方文檔分析(二):使用預測算法


1、使用預測算法

Surprise提供了一堆內置算法。所有算法都派生自AlgoBase基類,其中實現了一些關鍵方法(例如predictfittest)。可以在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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM