使用Prediction算法

Prediction算法使用

Surprise 提供了许多built-in算法. 所有算法从AlgoBase基类继承, 当使用一些关键的函数时(比如predict, fit 和 test). 可以从prediction_algorithms包文档中获得所有可以使用的算法的详细信息

每一个算法都是Surprise的一个全局的命名空间, 所以我们需要从Surprise包中导入算法, 比如
在这里插入图片描述
一些算法可能会使用 baseline estimates,也有一些可能会使用 similarity measure,现在我们回顾一下baselines and similarities是如何计算的

Baselines estimates配置
这部分仅仅适用于最小化带正则化的squared error
在这里插入图片描述
对于不同的算法(比如SVD),Baselines estimates配置也是不同的,对每一个算法都是特定的,请参考他们各自的文档。

如果你不想对Baselines estimates进行配置,它自己带有默认的参数。

Baselines可以通过随机梯度下降法Stochastic Gradient Descent (SGD)和交替最小二乘法Alternating Least Squares (ALS)进行计算。

可以通过 bsl_options 参数进行 Baselines的配置,method参数表示要使用的方法, ‘als’ (默认) 或者是 ‘sgd’.

ALS的相关参数如下:

'reg_i':items的正则化项,对应着λ2,默认值是10
'reg_u':users的正则化项,对应着λ3,默认值是15
'n_epochs':ALS执行的轮数,默认是10

SGD的相关参数如下:

'reg':所要优化的损失函数的正则化项,对应着λ1和λ5,默认值是0.02
'learning_rate':SGD的学习速率,对应着γ,默认是0.005
'n_epochs':SGD执行的轮数,默认是20

不管是ALS还是SGD,user和item偏置(bu和 bi)初始化为0

#ALS初始化例子:
print('Using ALS')
bsl_options = {'method': 'als',
               'n_epochs': 5,
               'reg_u': 12,
               'reg_i': 5
               }
algo = BaselineOnly(bsl_options=bsl_options)
Using ALS
#SGD初始化例子:
print('Using SGD')
bsl_options = {'method': 'sgd',
               'learning_rate': .00005,
               }
algo = BaselineOnly(bsl_options=bsl_options)

值得注意的一点是在进行相似度测量时,也可能使用 baselines, 比如pearson_baseline相似度。

不管是在用在实际的预测 r^ui或者其他地方,配置工作和之前的一样。

bsl_options = {'method': 'als',
               'n_epochs': 20,
               }
sim_options = {'name': 'pearson_baseline'}
algo = KNNBasic(bsl_options=bsl_options, sim_options=sim_options) #KNNBasic为基础的协同过滤算法

相似度度量配置
许多算法使用相似度度量来估计评分,配置方法和baseline rating类似,在算法建立时,使用sim_options进行配置,下面介绍关键的参数:

  'name':相似度度量方法的名称, 这些方法定义在similarities中,默认是'MSD'
  'user_based':控制是否计算users和items之间的相似度,这个参数对于预测算法的性能有着重要的影响,默认是True(计算users之间的相似度)                   False(计算items之间的相似度)
  'min_support':相同items的最小数量(当'user_based'为True时)或者相同users的最小数量(当'user_based'为False时),如果满足最小数量,那                 么相似度不为0,如果|Iuv|<min_support 然后 sim(u,v)=0. 
  'shrinkage':Shrinkage参数仅仅在使用(相关性或者相似度度量)时使用,默认是100
#使用例子
sim_options = {'name': 'cosine',
               'user_based': False  # 计算items之间的相似度
               }
algo = KNNBasic(sim_options=sim_options)

sim_options = {'name': 'pearson_baseline',
               'shrinkage': 0  # no shrinkage
               }
algo = KNNBasic(sim_options=sim_options)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
心脏病预测数据集是一个用于预测患者是否患有心脏病的数据集。该数据集包含了不同患者的一些特征变量,如年龄、性别、胸痛类型、胆固醇水平等,以及一个目标变量,表示患者是否患有心脏病。K近邻(K-nearest neighbors,KNN)算法是一种用于分类和回归的基本监督学习算法。 KNN算法的基本思想是根据样本之间的距离来判断样本的分类,即通过计算新样本与已有样本之间的距离,选择最近的K个样本,并根据这些样本的类别进行投票来确定新样本的类别。在心脏病预测数据集中,我们可以利用KNN算法来根据患者的特征变量预测其是否患有心脏病。 KNN算法的具体步骤如下: 1. 根据给定的数据集,计算新样本与每个已有样本之间的距离。常用的距离度量方法有欧氏距离、曼哈顿距离等。 2. 选择K个距离最近的已有样本,并获取其对应的类别。 3. 对K个样本的类别进行统计,选择类别出现最频繁的作为新样本的类别。 4. 预测的结果即为新样本的类别。 在心脏病预测数据集中,我们可以选择适当的K值,如3、5或7。较小的K值可能更容易受到局部的噪声干扰,而较大的K值可能更容易受到整体分布的影响。因此,需要通过交叉验证等方法来选择最合适的K值。 KNN算法的优点是简单而直观,易于实现,并且可以适用于分类和回归问题。然而,由于需要计算新样本与所有已有样本之间的距离,KNN算法在处理大规模数据集时可能会变得较慢。此外,对于不平衡的数据集,KNN算法可能会出现类别预测的偏差。 综上所述,KNN算法可以用于心脏病预测数据集,根据患者的特征变量预测其是否患有心脏病,但需要根据实际情况选择合适的K值,并注意算法的性能和偏差问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值