我是靠谱客的博主 美好发箍,这篇文章主要介绍推荐算法之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代码实现:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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)

输出结果:

复制代码
1
2
Estimating biases using als... user: 196 item: 302 r_ui = 4.00 est = 4.20 {'was_impossible': False}

 

最后

以上就是美好发箍最近收集整理的关于推荐算法之BaselineOnly算法(Python实现)的全部内容,更多相关推荐算法之BaselineOnly算法(Python实现)内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部