Rekommendationssystem med fördjupning på collaborative filtering, majsc331 870325-1929 729G11 Artificiell Intelligens II Linköpings Universitet HT 2009
Innehållsförteckning Inledning... 1 Bakgrund... 2 Collaborative Filtering... 3 Amazons rekommendationer... 5 Diskussion... 7 Referenser... 8 Bild- och figurförtecking: Bild 1... 1 Bild 2... 4 Figur 1... 3 Figur 2... 3 Figur 3... 6
Inledning När allt mer av dagens handel och informationssökning sker via Internet medför det att mängden information och varor vi har tillgång till ökar. Då får vi istället problem med information overload det finns alldeles för mycket att välja på och det blir bara svårare att göra informerade val. En vanlig lösning är att ta hjälp av vänner med liknande smak, läsa recensioner, och utgå från listor med bästsäljare. Många onlinebutiker har därför börjat tillämpa rekommendationssystem för att göra det stora utbudet mer överskådligt och hjälpa kunden att hitta varor som kan vara intressanta. Rekommendationssystem är en teknik som används av många företag, och det är speciellt vanligt hos onlinebutiker som har ett stort sortiment och är extra beroende av möjligheten att kunna sålla bland varor. I denna rapport beskrivs kort vilka typer av rekommendationssystem som finns. Sedan följer en djupare beskrivning av en av dessa, collaborative filtering, samt hur denna implementeras hos onlinebutiken Amazon.com. Bild 1: En av Amazons rekommendationer (Amazon.com, 2009) Sida 1
Bakgrund När rekommendationssystem beskrivs på engelska används ofta ordet items, som kan översättas dessa, eftersom de har en tydligare koppling till den till den domän jag har studerat, det vill säga onlineshopping. Rekommendationssystem använder information från användaren för att försöka förutspå vad denne kommer att tycka om en viss vara, och sedan bestämma om den ska rekommenderas till användaren eller ej. Det finns många olika typer av rekommendationssystem, samt hybrider av dessa. Content-based, eller innehållsbaserade rekommendationssystem jämför innehållet och undersöker vad användaren har tyckt om liknande varor tidigare. Ett exempel är filmer, där ett sådant system kan använda genre, skådespelare, regissör, eller andra egenskaper och jämföra med vad användaren tidigare har tyckt om dessa egenskaper. Demografiska system jämför olika typer av användare utifrån egenskaper så som ålder, inkomst, födelseland, utbildning, etc. (Burke, 2002) Amazon.com Amazon.com är en onlinebutik som startades i USA 1995. Den finns nu över hela världen och har flera miljoner produkter och över 29 miljoner användare i vitt skilda kategorier, varför det blir extra viktigt att hjälpa kunden att hitta rätt. De har ett rekommendationssystem som baseras på collaborative filtering. När en användare registrerar sig så uppmanas denne att fylla i fakta om sig själv för att förbättra rekommendationerna, samt att betygsätta eller markera att man redan äger olika varor tills rekommendationerna reflekterar de preferenser kunden har. Betyget sätts på en femgradig skala där fem är bäst. När en användare loggar in kan denne gå till sin personliga rekommendationssida, eller söka efter olika varor och då bli rekommenderad varor som ofta köps tillsammans med den aktuella varan. Användaren kan också se exakt vad som orsakade varje rekommendation, det vill säga vilken produkt som fick systemet att tro att användaren skulle tycka om den rekommenderade varan. Där kan användaren ange om produkten inte ska användas för att generera rekommendationer, exempelvis om den var en gåva eller liknande. (Linden et. al., 2003;; Amazon.com, 2009) Sida 2
Collaborative filtering Collaborative filtering är det vanligaste systemet som används för rekommendationer och förmodligen det mest välutvecklade (Burke, 2002). Det räknar ut korrelationen mellan en användares tidigare betygsättningar och andra användares betygsättningar. En användares profil består av en lista med varor och det betyg som varje vara har fått, antingen binära (gillar/ogillar) eller ett specifikt värde, till exempel en siffra mellan ett och tio. Korrelationen mellan användare räknas ut med Pearsons r. (Burke, 2002: Breese et. al. 1998) Pearsons korrelationskoefficient kan ge värden mellan -1 och 1, där -1 anger en starkt negativ korrelation, medan 1 är en starkt positiv. Värden nära noll anger en svag korrelation. För att förutspå vad en användare, x, ska tycka om vara i, räknar man ut korrelationen mellan x och varje annan användare, y, för att ge y en. R x,d är alltså betyget som användare x har satt på item d, och R x är medelvärdet på alla betyg som användare x har satt. Om x och y har betygsatt alla varor lika så skulle deras korrelation vara 1,0, och y får då vikten 1,0. (Pazzani, 1999) Figur 1: Pearsons r (Pazzani, 1999) Sedan räknas det viktade medelvärdet (X w ) ut genom att multiplicera korrelationen mellan användare x och varje annan användare y med y:s betygsättning av vara i, och sedan ta summan av alla produkter och dividera med summan av alla vikter, vilket motsvaras w i figur 2. Anledningen till att inte bara välja ut den användare som är mest lik x och anta att x kommer att tycka likadant är att det nu är möjligt att dra nytta även av de användare som har en stark negativ korrelation med x. Figur 2: Viktat medelvärde (http://www.cs.kau.se/stat/staa10/vt06lp4/kapitel/kap3.shtml) Sida 3
Fördelar och nackdelar med collaborative filtering Ett problem med collaborative filtering som även återkommer i andra typer av rekommendationssystem är att rekommendationerna ofta blir ganska dåliga för användare som har använt systemet en kortare tid. Eftersom de inte har hunnit betygsätta så många varor så har systemet inte särskilt mycket att bygga rekommendationerna på. Detta kallas för ramp upproblemet. Det är detta problem som Amazon försöker lösa genom att be nya användare betygsätta varor tills rekommendationerna reflekterar användarens smak. (Burke, 2002) Bild 2: Amazons rekommendationssida för nya användare (Amazon.com 2009). Samma sak gäller för nya varor: om en vara inte har betygsatts så många gånger så har den mindre chans att bli rekommenderad. Gråa får (gray sheep på engelska) är ett annat problem som förekommer i rekommendationssystem. Det innebär att en användare har preferenser som inte korrelerar med någon annan användare, och vars uppfattning om en vara blir svår att förutspå. Generellt sett blir alla rekommendationssystem bättre ju mer data systemet har att gå efter. Dock kan användare tröttna på att få dåliga rekommendationer på grund av för lite bakgrundsdata och sluta använda systemet. (Burke, 2002) Sida 4
Amazons rekommendationer Problemet med Amazon är att de har en enormt stort datamängd att arbeta med vilket gör att collaborative filtering på det traditionella sättet inte fungerar. Istället använder de en metod som kallas item-to-item collaborative filtering, som matchar de varor en kund har köpt med andra liknande varor. (Linden et. al. 2003) Algoritmen: For each item in product catalog, I1: For each customer C who purchased I1: For each item I2 purchased by customer C: Record that a customer purchased I1 and I2 For each item I2: Compute the similarity between I1 and I2 För varje vara i katalogen så undersöker algoritmen varje kund som har köpt den varan. Den går igenom alla andra varor som kunden har köpt och räknar ut likheten mellan de två varorna. (Linden et. al. 2003) Likhetsberäkning Likhet kan räknas ut på olika sätt, ett exempel är Pearsons r som förklaras ovan. Amazon använder sig av en metod som mäter cosinus av vinkeln mellan två vektorer. En vektor är en lista, som representerar en vara. Exempel: Vara1 Kund1 Kund2 Kund3 Kund4 Det vill säga, Vara1 har köpts av fyra kunder, och har alltså vektorn [Kund1, Kund2, Kund3, Kund4]. Har man flera vektorer kan man då jämföra dessa. Om en kund sedan köper Vara1, och Vara1 har en hög korrelation med en annan vara, till exempel Vara5, så rekommenderas Vara5 till kunden. Sida 5
Exempel på flera vektorer: Vara1 Kund1 Kund2 Kund3 Kund4 Vara2 Kund2 Kund3 Kund5 Kund6 Vara3 Kund1 Kund2 Kund5 Kund6 Likheten är alltså som följer: Vara1 & Vara2: 2 kunder gemensamt Vara1 & Vara3: 2 kunder gemensamt Vara2 & Vara3: 3 kunder gemensamt Alltså är Vara2 och Vara3 mer lika varandra än de andra varorna. Amazons datamängd är naturligtvis större än i exemplet ovan, så för att mäta vilka vektorer som är lika varandra används cosinus av vinkeln mellan två vektorer. (Linden et. al. 2003) Figur 3: Cosinus av vinkeln mellan vektorer (Linden et. al. 2003) Detta är dock inget jag kommer att gå igenom mer utförligt, för vidare läsning se Garcia (2006). Item-to-item och user-to-user: en jämförelse Är datamängden väldigt stor måste de tyngsta uträkningarna utföras offline. Det är anledningen till att user-to-user collaborative filtering är en opraktisk metod för företag som Amazon, eftersom den metoden måste utföra de flesta beräkningarna online. Item-to-item kan skapa likhetstabeller offline, och de enda beräkningarna som sker online är att leta upp liknande varor ur tabellen. Detta är en mycket lättare uträkning eftersom algoritmen bara måste ta hänsyn till de varor som en specifik kund har köpt eller betygsatt, istället för alla varor i katalogen eller alla kunder som har ett konto hos Amazon. Uträkningarna som sker offline har dock en hög tidskomplexitet, O(N 2 M) i värsta tänkbara fallet, där N är alla varor i katalogen och M är antalet element i en vektor, det vill säga antalet kunder som har köpt en vara. Dock har varje vara inte köpts av särskilt många kunder, varför den egentliga tidskomplexiteten ligger närmare O(NM). (Linden et. al., 2003) Sida 6
Diskussion Alla rekommendationssystem har problem med att ge bra rekommendationer till nya kunder, så även Amazon. När jag provar att betygsätta några varor märker jag snabbt att de varor systemet tror att jag skulle tycka om handlar om exakt samma saker som de varor jag betygsatt. Om jag sätter ett högt betyg på en italiensk kokbok så handlar alla andra rekommendationer om italienska kokböcker. Har jag uppgett att jag tycker om Amerikansk politik så rekommenderas jag böcker som handlar om det ämnet. Det liknar i mina ögon mer ett innehållsbaserat system, det vill säga content-based, där systemet rekommenderar varor baserat på en särskild egenskap, till exempel vilken genre de tillhör. Huruvida detta blir bättre med tiden har jag inte undersökt eftersom det tar ganska lång tid att betygsätta alla varor som jag anser reflekterar min personliga smak. Dock presterar de flesta rekommendationssystem dåligt i början så ett rimligt antagande borde vara att rekommendationerna blir bättre ju mer systemet används. Melville et. al. (2002) har utvärderat en hybrid av collaborative filtering och content-based rekommendationssystem som enligt testerna presterar bättre än de två typerna var för sig vid ramp up-problemet, fortsatt forskning får utvisa om detta kan vara en lösning även för Amazon. Idag är det ganska vanligt att rekommendationssystem används, och jag tror att detta område kommer att växa och bli nästintill oumbärligt i framtiden. När antalet tillgängliga produkter ökar blir det omöjligt att undersöka hela sortimentet. Topplistor är ett sätt att sålla ut produkter, men det finns inget som säger att det som finns på topplistan är bättre än annat. Att produkter på topplistan säljer mer beror helt enkelt på att kunden hittar dem, till skillnad från produkter som inte har så höga försäljningssiffror. Min teori är att det visserligen kan vara en viss kvalitetsskillnad mellan storsäljare och andra varor, men att en viktig komponent i en produkts framgång är marknadsföring. Att bara välja bland storsäljarna kan göra att man missar guldkorn som inte haft en lika stor marknadsföringsbudget, men att hitta de guldkornen är lättare sagt än gjort. Då kan ett rekommendationssystem göra stor skillnad. Dock kan det också vara hämmande att bara undersöka varor man blir rekommenderad, till exempel kan tycke och smak förändras över tid. Den i mina ögon bästa strategin för att hitta de varor man vill ha är att dels använda sig av de rekommendationer man får av systemet men också följa sitt eget huvud och titta på varor som verkar intressanta oberoende av vad systemet tror att man tycker om. Sida 7
Referenser Tryckta källor: Burke, Robin (2002) Hybrid Recommender Systems: Survey and Experiments. User Modeling and User-Adapted Interaction, vol 12, 331-370 Linden, Greg;; Smith, Brent;; York, Jeremy (2003). Amazon.com Recommendations: Item-to-Item Collaborative Filtering. IEEE Internet Computing, Januari-februari, 76-80. Melville, Prem;; Mooney, Raymond J.;; Nagarajan, Ramadass (2002) Content-Boosted Collaborative Filtering för Improved Recommendations, Proceedings of the Eighteenth National Conference on Artificial Intelligence (AAAI-2002), 187-192 Pazzani, Michael J. (1999) A Framework for Collaborative, Content-Based and Demographic Filtering. Artificial Intelligence Review, vol 13, 393-408 Internetkällor: Amazon.com: Recommendations http://www.amazon.com/gp/help/customer/display.html?ie=utf8&nodeid=13316081 Hämtad 2009-10-08 Senast uppdaterad: Ej angivet Breese, John S;; Heckerman, David;; Kadie, Carl (1998) Empirical Analysis of Predictive Algorithms for Collaborative Filtering. Technical Report MSR-TR-98-12, Microsoft Research Hämtad 2009-10-08 från http://research.microsoft.com/pubs/69656/tr-98-12.pdf Senast uppdaterad: Ej angivet Viktat medelvärde: http://www.cs.kau.se/stat/staa10/vt06lp4/kapitel/kap3.shtml Hämtad 2009-10-08 Senast uppdaterad: Ej angivet Sida 8
Lästips: Garcia, E (2006) Cosine Similarity and Term Weight Tutorial. An Information Retrieval Tutorial on Cosine Similarity Measures, Dot Products and Term Weight Calculations. Hämtad 2009-10-08 från http://www.miislita.com/information-retrieval-tutorial/cosinesimilarity-tutorial.html Senast uppdaterad: 2006-10-26 Sida 9