微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

计数相关性/加权算术平均值 SQL

如何解决计数相关性/加权算术平均值 SQL

我有一张电影表和一张评论

movies

reviews

在我的应用中,我想展示任何类型的前 10 部电影。

我显然不能仅按评分对电影进行排序,因为有些电影只有 1 个 5 星评价,因此只会向用户推荐不相关的电影。

目前,我从 DB 收到按评论排序的该类型前 100 部电影,在服务器上按评级排序此列表,然后才显示前 10。

这有点奏效,但这种解决方案在例如的情况下是不切实际的。评论轰炸,此外,前 10 名的目的是推荐最​​相关的电影。

我的想法是将相关性列添加到电影表中,但我不知道如何计算它:

  1. (5 星评价数量 * 5 )+(4 星评价数量 * 4 )等等 - 否
  2. (5 星评价的数量 * 1)+(4 星评价的数量 * 0.8)+ ... +(0 星评价的数量 * 0.1) - 否
  3. 评论数 / 平均 - 无
  4. ((5 星评价数量 * 5 )+(4 星评价数量 * 4 )等等)/评价总数 - mb,我不确定 0 怎么样

此外,评分中的评分不是真实数字。用户只能给出 5、4.5、4 等评分。但是用户可以给电影打5、4.9、4.8 ... 0.1这样的情况呢?

那么,如何更好地执行此操作?

[Upd] 我认为不是分工。我们应该将 averageratingreviewsmovies 相乘以计算相关性(averageratingreviews 已经在每次插入/删除/更新时自动更新) .我们也应该尝试对产品进行标准化。

在这种情况下,有 100 条评论的 5 条和 averagerating 条 5 的电影不会打败具有 averagerating 3.8 但有 57k 条评论的电影,而且评论轰炸的问题也将得到解决

>

谁能证明我的猜测?

解决方法

我同意@NickW 的观点,即这更像是一个统计问题而不是一个编程问题,但无论如何我会尽力回答。

如果您想同时考虑平均评分和评分数量,一个简单的方法是将两者相乘。这为您提供了所有评分的总和,但是,正如@qwezxc789 所指出的,这并没有考虑零评分的数量。另一种策略可能是 avgratingreviews 的线性组合。共线性不应该是一个问题,因为这两个变量都不依赖于另一个。您甚至可以使用线性系数来改变每个变量的相对贡献。这个解决方案很容易推广到 n 个自变量。

wi 为预测变量 i 的权重,1 ≤ in,w1 + ... + wn = 1(或任何其他常数,但为什么不使用 1?)。

您可以使用以下 SQL 将此值添加为 relevance 表中的新 movies 列。我使用两个同等加权的预测变量:ratingsreviews

ALTER TABLE movies ADD [relevance] AS
(SELECT 0.5 * avgrating + 0.5 * reviews
FROM movies)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。