DCG [Discount Cumulative Gain] и nDCG [нормализованная DCG] обычно являются хорошей мерой для ранжированных списков.
Это дает полное усиление для соответствующего документа, если он занимает первое место, и усиление уменьшается с уменьшением ранга.
Использование DCG / nDCG для оценки системы по сравнению с базовой линией SOA:
Примечание. Если вы установите все результаты, возвращенные "современной системой", как соответствующие, то ваша система будет идентична уровню техники, если они получили одинаковый ранг с использованием DCG / nDCG.
Таким образом, возможная оценка может быть: DCG(your_system)/DCG(state_of_the_art_system)
Чтобы дополнительно улучшить его, вы можете дать оценку релевантности [ релевантность не будет двоичной ] - и будет определяться в зависимости от того, как каждый документ был ранжирован в соответствии с уровнем техники. Например, rel_i = 1/log(1+i)
для каждого документа в современной системе.
Если значение, полученное с помощью этой функции оценки, близко к 1: ваша система очень похожа на базовую линию.
Пример:
mySystem = [1,2,5,4,6,7]
stateOfTheArt = [1,2,4,5,6,9]
Сначала вы даете оценку каждому документу в соответствии с современной системой [используя формулу сверху]:
doc1 = 1.0
doc2 = 0.6309297535714574
doc3 = 0.0
doc4 = 0.5
doc5 = 0.43067655807339306
doc6 = 0.38685280723454163
doc7 = 0
doc8 = 0
doc9 = 0.3562071871080222
Теперь вы вычисляете DCG(stateOfTheArt)
и используете релевантность, как указано выше [примечание релевантность здесь не является двоичной, и вы получаете DCG(stateOfTheArt)= 2.1100933062283396
Далее рассчитайте его для вашей системы , используя те же веса отклика и получите: DCG(mySystem) = 1.9784040064803783
Таким образом, оценка составляет DCG(mySystem)/DCG(stateOfTheArt) = 1.9784040064803783 / 2.1100933062283396 = 0.9375907693942939