Hybrid Event Recommendation using Linked Data and User Diversity Approfondimento per il corso di Commercio Elettronico Università Ca’ Foscari – A.A. 2013/2014 Filippo Ragazzo - 838696 Obiettivi dello studio Sistema di raccomandazione di eventi tramite approccio ibrido basato sul web semantico. Da un lato, verrà utilizzato un content-based system arricchito con dati collegati (Linked Data). Dall’altro lato, verrà aggiunto un collaborative filtering per incorporare l’aspetto sociale, elemento che influenza significativamente le decisioni dell’utente. Questo modello sarà arricchito da un user diversity model atto a rilevare la propensione dell’utente verso oggetti specifici. Linked Data e cb recommendation Principio generale: suggerire nuovi eventi simili a quelli che sono piaciuti all’utente nel passato. La somiglianza fra eventi verrà calcolata tramite coseno di similitudine sugli attributi degli stessi. Gli eventi saranno strutturati e collegati tramite la modalità Linked Data. Linked Data Modalità di pubblicazione di dati strutturati e collegati fra loro. Si basa su tecnologie e standard web aperti come HTTP e URI. Questo rende possibile collegare e utilizzare dati provenienti da diverse sorgenti per creare dataset RDF. Il Resource Description Framework (RDF) è lo strumento base proposto da W3C per la codifica, lo scambio e il riutilizzo di metadati strutturati e consente l'interoperabilità tra applicazioni che condividono le informazioni sul Web. Dataset RDF degli eventi Assumiamo come evento un qualsiasi accadimento che comprende un gruppo di persone, luoghi, tempi e attività. Lo modelliamo caratterizzandolo rispetto le 4 Ws: • What happened? • Where did it happened? • When did it happened? • Who was involved? LODE ontology Nome del termine Tipo Definizione Event Class “Qualcosa che è accaduto”, come riportato in articolo atPlace Property Il nome del luogo atTime Property Istante circa Property Intervallo temporale illustrate Property Oggetto multimediale che illustra l’evento inSpace Property Regione astratta dello spazio (coord) involved Property Persona o oggetto (fisico, sociale, …) coinvolto involvedAgent Property … con agenzia Esempio Concerto degli Snow Patrol descritto tramite LODE ontology Operativamente Il dataset è stato collezionato da tre grandi directory di eventi (Eventful, Last.FM, Upcoming) e pubblicato su Linked Data Cloud (linkeddata.org). Utilizzando SPARQL (linguaggio di interrogazione RDF) è possibile ricavare informazioni di interesse a partire da utenti in relazione. Esempio Esempio: dato un utente, estrarre la lista degli utenti che ha partecipato ad eventi comuni, ordinata per numero di eventi. PREFIX UserURI:http://data.linkedevents.org/user/6e150c44-d5f3-4dfc-97f1-1c593d9cc4a2 SELECT ?coattendee COUNT(DISTINCT ?event) as ?NB WHERE { ?event lode:involved UserURI: . ?event lode:involved ?coattendee . ?event lode:atPlace ?place . ?place vcard:adr ?address . ?address vcard:locality "London" . FILTER(?coattendee!=UserURI:) } ORDER BY DESC (?NB) Linked Data – Tensor Space Model Oggetti: triple <subject, property, object> Idea: oggetti semanticamente simili sono il subject di due triple RDF aventi la stessa property e lo stesso object. Generalizzazione del classico Vector Space Model. Linked Data visto come tensore tridimensionale, ove ogni sezione rappresenta la matrice di adiacenza per una proprietà particolare Esempio Linked Data – Tensor Space Model La rappresentazione di un evento ei relativamente alla proprietà p è un vettore t-dimensionale che indicizza i termini/risorse in relazione con ei tramite p. Assegnamo un peso TF-IDF per ogni risorsa r come segue. 1 se ei ha un collegamento a r tramite p, 0 altrimenti Eventi totali nel dataset Numero di eventi collegati a r tramite p Linked Data – Similarità La similarità fra due eventi ei ed ej rispetto alla proprietà p è pari alla misura del coseno di similarità fra i vettori che li rappresentano: Problemi L’approccio visto è stato utilizzato con successo per sistemi di raccomandazione, ma la sua efficacia è limitata nel caso di matrici di adiacenza molto sparse, come ad esempio lode:involvedAgent o lode:atPlace. Un evento, infatti, accade in un solo luogo, quindi la proprietà lode:atPlace risulta discriminante nel calcolo della similarità. Similarity-based Interpolation - Discriminabilità Per risolvere il problema, andremo ad interpolare valori fittizi basati sulla similarità fra oggetti. Metrica di discriminabilità: Un valore di discriminabilità alto per la proprietà p indica che gli eventi hanno molti valori differenti rispetto a p. Similarity-based Interpolation – Similarità di oggetti Interpoliamo, inoltre, un punteggio di similarità fra oggetti della matrice di adiacenza, consci del fatto che, per esempio, eventi simili non coinvolgono necessariamente gli stessi performer. Dunque, se le risorse rh e rk sono simili (diremo collegate) e se per un certo evento ei si ha che frh, i, p = 1 e frk, i, p = 0, allora sostituiremo il valore di frk, i, p = sim(rh, rk) . (Se rk è simile a più risorse, sceglieremo il valore massimo di similarità). Similarity-based Interpolation – Similarità di oggetti Ora, la formula del peso diventa, più in generale: Insieme degli oggetti collegati a ei Event recommendation Nei dataset utilizzati, la relazione tra utenti ed eventi a cui hanno partecipato sono rappresentati come una matrice binaria con grado di densità del 2%. Come soluzione, possiamo fornire una raccomandazione di eventi utilizzando algoritmi che mettano in relazione i metadati dell’evento con le preferenze dell’utente. Metadati importanti sono distanza, argomenti, performer, … Tuttavia, le raccomandazioni basate sui contenuti non tengono conto dell’aspetto sociale: “Quali amici parteciperanno?” Content-based Recommendation Utente Peso di p Evento Proprietà in comune tra due eventi Eventi a cui ha partecipato l’utente Vicinanza geografica Gli utenti tendono a partecipare ad eventi geograficamente vicini, dunque questa è un aspetto da tenere in considerazione nella raccomandazione di eventi. La similarità degli oggetti di tipo lode:atPlace sarà dunque calcolata come la vicinanza geografica normalizzata su un valore soglia misurato empiricamente pari a 80 km. Arricchimento con Linked Data Utilizzando DBpedia, la versione RDF di Wikipedia, andremo ad arricchire i temi degli eventi (la proprietà dcterms:subject) semplicemente interrogando il database di DBpedia tramite query SPARQL sull’artista presente all’evento. La ragione che sta dietro all’interesse per le categorie di DBpedia è data dalla loro struttura gerarchica ben definita. Varietà degli interessi dell’utente Gli eventi della vita reale possono essere classificati in un vasto insieme di categorie. L’utente può essere interessato ad eventi riguardanti uno specifico topic o artista, oppure può avere un orizzonte più ampio di interesse. Dunque confidare sulla similarità di eventi per le raccomandazioni può portare a risultati imprecisi. Per far fronte al problema, daremo un peso differente agli eventi maggiormente di interesse. Per determinare tali picchi di interesse, verrà usato il Latent Dirichlet Allocation (LDA), una tecnica per modellizzare i topic basata sull’occorrenza dei termini. Varietà degli interessi dell’utente Ove βp = 1 se p è diverso da dc:subject, altrimenti è un valore stimato che dipende dal grado di interesse dell’evento ei. Varietà degli interessi dell’utente Punteggi ottenuti da un campione di 1000 utenti di Last.fm. (a) Range di varietà di interessi maggiormente fra 0.3 e 0.5 => utenti con alto interesse verso topic specifici. (b) Interessi di un singolo utente, focalizzati prevalentemente sul topic 9. Collaborative filtering L’idea di base è che due utenti che assistono allo stesso evento possano avere un legame più forte tra loro rispetto ad altri utenti. A differenza dei tradizionali collaborative filtering basati sui singoli utenti, non considereremo soltanto il legame fra singoli utenti, ma anche il contributo di un gruppo di amici. Definiamo, dunque, una formula per predire la partecipazione di un utente u ad un evento sulla base delle intenzioni dei suoi co-partecipanti (utenti che hanno partecipato ad eventi passati assieme a u). Collaborative filtering Insieme dei co-partecipanti di ui che assisteranno ad e Rapporto fra eventi in comune tra ui ed uj e la cardinalità di Ej Insieme degli eventi a cui ui ha partecipato Collaborative filtering Contributo del singolo co-partecipante Contributo del gruppo di amici Hybrid Recommendation Peso dato al collaborative filtering Conoscere i pesi - GA Gli algoritmi genetici (GA) sono metodi stocastici ispirati al meccanismo di evoluzione naturale ed ereditarietà genetica. Nei GAs, una popolazione è data da un insieme di cromosomi, i quali denotano ciascuno un insieme di geni. Una fitness function è una funzione che stima la bontà di ciascuna soluzione. L’algoritmo applica la fitness function alla popolazione selezionando le soluzioni migliori e ricombinando la popolazione per la nuova generazione, fino a raggiungere la soluzione ottimale (o iterazioni massime). Conoscere i pesi - GA Nel nostro caso Cromosoma – vettore dei coefficienti α Fitness function – precisione sui dati campione Popolazione – 30 Iterazioni – 80 Crossover rate – 0.9 (quantità di padri scelti ad ogni iterazione) Mutation rate – 0.1 (grado di cambiamento della popolazione ad ogni iterazione) Conoscere i pesi - PSO La Particle Swarm Optimization (PSO) è una tecnica di ottimizzazione stocastica basata su popolazione ispirata ai comportamenti sociali degli stormi di uccelli o dei banchi di pesci. PSO è più semplice da implementare, poiché non ha operatori di evoluzione come crossover e mutation. Ogni generazione, ogni particella accelera verso la soluzione migliore, finchè tutte le particelle si raggruppano sulla soluzione ottima, sempre valutata da una fitness function. Valutazione Nota: fino ad ora non sono stati inclusi user diversity, né il peso βsubject . Valutazione Nota: coefficienti α ottenuti tramite PSO. βsubject = 0.4 se l’evento non è incluso nei picchi di interesse, 1.6 altrimenti. Valutazione