Шукаємо алгоритм ранжування, який надає перевагу новішим записам


9

Я працюю над системою ранжування, яка оцінюватиме записи на основі голосів, поданих протягом певного періоду часу. Я шукаю алгоритм, який розраховує оцінку, яка є якоюсь середньою, однак я б хотів, щоб він віддав перевагу новішим балам порівняно зі старшими. Я думав про щось по лінії:

score1+ 2score2 + + nscoren1+2++n

Мені було цікаво, чи існують інші алгоритми, які зазвичай використовуються в таких ситуаціях, і якщо так, чи можете ви пояснити їх?



2
А як щодо середньозваженої ковзної середньої? en.wikipedia.org/wiki/Moving_average#Weighted_moving_average
Джо

Відповіді:


7

Ви можете використовувати будь-яку функцію, яка надає меншу вагу старим записам. Наприклад, якщо дані складаються з балів,s1,,sn, де індекс відповідає "часу прибуття" запису, тобто новіші записи мають більші індекси, то ви можете використовувати вагову функцію, яка збільшується як iзбільшується. Тож будь-яка функція "збільшення" буде діяти. Приклади включають:

  • f(x)=ex
  • f(x)=logx
  • f(x)=x
  • f(x)=x2

тощо.

Тоді ваша функція буде

i=1nsif(i)i=1nf(i).

Насправді, має сенс надати найновішому запису найнижчий показник і зменшити вагову функцію. Таким чином ви можете налаштувати його, встановивши зважування, яке ви хочете надати першому елементу.

У Вікіпедії є запис про вагові функції , деякі приклади можна знайти на сторінці про зважені засоби .


велике дякую, саме це я шукав. Дуже інформативний
Logan Besecker

У мене є одне швидке запитання, я знаю, що ''i' - це сума 'i', а 'f (i)' є функцією (як 'f (x) = logx') стосовно 'i'. Але що собою являє 'si'? велике спасибі за вашу допомогу
Logan Besecker,

1
siваші бали.
Дейв Кларк
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.