Bästa svaret
RankNet, LambdaRank och LambdaMART är alla vad vi kallar Lära sig att rangordna algoritmer.
Vad är att lära sig att rangordna?
Att lära sig att ranka (LTR) är en klass av tekniker som gäller övervakad maskininlärning (ML) för att lösa rankningsproblem . Huvudskillnaden mellan LTR och traditionell övervakad ML är denna:
- Traditionell ML löser ett förutsägelsesproblem (klassificering eller regression) i en enda instans i taget. T.ex. om du gör detektering av skräppost på e-post, kommer du att titta på alla funktioner som är kopplade till det e-postmeddelandet och klassificera det som skräppost eller inte. Målet med traditionell ML är att komma fram till en klass (spam eller no-spam) eller en enskild numerisk poäng för den instansen.
- LTR löser ett rankningsproblem i en lista över objekt. Målet med LTR är att komma fram till optimal beställning av dessa artiklar. Som sådan bryr sig LTR inte mycket om den exakta poängen som varje artikel får, men bryr sig mer om den relativa ordningen bland alla artiklar.
Den vanligaste tillämpningen av LTR är sökmotorn. rankning, men det är användbart var du än behöver för att skapa en rankad lista över objekt.
Utbildningsdata för en LTR-modell består av en lista med objekt och en ”marksannhetspoäng” för vart och ett av dessa objekt . För rankning av sökmotorer översätts detta till en lista med resultat för en fråga och en relevansbedömning för vart och ett av dessa resultat med avseende på frågan. Det vanligaste sättet som används av stora sökmotorer för att generera dessa relevansbetyg är att be mänskliga betyg att betygsätta resultaten för en uppsättning frågor. Om du är intresserad har jag skrivit i detalj om mänskliga betygssystem här: Nikhil Dandekars svar på Hur mäter Google kvaliteten på deras sökresultat?
För en mer teknisk förklaring av att lära sig att rangordna kolla detta dokument av Microsoft Research: En kort introduktion till att lära sig att ranka
Vad är RankNet, LambdaRank och LambdaMART ?
RankNet, LambdaRank och LambdaMART är alla LTR-algoritmer som utvecklats av Chris Burges och hans kollegor på Microsoft Research. RankNet var den första som utvecklades, följt av LambdaRank och sedan LambdaMART.
I alla tre teknikerna är rankningen förvandlas till ett parvis klassificering eller regression -problem. Det betyder att du tittar på par objekt åt gången, kommer med den optimala ordningen för det paret och använd den för att komma med den slutliga rankningen för alla resultat.
Här är några detaljer på hög nivå för var och en av algoritmerna:
RankNet http://research.microsoft.com/en-us/um/people/cburges/papers/ICML\_ranking.pdf
RankNet utvecklades ursprungligen med neurala nät, men den underliggande modellen kan vara annorlunda och är inte begränsad till bara neurala nät. Kostnadsfunktionen för RankNet syftar till att minimera antalet inversioner i rangordningen. Här betyder en inversion en felaktig ordning bland ett par resultat, det vill säga när vi rankar ett lägre betyg över ett högre betyg i en rankad lista. RankNet optimerar kostnadsfunktionen med hjälp av Stochastic Gradient Descent.
LambdaRank http://research.microsoft.com/pubs/68133/lambdarank.pdf
Burgess et. al. fann att du under RankNet-utbildningsförfarandet inte behöver kostnaderna, bara behöver lutningarna (\ lambda) av kostnaden med avseende på modellpoängen. Du kan tänka på dessa lutningar som små pilar bifogade till varje dokument i den rankade listan , vilket anger vilken riktning vi vill att dessa dokument ska flyttas.
Vidare fann de att skalning av lutningarna genom förändringen i NDCG hittades genom att byta varje par dokument gav bra resultat. Kärnidén med LambdaRank är att använda den här nya kostnadsfunktionen för att utbilda ett RankNet. På experimentella datamängder är detta visar både förbättringar av hastighet och noggrannhet jämfört med det ursprungliga RankNet.
LambdaMART http://research.microsoft.com/pubs/102750/LambdaMART\_Final.pdf
LambdaMART kombinerar LambdaRank och MART (Multiple Additive Regression Trees). Medan MART använder gradientförstärkta beslutsträd för förutsägelseuppgifter, La mbdaMART använder gradientförstärkta beslutsträd med hjälp av en kostnadsfunktion härledd från LambdaRank för att lösa en rankningsuppgift.På experimentella datamängder har LambdaMART visat bättre resultat än LambdaRank och den ursprungliga RankNet.
Om du är intresserad har Chris Burges ett enda papper som beskriver utvecklingen från RankNet till LambdaRank till LambdaMART här: Från RankNet till LambdaRank till LambdaMART: En översikt
Svar
Att lära sig rangordna är en klass av problem i samband med att återställa hela ordern av en uppsättning från dess partiella ordning som kan beskrivas på flera sätt:
- Betyg för alla datapunkter
- Poängpar där vi anger vilken punkt som ska vara rankad högre
Detta kan ses som ett regressionsproblem – förutsäga poängen för en funktionsvektor. Eller som ett klassificeringsproblem, där vi måste förutsäga vilken punkt av de två som kommer att rankas högre Dessa tillvägagångssätt kallas punktvis och parvis, och de är de mest undersökta och robusta metoderna för tillfället.