我是靠谱客的博主 美好发箍,最近开发中收集的这篇文章主要介绍推荐算法之BaselineOnly算法(Python实现),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

要评估一个策略的好坏,就需要建立一个对比基线,以便后续观察算法效果的提升。

而Baseline算法的思想就是设立基线,并引入用户的偏差以及电影的偏差

在上式中,等式中的是待求的基线模型中用户u给物品i打分的预估值;

等式右边的μ为所有用户对电影评分的均值;bu为user偏差(如果某用户比较苛刻,打分都相对偏低, 则bu会为负值;相反,如果某用户经常对很多片都打正分, 则bu为正值); bi为item偏差,反映电影受欢迎程度。 

如果用户u未知,则假设偏差bu为零。 这同样适用于物品i。

Baseline模型虽然简单, 但其中其实已经包含了用户和item的个性化信息。在面对大规模数据时, 简单算法能够减少大量的计算时间。 

举个例子,所有电影的平均评分是7分,基准线就为7分;而泰坦尼克号是好的电影,它的评分偏高0.5分,因此基准线为7.5分;但小明是一位打分偏低的苛刻用户,他的历史数据显示他会偏低0.3分,那么最终基准线得到的预估分数就是7.2分。

计算基准线分数的公式中,μ可以直接统计得到,Bi和Bu可以通过最小二乘法计算得到。

Python代码实现:

from surprise import BaselineOnly
from surprise import Dataset

# 加载movielens-100k数据集
data = Dataset.load_builtin('ml-100k')

# 构建一个算法,并对其进行训练。
trainset = data.build_full_trainset()

# Build an algorithm, and train it.
algo = BaselineOnly()
algo.fit(trainset)

uid = str(196)  # raw user id (as in the ratings file). They are **strings**!
iid = str(302)  # raw item id (as in the ratings file). They are **strings**!

# get a prediction for specific users and items.
pred = algo.predict(uid, iid, r_ui=4, verbose=True)

输出结果:

Estimating biases using als...
user: 196        item: 302        r_ui = 4.00   est = 4.20   {'was_impossible': False}

 

最后

以上就是美好发箍为你收集整理的推荐算法之BaselineOnly算法(Python实现)的全部内容,希望文章能够帮你解决推荐算法之BaselineOnly算法(Python实现)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部