Най-ефективната мярка за сходство за класирани в списък елементи

Опитваме се да намерим сходство между елементи (и по-късни потребители), където елементите са класирани в различни списъци от потребители (помислете за Роб, Бари и Дик в Здравей Fidelity). По-нисък индекс в даден списък предполага по-висок рейтинг.

Предполагам, че стандартният подход би бил да се използва корелацията на Pearson и след това да се обърнат индексите по някакъв начин.

Въпреки това, както разбирам, целта на корелацията на Pearson е да компенсира разликите между потребителите, които обикновено оценяват нещата по-високо или по-ниско, но имат подобни относителни оценки.

Струва ми се, че ако списъците са непрекъснати (макар и с произволна дължина), не е проблем, че оценките, подразбиращи се от позицията, ще бъдат изкривени по този начин.

Предполагам, че в този случай евклидово базирано сходство би било достатъчно. такъв ли е случаят Дали използването на корелацията на Pearson би имало отрицателен ефект и би ли намерила корелация, която не е подходяща? Каква мярка за сходство може да отговаря най-добре на тези данни?

Освен това, въпреки че искаме позицията в списъка да има ефект, ние не искаме да наказваме класациите, които са твърде далеч едно от друго. Двама потребители, и двамата представящи елемент в списък с много различно класиране, все още трябва да се считат за подобни.


person Tom Martin    schedule 17.10.2012    source източник


Отговори (2)


Сходството на Jaccard изглежда по-добре във вашия случай. За да включите ранга, който споменахте, можете да използвате подхода на торба с предмети.

Използвайки вашия пример за (Rob, Barry, Dick), като тяхната оценка е съответно (3,2,1), вмъквате Rob 3 пъти в чантата на този потребител a.

Rob, Rob, Rob.

Тогава за Barry го правите два пъти. Настоящата чанта изглежда по-долу,

Rob, Rob, Rob, Barry, Barry.

Най-накрая сложихте Dick в чантата.

Rob, Rob, Rob, Barry, Barry, Dick

Да предположим, че друг потребител b има чанта от [Dick, Dick, Barry], вие изчислявате подобието на Jaccard по следния начин:

  • Пресечната точка между a и b = [Dick, Barry]
  • Обединението на a и b = [Rob, Rob, Rob, Barry, Barry, Dick, Dick]
  • Сходството на Джакард = 2/7,

това е броят на елементите в пресечната точка, разделен на броя на елементите в обединението.

Тази мярка за подобие НЕ наказва класациите, които са далеч едно от друго. Можете да видите, че:

Двама потребители, и двамата представящи елемент в списък с много различно класиране, все още трябва да се считат за подобни.

person greeness    schedule 30.10.2012

Най-известният показател за сходство, базиран само на класиране, е корелацията на Спирман. Той просто присвоява "1" на първия елемент, "2" на втория и така нататък и изчислява (Pearson) коефициент на корелация. (Можете да направите стойностите също низходящи, което е по-интуитивно -- няма да има значение за корелацията на Pearson.)

Корелацията на Spearman е внедрена в проекта, но въпреки това не мисля, че е много полезна.

Tau ранг е по-принципиална мярка за това доколко класираните списъци съвпадат, но не се прилага. Няма да е трудно.

person Sean Owen    schedule 30.10.2012
comment
Заинтригуван съм от Тау ранга. Изглежда перфектно, но съм загрижен за сложността му. Тъй като трябва да сравните всички възможни чифтове на елементи, има много повече работа за вършене на двойка потребители. Може би ще пострада при по-плътни набори от данни? - person Tom Martin; 30.10.2012
comment
Разглеждането само на артикули в най-високите оценки на всеки потребител или произволно вземане на проби от скромен брой двойки трябва бързо да даде разумно приближение. Нямам практически опит с този показател, само моите предположения тук. - person Sean Owen; 31.10.2012