我想知道如何找出上升的单词(类似于reddit的上升线程排序选项)。我所说的上升是成为流行。上升最快的是什么。示例:
PS:-
,^
和v
就是单词移动的方式。 (a)
和(b)
也不是单词的一部分。我只是以这种方式展示他们的独特性
上午10:00,我有此列表,处于此级别
1. Cool (a) -
2. Best -
3. Cool (b) -
4. Radical (a) -
5. Sweet (a) -
6. Sweet (b) -
7. Radical (b) -
然后在上午10:15(15分钟后),列表顺序更改。
1. Best ^
2. Cool (a) v
3. Radical (a) ^
4. Sweet (a) ^
5. Cool (b) v
6. Radical (b) ^
7. Sweet (b) v
然后在上午10:30(15分钟后),列表顺序再次更改。
1. Best -
2. Radical (a) ^
3. Sweet (a) ^
4. Cool (a) v
5. Radical (b) ^
6. Sweet (b) ^
7. Cool (b) v
如您所见,Cool
一词显然是受欢迎程度的下降。目前,我的算法(我觉得这很愚蠢,但我想不出其他任何方式)。
我现在的操作方式是:
+ num
)或下移(- num
)或不移动0
的排名。从技术上讲,这给了我一个评价。 Ranks moved per 15 minutes
Cool
),那么我将得出平均汇率。尽管我觉得这不是很好(甚至没有任何意义)。当然,它也不会考虑任何历史数据,而只会考虑每15分钟收到的新数据。
我的问题是,我该如何找出最上面的单词,最下面的单词以及它们之间的所有单词。
答案 0 :(得分:0)
如果要考虑历史数据,可以使用某些功能来减少较旧更改的数据权重。该函数可能是指数,它衰减很快:
mobility_contribution <- ifelse(combined_data$mobility==1,0,ifelse(combined_data$mobility==2,0.058,ifelse(combined_data$mobility==3,0.076,ifelse(combined_data$mobility==4,0.207,0.274))))
此代码使用risingRate = 0
for i = 0:n
risingRate += e^(-i) * RankChange(curr - i)
end
return risingRate
个单词的最后记录来计算其上升率。
每一步的系数为:
n + 1
这些系数为最新系数分配更大的权重。您可能想要的是什么。
您可以使用 0: 1
1: 0.367879
2: 0.135335
3: 0.0497871
4: 0.0183156
5: 0.00673795
6: 0.00247875
7: 0.000911882
8: 0.000335463
9: 0.00012341
10: 4.53999e-05
调整衰减率。