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)