概述
要评估一个策略的好坏,就需要建立一个对比基线,以便后续观察算法效果的提升。
而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实现)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复