我最近想知道 http://500px.com 如何计算他们的"脉冲"评级。"脉冲"是根据照片的受欢迎程度从 1..100 开始的分数。
我认为它可能会使用以下一些标准:
- 点赞数
- "收藏夹"的数量
- 评论数
- 总观看次数
- 也许是照片上传后的时间
- 也许还有其他一些不明显的标准,例如用户关注者数量,用户排名,相机型号或类似标准
我将如何实现这样的算法?
关于如何使用此标准(也许还有一些代码)实现算法的任何建议也将不胜感激。
我对这个网站不太了解,但像这样的系统通常以相同的方式工作。规范化一组加权值以生成单个可比较值。
定义规则列表,根据重要性对它们进行加权,然后将它们一起运行以获得最终值。
在这种情况下,它将是这样的。
- 总访问次数 = 10%
- 总赞数 = 10%
- 推荐次数/点赞次数=40%(热度=喜欢它的访问者百分比)
- 过去 30 天内的赞数 = 20%(当前受欢迎程度)
- 作者评分 = 20%
现在我们需要规范化这些规则的值。根据您的数据、数字比例等,每个规则都会有所不同,因此我们需要一个可行的值,例如在 1 到 100 之间。
上述规范化示例:
-
= 50,000 个可视化中访客的百分比(良好的可视化数量)
(vists / 50000 ) * 100
-
= 10,000 个赞中的点赞百分比(良好的点赞数)
(likes / 10000) * 100
-
= 喜欢它的访客百分比
(likes / vists) * 100
= 过去 30 天内 的赞数占 1000 个赞的百分比(30 天内的点赞数)
(likesIn30Days / 1000) * 100
= 作者的任意评级
确保所有这些的最大值为 100(如果超过,请将其恢复)。然后我们需要根据它们的权重将所有这些组合起来:
受欢迎程度 = (1 * 0.1) + (2 * 0.1) + (3 * 0.4) + (4 * 0.2) + (5 * 0.2)
这一切都是我的头顶和粗糙的。显然还有更有效的方法,因为您不需要在每个阶段都标准化为百分比,但我希望它可以帮助您了解要点。
更新
我真的没有任何参考资料或额外的阅读。我从来没有真正把它作为一个更大的概念来处理过,只在小的实现中。
我认为你读到的大部分内容都是一般的方法论排名系统和理论。因为根据您的规则和数据格式,您的实现将大不相同。这似乎是一个很大的概念,但实际上它可能会归结为围绕 10 行代码,这还不包括聚合您的数据。
还需要参考以下内容
- Reddit排名算法的工作原理
- 黑客新闻排名算法的工作原理
- 如何构建您可以引以为豪的流行度算法
> 500px在他们的博客中解释了他们(同时过时的)脉冲排名算法:https://500px.com/blog/52/how-rating-works-and-why-there-s-a-lot-more-to-a-rating-than-just-a-number
非常有趣,与SO上迄今为止建议的解决方案不同。