问题标签 [ranking-functions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
178 浏览

sql - 按首字母将名称列表分区到文件夹中

给定一组数据,例如:

,我想创建按首字母对其进行分区的虚拟文件夹。例如,我想传递7给一个函数并获取 7 个文件夹,例如:

  • 交流电
  • 东风
  • 生长激素
  • 我是
  • NQ
  • RS
  • 太极

…其中每个都包含各自的值(例如T-Z将包含Zzz)。我发现我可以用NTILE()它来相当接近预期的结果:

要添加所需的值,我正在做另外两个连接:

…这似乎有点低效。

但这也是错误的:存在重叠(例如,字母P同时出现在J-P和中P-T)。

我在正确的轨道上吗?有没有更有效的方法?如何防止重叠?

0 投票
1 回答
888 浏览

math - 体育评分库

我正在考虑实施体育评级/排名系统(即根据每个球员或球队在体育比赛中的表现给他们一个评级)。

我一直在研究各种算法,例如:

我没有选择我将使用的算法——它可能是 Glicko 变体之一。但是,一个重要的因素是是否有现有的库来实现它们;写一个数学库需要我很长时间才能正确,我希望有一个快速的开始。

我不是在寻找 GUI,只是在寻找库。开源将是完美的,像啤酒一样免费会很好,但也可以考虑商业选择。Python 将是理想的,但将考虑其他语言。

谁能推荐我应该看的任何图书馆?

0 投票
1 回答
1077 浏览

correlation - Spearman相关系数差异的显着性检验

我得到了一组人工评分的排名(HUMAN-RANKING),一组由目前使用的流行方法生成的排名(PRESENT-RANKING),最后是一组由我的目的方法生成的排名(MY-RANKING) .

我计算了 HUMAN-RANKING 和 PRESENT-RANKING 之间的 Spearman 相关性。让我称之为:人类-现在-长矛。

然后我发现了斯皮尔曼在 HUMAN-RANKING 和 MY-RANKING 之间的相关性。让我称之为:人-我-斯皮尔曼。

如何确定 HUMAN-MY-SPEARMAN 和 HUMAN-PRESENT-SPEARMAN 之间的差异是否具有统计显着性?

提前致谢。

0 投票
1 回答
2157 浏览

python - 有效地确定列表的“排序方式”,例如。莱文斯坦距离

我正在对排名算法进行一些研究,并希望给定一个排序列表和该列表的一些排列,计算两个排列之间的一些距离。对于 Levenshtein 距离的情况,这对应于计算序列与该序列的排序副本之间的距离。还有,例如,“反演距离”,这里详细介绍了一种线性时间算法,我正在努力实现它。

有谁知道反转距离的现有 python 实现,和/或 Levenshtein 距离的优化?我正在对大约 50,000 到 200,000 个元素的序列进行计算,所以 O(n^2) 太慢了,但 O(n log(n)) 或更好就足够了。

置换相似性的其他度量也将受到赞赏。


为未来的人编辑:

基于Raymond Hettinger 的回应;这不是 Levenshtein 或反转距离,而是“格式塔模式匹配”:P

在糟糕的桌面上运行约 6 秒。

Edit2:如果您可以将您的序列强制转换为 [1 .. n] 的排列,那么曼哈顿度量的变化非常快并且有一些有趣的结果。

归一化因子在技术上是一个近似值;(0.5 * (len(l) ** 2 - 1))对于偶数大小的列表是正确的,但对于奇数大小的列表应该是正确的。

Edit3:还有其他几种检查列表相似性的算法!Kendall Tau排名系数和Spearman排名系数。这些的实现在SciPy库中作为scipy.stats.kendalltau和可用scipy.stats.rspearman,并将返回排名以及相关的 p 值。

0 投票
4 回答
649 浏览

scalability - Web 应用程序的可扩展时间衰减

我的目标是生成一个类似于reddit首页的系统。

我有东西,为了简单起见,这些东西有投票权。我生成的最好的系统是使用时间衰减。7天半衰期,如果今天一票20分,7天后10分,14天后5分。

问题是,虽然这产生了我非常满意的结果,但它并没有扩展。每一次投票都需要我有效地重新计算每一次投票的价值。

所以,我想我也许可以扭转这个想法。今天的投票值 1 分。从现在起 7 天后的投票值 2 分,从现在起 14 天后的投票值 4 分,以此类推。这很有效,因为每次投票,我只需要更新一行。问题是,到今年年底,我需要一个可以容纳大量数字的数据类型。

所以,我尝试使用产生糟糕排名的线性增长。我尝试了多项式增长(将网站启动和提交后的天数平方和立方),它产生了稍微好一点的结果。然而,当我得到稍微好一点的结果时,我很快就会重新接近无法维护的数字。

所以,我来找你stackoverflow。谁有一个天才的想法或链接到如何对该系统建模以便它可以很好地扩展到 Web 应用程序的想法。

0 投票
2 回答
5661 浏览

algorithm - 排名算法比较“排名”

是否有一种算法允许根据这些项目在两个排名中的位置差异对项目进行排名,但也可以对位置进行“加权”,例如,从位置 2->1 移动的玩家的排名应该高于从9-> 8。

玩具示例,我有两个列表/等级:

排名 1:

  1. 玩家a
  2. 玩家 b
  3. 玩家 c
  4. 球员德...

等级 2:

  1. 玩家 d
  2. 玩家 c
  3. 玩家a
  4. 玩家乙...

我正在考虑用平均排名(或其他值)“加权”排名差异,例如,如果玩家从 9->8 排名,则用于排名的值将是 (9-8)/avg(8,9 ) = 1/8,5。

0 投票
1 回答
613 浏览

sql-server-2008 - 如何平铺跨边界均匀分布的数据

我有一组基于时间的记录,我需要将它们加载到用于暂存数据的分区表中。舞台表按天分区。为了提高效率,我已将数据负载分布到多个“处理器”(SSIS 中的流)中的阶段表中。暂存数据后,我会在加载到数据集市之前执行一系列重复数据删除操作。但是,我的挑战是暂存数据在处理器之间分布不均,因为我在按日期分区的集合中使用 NTILE 函数。

所以我可能会看到 5 个处理器的以下分布......

数据量呈指数增长,因此尽管处理器 4 在今天加载时只有 6,000,000 个,但一旦填充了整个范围,处理器 4 可能总共处理 8,000,000 多行(记录)。

我的目标是根据行数在处理器之间平均分配工作,同时确保任何两个处理器都不会竞争同一个分区(天)。

所以,作为一种视觉效果,分布需要看起来像这样......

任何反馈将不胜感激。

0 投票
2 回答
442 浏览

sql - 使用排名函数查找重复出现

请帮助我生成以下我一直在努力解决的查询。假设我有一个简单的表,其中包含月份编号和该特定月份是否有任何失败事件的信息

下面是生成示例数据的脚本:

鉴于“重复失败”的定义:

如果在任何 6 个月期间至少 4 个月内发生事件失败,那么最后一个月出现此类失败是“重复失败”,我的查询应返回以下输出

在哪里:

  • R1 在第 6 个月中 -1 次重复失败(过去 6 个月中出现 4 次失败)。
  • R2 -第 7 个月的第 2 次重复失败(过去 6 个月中的 4 次失败)。
  • R3 第 11 个月 -3 次重复失败(过去 6 个月内失败 4 次)。

R1 - 在第 18 个月再次出现第 1 次重复故障,因为在过去 6 个报告期中第一次发生新的重复故障时,重复故障应从头开始重新编号

重复失败是连续计算的,因为我必须根据它的数量应用适当的乘数:

  • 第一次重复失败 - X2
  • 第二次重复失败 - X4
  • 第三次和更多重复失败-X5。
0 投票
1 回答
574 浏览

sql - top_n_rank 全文搜索问题

这是关于top_n_by_rank全文搜索的参数。

我有一个查询,假设:

在这里,我给了top_n_by_rank = 100. 这应该给我排名最高的 100 条记录。但我只得到 61 条记录。当我删除top_n_rank参数时,它给了我超过 1000 条记录。

我的问题是,top_n_by_rank参数是否仅搜索前 100 条记录,还是搜索所有记录并仅获得前 100 条搜索结果?

0 投票
1 回答
970 浏览

sql - 获取组中的记录位置+每条记录上组的记录数

我在 SQL Server 2008 的临时表中有一个结果集。其中一个字段是组 ID,对于每个组,我可以有任意数量的行。我想在新列中获取组中行的位置,例如“第 1 行,共 3 行”所以,如果我有临时表 #Data(GroupId int, Item char)

我想得到

我设法做到了

但我对此不太满意,因为查询实际上有点复杂,因为我实际上必须检索所有列,并且因为与自身进行内部连接以获取组行数和要获取的分区行位置似乎太多了。有没有更简单的方法来做到这一点?


我没有完全使用蒂姆的答案,但它向我展示了方式: