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

一、使用預測算法html

Surprise提供了一堆內置算法。全部算法都派生自AlgoBase基類,其中實現了一些關鍵方法(例如predictfittest)。能夠在prediction_algorithms包文檔中找到可用預測算法的列表和詳細信息 算法

每一個算法都是全局Surprise命名空間的一部分,所以您只須要從Surprise包中導入它們的名稱,例如:函數

from surprise import KNNBasic
algo = KNNBasic()

這些算法中的一些可使用基線估計,一些可使用類似性度量性能

(1)、基線估計配置學習

可使用兩種不一樣的方式估算基線:優化

  • 使用隨機梯度降低(SGD)。
  • 使用交替最小二乘法(ALS)。

可使用bsl_options 在建立算法時傳遞參數來配置基線的計算方式此參數是一個字典,其中的鍵'method'指示要使用的方法。可接受的值是'als'(默認)和'sgd'根據其值,能夠設置其餘選項。spa

對於ALS:code

  reg_i:item的正則化參數。默認爲10.htm

  reg_u:user的正則化參數。默認爲15.blog

  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)
相關文章
相關標籤/搜索