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)
相关文章
相关标签/搜索