Algorithm 以编程方式确定相对;“大众性”;项目列表(书籍、歌曲、电影等)
给出一个歌曲列表,确定它们相对“受欢迎程度”的最佳方法是什么 我的第一个想法是使用谷歌趋势。此歌曲列表:Algorithm 以编程方式确定相对;“大众性”;项目列表(书籍、歌曲、电影等),algorithm,statistics,Algorithm,Statistics,给出一个歌曲列表,确定它们相对“受欢迎程度”的最佳方法是什么 我的第一个想法是使用谷歌趋势。此歌曲列表: 地下思乡病 帝国心态 加利福尼亚古尔斯 生成以下内容:(为了找出现在流行的内容,我将报告限制在最后30天内) 《帝国精神状态》的流行程度略高于《加利福尼亚古尔斯》,而《地下思乡布鲁斯》则远不及这两部 所以这很有效,但是当你的列表有100或1000首歌曲时会发生什么呢?谷歌趋势只允许你一次比较5个术语,所以如果没有一个大循环,正确的方法是什么 另一种选择是在谷歌上搜索每首歌,看看哪首歌的搜索
另一种选择是在谷歌上搜索每首歌,看看哪首歌的搜索结果最多,但这并不能真正衡量同一件事,你可以在推特上搜索这个项目,看看它被提及了多少次。或者在亚马逊上查询一下,看看有多少人对它进行了评论,以及他们对它的评价。Twitter和亚马逊都有api。有一个非官方的谷歌趋势api。看,我没有使用它,但也许它有一些帮助。我当然会将谷歌的API称为“受限” 通常,用于排序算法的比较函数非常“二进制”:
- 投入:2个要素
- 输出:真/假
- 投入:5个要素
- 输出:每个元素的相对权重
ceil((N-1)/4)
调用。您可以并行化,但请仔细阅读用户指南,了解您有权提交的请求数量
然后,一旦所有这些都被“评级”,你就可以在本地进行简单的排序
直觉上,为了正确地收集它们,您应该:
- 洗牌
- 弹出前5个元素
- 调用API
- 在结果中插入已排序的对象(此处使用插入排序)
- 拿起中位数
- 弹出前4个元素(如果可用的元素较少,则弹出的元素较少)
- 首先使用中间值和这4个值调用API
- 返回“插入”,直到元素用完为止
如果你的单子上有1000首歌,250个API调用,没什么可怕的。好问题——布兰妮·斯皮尔斯的一首歌可能会流行2个月,然后(谢天谢地)被遗忘,而埃尔维斯的另一首歌可能会持续流行30年。如何从数量上区分这两者?我们知道,我们想认为,持续的人气比“昙花一现”更重要,但如何才能得到这个结果呢 首先,我会在发行日期前后正常化——地下思乡忧郁现在可能不受欢迎(虽然不是在我家),但回到1965年正常化可能会产生不同的结果 由于大多数歌曲的受欢迎程度都在上升,趋于平稳,然后又在下降,所以让我们在它们趋于平稳时选择一个区域。有人可能会假设,在这段时间内,这两个序列是平稳的、不相关的和正态分布的。现在,您可以应用一个测试来确定方法是否不同 可能有一些限制性较小的测试来确定两个时间序列之间的差异大小,但我还没有遇到过它们 有人吗