Learning to rank: RankLib Krzysztof Pawlak, Jakub Sobieski
Spis Treści 1) Wprowadzenie Machine learning, Learning to rank 2) Lemur Project 3) RankLib 4) Omówienie algorytmu AdaRank 5) Przykład działania a) Transformacja danych b) Uczenie c) Tworzenie rankingów d) Dane konkursowe e) Porównywanie algorytmów
Wprowadzenie Machine Learning Uczenie maszynowe - praktyczne zastosowanie dokonań w dziedzinie sztucznej inteligencji do stworzenia automatycznego systemu potrafiącego doskonalić się przy pomocy zgromadzonego doświadczenia (czyli danych) i nabywania na tej podstawie nowej wiedzy. (Wikipedia) Początkiem uczenia maszynowego może być projekt Arthura Samuela z firmy IBM, który w latach 1952-1962 rozwijał program do szkolenia zawodników szachowych. Przykłady zastosowań: analiza i użytkowanie olbrzymich baz danych, dostosowywanie się systemu do środowiska, systemy eksperckie, wyszukiwarki internetowe, oprogramowanie do rozpoznawania mowy, automatyczna nawigacja i sterowanie.
Wprowadzenie Learning to rank Learning to rank czy machine-learned ranking (MLR) jest zastosowaniem uczenia maszynowego do konstrukcji modelów rankingowych i systemów wydobywania informacji. Wykorzystywanie wydobywania dokumentów/informacji w wyszukiwarkach internetowych, do automatycznego konstruowania modeli rankingowych, przy wykorzystaniu zbiorów treningowych i testowych.
Spis Treści 1) Wprowadzenie Machine learning, Learning to rank 2) Lemur Project 3) RankLib 4) Omówienie algorytmu AdaRank 5) Przykład działania a) Transformacja danych b) Uczenie c) Tworzenie rankingów d) Dane konkursowe e) Porównywanie algorytmów
Lemur Project http://sourceforge.net/projects/lemur/ Powstał poprzez współpracę University of Massachusetts i Carnegie Mellon University. Dostarcza zbiór open-source funkcjonalności do modelowania językowego i wydobywania informacji. Wspiera wiele technologii jak ad-hoc retrieval, site-search i text mining. Zawiera także moduł wyszukiwania Indri, który wspiera indeksowanie dużych baz tekstowych, tworzenie prostych modelów językowych dla dokumentów, zapytania, implementacje systemów wydobywania opartym na modelach językowych itp. Napisany w C i C++, zaprojektowany jako system wyszukiwania pod systemu UNIX, ale może być uruchomiony także pod Windows.
Spis Treści 1) Wprowadzenie Machine learning, Learning to rank 2) Lemur Project 3) RankLib 4) Omówienie algorytmu AdaRank 5) Przykład działania a) Transformacja danych b) Uczenie c) Tworzenie rankingów d) Dane konkursowe e) Porównywanie algorytmów
RankLib Biblioteka zawarta w Lemur Project, zawiera algorytmy learning to rank. Aktualnie zaimplementowanie algorytmy: MART (Multiple Additive Regression Trees, a.k.a. Gradient boosted regression tree) [6] RankNet [1] RankBoost [2] AdaRank [3] Coordinate Ascent [4] LambdaMART [5] ListNet [7] Random Forests [8]
Spis Treści 1) Wprowadzenie Machine learning, Learning to rank 2) Lemur Project 3) RankLib 4) Omówienie przykładowego algorytmu AdaRank 5) Przykład działania a) Transformacja danych b) Uczenie c) Tworzenie rankingów d) Dane konkursowe e) Porównywanie algorytmów
Omówienie przykładowego algorytmu AdaRank Jest to algorytm typu listwise, buduje model rankingowy przez wykorzystanie podejści teorii Boosting. Teoria boosting opiera się na koncepcie słabych i mocnych ranker'ów Słabi ranker'zy są słabo związani z prawdziwą klasyfikacją. Mocni ranker'rzy są za to mocno związani. Paradygmat teorii Boosting wiąże się z stworzeniem jednego silnego ranker'a poprzez kombinacje zestawu słabych ranker'ów. AdaRank trenuje jednego słabego rankera przy każdym obrocie pętli iteracji, i łączy tych słabych rankerów jako finalną funkcję rankingową. Po każdym obrocie pętli wagi dokumentów są przeliczane, obniża wagi poprawnie ocenionych dokumentów dla danej metryki, i podwyższa wagi dokumentów które zostały ocenione źle dla tej samej metryki.
Omówienie przykładowego algorytmu AdaRank http://web.ist.utl.pt/~catarina.p.moreira/images/adarank.png
Omówienie przykładowego algorytmu AdaRank Przy starcie algorytmu, wagi są równo rozdzielone po zapytaniach. W każdym obrocie pętli AdaRank dystrybuuje wagi do zapytań w zestawie treningowym. Kiedy słaby ranker zostanie zbudowany, algorytm wiąże do niego wagę at > 0, która oznacza ważność danego rankera.
Spis Treści 1) Wprowadzenie Machine learning, Learning to rank 2) Lemur Project 3) RankLib 4) Omówienie przykładowego algorytmu AdaRank 5) Przykład działania a) Transformacja danych b) Uczenie c) Tworzenie rankingów d) Dane konkursowe e) Porównywanie algorytmów
PRZYKŁAD DZIAŁANIA
DANE KONKURSOWE
DANE ALLEGRO - PRODUKTY "IT_ID" "IT_NAME" "IT_BUY_NOW_PRICE" "PRIC E_WITH_DELIVERY" "BUY_COUNT" "BOLD" "FEA TURED" "THUMB" "SHOP_ITEM" "FREE_SHIPPIN G" "HIGHLIGHT" "SA" 5539139138 "Przyssawka mocowan na szybę do GoPro HERO4 Session" 24 27,94 0 0 0 1 1 0 0 1 5030987655 "Toner Brother TN-2005, HL-2035, HL- 2037 Super cena" 33,19 45,19 17 0 1 1 1 0 0 0 4913452241 "AAB COOLING THERMOPAD taśma 3mm 6,0 W/mK + KLEJ 3M" 16,9 19,9 0 0 0 1 1 0 0 1
DANE ALLEGRO id","p.searchtime","p.searchq","p.item_position","p.i t_id","p.pv","p.userhash" "1","1441962641155","automat do chleba","0","5176148404","0","n000234f32eac619b ce598741d598221e" "2","1441962641155","automat do chleba","1","5356036513","0","n000234f32eac619b ce598741d598221e" "3","1441962641155","automat do chleba","2","5180704274","0","n000234f32eac619b ce598741d598221e"
PLIK WEJŚCIOWY <line>.=. <target> qid:<qid> <feature>:<value> <feature>:<value>... <feature>:<value> # <info> <target>.=. <positive integer> <qid>.=. <positive integer> <feature>.=. <positive integer> <value>.=. <float> <info>.=. <string>
PRZYKŁAD 0 qid:3649 1:649.95 2:659.95 3:0 4:0 5:0 6:1 7:1 8:0 9:0 10:1 # "ANDROID BOX MINIX X8H PLUS TRANSLATOR MESSENGER" 0 qid:3649 1:210.11 2:218.1 3:0 4:0 5:0 6:1 7:0 8:0 9:0 10:0 # "The Pragmatic Translator Massimiliano Morini" 0 qid:3649 1:1299 2:1299 3:0 4:1 5:1 6:1 7:1 8:1 9:0 10:1 # "Comet V71 Tablet Translator Tłumacz" 0 qid:3649 1:0 2:7.99 3:0 4:0 5:0 6:1 7:0 8:0 9:0 10:0 # "KURS NAUKA ANGIELSKIEGO TRANSLATOR NOWE ZESTAW" 0 qid:3649 1:0 2:12 3:0 4:0 5:0 6:1 7:0 8:0 9:0 10:0 # "SHARP IQ-3100 ładny translator, kalkulator"
TRANSFORMACJA DANYCH
MODEL DANYCH
KROK 1. IMPORT DANYCH SEARCH
KROK 2. IMPORT DANYCH ITEM
KROK 3. STWORZENIE TABELI ZAPYTAŃ
KROK 4. STWORZENIE TABELI WYNIKÓW
KROK 5. POZYSKANIE DANYCH
KROK 6. EKSPORT DANYCH
WYNIK
UCZENIE
KROK 1. WYBÓR ALGORYTMU (-RANKER) MART (gradient boosted regression tree) RankNet RankBoost AdaRank Coordinate Ascent LambdaMART ListNet Random Forests
KROK 2. WYBÓR METRYK (-METRIC2T) MAP NDCG@k DCG@k P@k RR@k ERR@k
KROK 3. WSKAZYWANIE ZBIORÓW -train -> plik ze zbiorem uczącym -test -> plik ze zbiorem testowym w celu oszacowania danych uczących -validate -> plik ze zbiorem sprawdzającym (służy do dostrojenia modelu) -save -> plik do którego ma zostać zapisany model
KROK 4. DODATKOWE PARAMETRY -feature -> Plik wskazujący które własności mają być uwzględniane w rankowaniu -norm -> normalizacja wektorów własności -kcv -tts -tvs
KROK 4. URUCHOMIENIE UCZENIA java -jar bin/ranklib.jar -train data/train.txt -test data/test.txt -validate data/vali.txt -ranker 6 -metric2t NDCG@10 -metric2t ERR@10 -save mymodel.txt
TWORZENIE RANKINGU
KROK 1. PARAMETRY OBOWIĄZKOWE -load -> wczytanie modelu -test -> wskazanie zbioru testowego do oszacowania -rank -> wskazanie zbioru testowego do stworzenia rankingu
KROK 2. DODATKOWE PARAMETRY -metric2t -> Wskazanie testowanej metryki -score -> wskazanie w jakim pliku ma zostać zapisany ranking -idv -> zapisanie osiągów modelu -norm -> normalizacja wektorów właściwości
KROK 3. URUCHOMIENIE PROGRAMU java -jar RankLib.jar -load mymodel.txt -rank data/test.txt -score myscorefile.txt
PORÓWNYWANIE ALGORYTMÓW
KROK 1. STWORZENIE WSZYSTKICH MODELI java -jar bin/ranklib.jar -train data/train.txt -test data/test.txt -validate data/vali.txt -ranker 6 - metric2t NDCG@10 -metric2t ERR@10 -save mymodel.txt
KROK 2. UZYSKANIE PLIKÓW WYDAJNOŚCI java -jar RankLib.jar -load lm.model.txt -test MQ2008/Fold1/test.txt -metric2t NDCG@10 -idv output/lm.ndcg.txt
KROK 3. PORÓWNANIE MODELI java -cp bin/ranklib.jar ciir.umass.edu.eval.analyzer -all output/ -base baseline.ndcg.txt > analysis.txt
OVERALL COMPARISON System Performance Improvement Win Loss baseline.txt 0.0916 method0.txt 0.326 +0.2344 (+255.92%) 386 94 method1.txt 0.1423 +0.0507 (+55.31%) 165 109 method2.txt 0.1541 +0.0625 (+68.21%) 186 130 method3.txt 0.1808 +0.0892 (+97.36%) 251 135 method4.txt 0.3183 +0.2267 (+247.46%) 370 94 method5.txt 0.1907 +0.0991 (+108.19%) 283 123 method6.txt 0.3308 +0.2392 (+261.18%) 392 91 method7.txt 0.2799 +0.1883 (+205.55%) 353 94
DETAILED BREAK DOWN [ < -100%) [-100%, -75%) [-75%, -50%) [-50%, -25%) [- 25%, 0%) (0%, +25%] (+25%, +50%] (+50%, +75%] (+75%, +100%] ( > +100%] method0.txt 0 2 7 34 51 79 164 82 61 0 method1.txt 0 1 4 39 65 57 72 26 10 0 method2.txt 0 4 5 39 82 61 80 25 20 0 method3.txt 0 4 11 55 65 69 124 40 18 0 method4.txt 0 2 7 39 46 71 157 79 63 0 method5.txt 0 5 7 53 58 84 146 36 17 0 method6.txt 0 3 6 34 48 83 168 81 60 0 method7.txt 0 0 8 42 44 74 174 73 32 0
PRZYKŁADOWE ZAPYTANIE zrodlo min max rank MART 431 327 340 1 RankNet 431 163 653 8 RankBoost 431 88 573 7 AdaRank 431 236 458 6 Coordinate Ascent 431 378 378 4 LambdaMART 431 358 372 3 ListNet 431 334 344 2 Random Forests 431 399 399 5