计算最受欢迎课程的算法

Posted

技术标签:

【中文标题】计算最受欢迎课程的算法【英文标题】:Algorithm to calculate most popular courses 【发布时间】:2017-01-04 13:24:39 【问题描述】:

我正在尝试获取有关学习门户上列出的课程的一些统计数据。其中之一是,根据以下三个因素获得 4 个最受欢迎的课程:

课程订阅人数 平均评分 评论数

我已经考虑了很长一段时间的解决方案,但无法提出实现上述目标的最佳方法。

谁能建议我如何使用这些因素来获得最准确的热门课程数据?

非常感谢任何帮助。

谢谢

【问题讨论】:

向我们展示您的方法。 正确的方法只是见仁见智。例如,一门有 1000 名订阅者且平均评分为 4/5 和 20 条评论的课程。这比拥有 900 名订阅者的用户更好还是更差,5/5 av。评分和 5 条评论?没有绝对正确/错误的答案。 @PaulHankin 我理解这只是一个见仁见智的问题,但仍想了解 coursera、udemy 等学习门户如何根据这些因素展示热门课程? 【参考方案1】:

在给你一些关于它的主观公式之前,我想指出一些关于bayesian statistics 以及IMDb rates films 的链接

在您的用例中,您如何为单组参数选择权重似乎是非常主观的。你没有太多的参数可以玩。例如,您有很多评论……但这是否意味着所有评论都是好评论?

【讨论】:

没有。评论数量是指所有类型的评论。【参考方案2】:

我会这样做:

    将订阅者、评分和评论放在 3 个单独的列表中 使用 max() 之类的函数在列表中找到最大值,然后从列表中删除该值,重复 4 次,每次将最大值添加到新列表中(如果需要) 为每个列表执行此操作

另外,您使用的是什么语言?我知道这对我有用,但可能会因语言而略有不同

【讨论】:

【参考方案3】:

你可以试试这个公式 ->

popularity = 50*((NumSub/maxNumSub) + (RateAvg/RateMax)*(NumReview/NumSub))

这里,

NumSub = Number of Subscribers in the Course.
maxNumSub = Maximum Number of Subscribers in all the Courses.
RateAvg = Average Rating of the Course.
RateMax = The Highest rating a course can get.
NumReview = Number of reviews of the course.

因此,您将从100 中获得popularity 的值。

e.g:

让我们假设,对于一门课程,

NumSub = 80
maxNumSub = 100
RateAvg = 4.5
RateMax = 5
NumReview = 24

所以,根据公式,

popularity = 50 * ((80/100) + (4.5/5)*(24/80))
           = 50 * (0.8 + 0.9*0.3)
           = 53.5

因此,该课程的人气值为53.5

【讨论】:

以上是关于计算最受欢迎课程的算法的主要内容,如果未能解决你的问题,请参考以下文章

世界上最受欢迎的在线课程 获得美国四个国家科学院院士的顶级课程 学会如何学习Learning How to Learn - Barbara Oakley

世界上最受欢迎的在线课程 获得美国四个国家科学院院士的顶级课程 学会如何学习Learning How to Learn - Barbara Oakley

世界上最受欢迎的在线课程 获得美国四个国家科学院院士的顶级课程 学会如何学习Learning How to Learn - Barbara Oakley

最受欢迎计算思维启蒙(C++)寒假营开始报名啦?!

mapreduce课上实验

MapReduce清洗数据进行可视化