algorithm - 推荐系统和基线预测器

标签 algorithm linear-algebra recommendation-engine predict

我有一堆数据,第一列代表用户,第二列是电影,第三列是十分评级。

0 0 9
0 1 8
1 1 4
1 2 6
2 2 7

我必须预测另一组数据(用户、电影、?)的第三个数字:

0 2
1 0
2 0
2 1

我使用这种方式来查找偏差值 https://youtube.com/watch?v=dGM4bNQcVKI这种预测方式 https://www.youtube.com/watch?v=4RSigTais8o .

用户编号 0 的偏差值:9 + 8/2 = 8.5 - 1.5 = 7

enter image description here

第 2 部电影的偏差值:6 + 7/2 = 6.5 - 1.5 = 5

enter image description here

和基线预测:

https://intern.contest.yandex.ru/testsys/tex/render/XGhhdCByX3t1bX0gPSBcbXUgKyBiX3UgKyBiX20s.png

1.5 + 7 + 5,其中结果是 13.5,但比赛结果是:7.052009

但是问题描述说我的推荐系统的结果应该是:

0 2 7.052009
1 0 6.687943
2 0 6.995272
2 1 6.687943

我的错误在哪里?

最佳答案

原始平均值是所有当前分数的平均值 ((9+8+4+6+7)/5 = 6.8),我在任何地方都看不到这个数字,所以我猜这是你的错误。

在视频中,Prof. 在所有计算中都使用了 3.5 的原始平均值,包括计算偏差,他跳过了如何达到该数字,如果您将视频表格中的所有数字相加并相除,您将得到 3.5。

0 2 9.2 是第一个答案,以您的视频为指导。视频声称避免了微积分,比赛的不同最终答案可能来自使用“完整”方法。

0 2 ?,用户 0(第 0 行:9 8 x),电影 2(第 2 列:x 6 7)

raw average = 6.8
bias user 0: (9+8) / 2 - 6.8 = 1.7
bias movie 2: (6+7) / 2 - 6.8 = -0.3
prediction: 6.8+1.7-0.3 = 8.2

这个问题看起来像是 Netflix 竞赛的一个变体,竞赛的主持人知道实际的答案(收视率),他不会给你答案,你应该猜测/预测他们,竞赛的获胜者是最接近实际答案的那个。

你比赛的获胜者最接近,但他使用未知方法到达那里,或者他自己知道方法的变体,如果你的目标是完全匹配他的答案,你最好问他用了什么方法以及他是如何修改它的,并尝试复制他的结果。

如果这是家庭作业而不是比赛,那么老师会希望你使用他教给你的“正确”方法(没有固定的方法,只有许多不同准确度的方法),你必须使用就像他教你的一样。但这是一场竞赛,您的目标是找到一种接近最佳的基本方法(您使用的方法精度非常低),并稍微修改一下以获得更好的结果。

如果您想了解链接,我建议您先研究一下,然后再问一个统计问题,因为它只是简单的统计数据。您可以尝试了解链接或自行研究矩阵分解。请记住,要获得(或关闭)比赛获胜结果,您将无法使用像在 youtube 视频中找到的那种简单方法,而是需要一种包含更多数学知识的方法。

关于algorithm - 推荐系统和基线预测器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29338183/

相关文章:

wpf - 关于在不使用MVVM或类似的情况下开发WPF应用程序的建议

ruby - 就地快速排序 - Ruby

algorithm - 再现具有原始形状的图像。 (图形优化问题)

algorithm - 给定一个包含 2n 个元素的数组,其中 n 个相似,n 个不同

创建基于矢量的拼图的算法

python - 矩阵分解如何帮助填充新用户的稀疏效用/评级矩阵?

hadoop - 首选推荐系统

c++ - 如何用单向链表实现一个队列,使其 ENQUEUE 和 DEQUEUE 的时间复杂度为 O(1)?

python - 闭式岭回归

matlab - 在上矩阵上用 1s 对角线进行 LU 分解