• 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)
  • 相关阅读:
    #include "stdafx.h" 错误?
    扩频技术
    求数组中只出现一次的数字(算法)
    1.3一摞烙饼的排序
    嵌套类
    企业级邮件服务软件推荐
    关于Linq To Sql中Detach方法和一个公共基类
    asp.net(c#) 将dbf转换为xls或wps,并将数据的列名改成中文;并判断本机是否安装office2003,2007和wps2007,2010
    一句代码解决IE8兼容问题(兼容性视图)
    asp.net(C#)套用模板操作Excel
  • 原文地址:https://www.cnblogs.com/felixwang2/p/9391117.html
Copyright © 2020-2023  润新知