Sviluppare motore raccomandazione Festival ICT
-
Upload
roberto-marmo -
Category
Internet
-
view
281 -
download
1
description
Transcript of Sviluppare motore raccomandazione Festival ICT
Sviluppare un Motore di Raccomandazione
Roberto Marmo
Roberto Marmo • Università di Pavia, Facoltà di Ingegneria • www.robertomarmo.net [email protected] • https://www.facebook.com/roberto.marmo • http://it.linkedin.com/in/robertomarmo • https://twitter.com/robertomarmo • http://www.slideshare.net/robertomarmo • Autore di articoli e libri:
– Vendere con il Social Commerce – Creare applicazioni per Facebook – Promuoversi con i business social network – Social network per il non profit
• Consulenza per aziende: – Analisi dati presi da social network – Creare motori di raccomandazione per applicazioni web
dedicate a: turismo, social commerce, e-learning
Festival ICT 6 novembre 2014 – Roberto Marmo - Costruire Motore di Raccomandazione 2/28
Agenda 1. cosa è un motore di raccomandazione
2. quando viene applicato
3. algoritmi per il funzionamento
4. come valutare le prestazioni
5. servizi commerciali
6. usare Apache Mahout per costruirlo
Festival ICT 6 novembre 2014 – Roberto Marmo - Costruire Motore di Raccomandazione 3/28
1. cosa è un motore di raccomandazione
Festival ICT 6 novembre 2014 – Roberto Marmo - Costruire Motore di Raccomandazione
-Il Motore di ricerca cerca informazioni in base a cosa vuole da ricerca esplicita scritta dall’utente -Il Motore di raccomandazione fornisce suggerimenti all’utente in base ai contesti di riferimento, ricerca implicita per ridurre il numero delle possibili scelte, suggerendo solo quelle scelte con maggiore affinità con le preferenze espresse e comportamenti osservati. Nel 1997 Resnick e Varian pubblicarono l’articolo “Recommender Systems”
-possono cooperare per ridurre i risultati del motore di ricerca e dare pochi ma buoni consigli all’utente 4/28
1. cosa è un motore di raccomandazione
Un motore di raccomandazione si può usare quando per
fare la ricerca è selettivo l’uso delle preferenze di utenti.
Festival ICT 6 novembre 2014 – Roberto Marmo - Costruire Motore di Raccomandazione
Occorre una grande quantità di dati sull’utente: - anagrafica
- preferenze, interessi, attitudini - comportamento
- dati relazionali da social network - il comportamento di utente è stabile nel tempo
- gestione a norma di legge della privacy - protezione dei dati raccolti
5/28
1. cosa è un motore di raccomandazione • OBIEZIONE: se all’utente dico solo cosa gli piace e
ripeto sempre le stesse scelte si cancella il piacere della scoperta casuale
• si può introdurre la SERENDIPITA’, si estrae a caso una informazione che non riguarda l’utente
• PROBLEMA: quando arriva un nuovo utente e non ci sono informazioni, cosa si consiglia?
• non si dice niente, si dice un consiglio standard, si consiglia cosa piace in media a tutti
Festival ICT 6 novembre 2014 – Roberto Marmo - Costruire Motore di Raccomandazione 6/28
2. quando viene applicato • www.amazon.it • utile anche per sola ricerca di mercato • cerco libro che mi interessa, mi consiglia altri libri
Festival ICT 6 novembre 2014 – Roberto Marmo - Costruire Motore di Raccomandazione 7/28
2. quando viene applicato
Festival ICT 6 novembre 2014 – Roberto Marmo - Costruire Motore di Raccomandazione 8/28
in un blog si crea area con articoli che si propone di leggere
2. quando viene applicato
Festival ICT 6 novembre 2014 – Roberto Marmo - Costruire Motore di Raccomandazione 9/28
Facebook propone persone da conoscere, gruppi cui iscriversi, pagine per clic Mipiace secondo attività fatta nel social
2. quando viene applicato
Festival ICT 6 novembre 2014 – Roberto Marmo - Costruire Motore di Raccomandazione
• Twitter: email con suggerimenti dopo avere deciso di seguire un account
• cliccando su Segui si indica che la previsione fatta è corretta e si rafforza l’efficacia dell’algoritmo usato
https://twitter.com/hashtag/recommendersystems leggere spesso A Survey of Recommender Systems in Twitter, da leggere su http://www.mysmu.edu/faculty/fdzhu/paper/SocInfo'12_57.pdf
10/28
2. quando viene applicato • Netflix società statunitense che offre un servizio di
noleggio di DVD e videogiochi via Internet
• Netflix descrive suo sistema raccomandazione in http://techblog.netflix.com/2012/04/netflix-recommendations-beyond-5-stars.html
• Netflix faceva gare per creare sistema migliore http://www.netflixprize.com/community/viewtopic.php?id=1537
Festival ICT 6 novembre 2014 – Roberto Marmo - Costruire Motore di Raccomandazione 11/28
3. algoritmi per il funzionamento
Festival ICT 6 novembre 2014 – Roberto Marmo - Costruire Motore di Raccomandazione
esempio: Utente U esprime un giudizio sul film si crea Matrice di Utilità, sulle righe i si mettono nomi di utenti, sulle colonne j si mettono nomi di film, nelle celle (i,j) si mette il voto da 0 a 5 che utente i ha dato a film j si può produrre una raccomandazione di due tipi: • Individual scoring: predire il giudizio relativo ai
voti non nulli nella matrice di utilità • Top-N : creare una lista di N raccomandazioni
12/28
3. algoritmi per il funzionamento • link analysis: analisi della sequenza di link fatti da
utente in limitato intervallo di tempo 1. si crea un file log che registra cosa succede sul sito 2. si mettono i nomi degli oggetti in cerchio 3. si mette arco da pagina A a B quando si crea visita 4. colore arco dice quantità
di visite tra le due pagine
Festival ICT 6 novembre 2014 – Roberto Marmo - Costruire Motore di Raccomandazione 13/28
3. algoritmi per il funzionamento
Festival ICT 6 novembre 2014 – Roberto Marmo - Costruire Motore di Raccomandazione
• basato sulle caratteristiche del profilo di utente
• oggetti descritti da tag e metadati
1. ingresso: profilo utente, preso anche dai social
2. classificatori e clustering con machine learning
3. uscita: per ogni tag esce un valore in [0,1]
14/28
3. algoritmi per il funzionamento
Festival ICT 6 novembre 2014 – Roberto Marmo - Costruire Motore di Raccomandazione
• basato sul contenuto (Content-Based): all’utente sono suggeriti oggetti simili a quelli da lui preferiti in passato
1. si creano tag per descrivere il contenuto di oggetto 2. si cercano gli oggetti con voto alto dato da utente 3. si estraggono i tag di tali oggetti 4. si trova altro oggetto con tag simili
15/28
3. algoritmi per il funzionamento
Festival ICT 6 novembre 2014 – Roberto Marmo - Costruire Motore di Raccomandazione
• collaborativo (Collaborative Filtering): all’utente sono suggeriti oggetti piaciuti a utenti simili a lui
1. utente U1, utente con voti simili è U2 perché
entrambi hanno visto film 2,3,4 dando voti simili 2. U2 ha dato voto 3 a film 1 e 1 a film 5 3. si consiglia film 1 a U1 perché ha voto più alto
16/28
3. algoritmi per il funzionamento
Festival ICT 6 novembre 2014 – Roberto Marmo - Costruire Motore di Raccomandazione
approccio ibrido: si usano diversi motori con vari approcci e si uniscono i risultati in una sola lista
17/28
4. come valutare le prestazioni durante uso
Festival ICT 6 novembre 2014 – Roberto Marmo - Costruire Motore di Raccomandazione
• metriche dal comportamento di utente: – sapere se l’utente clicca sul consiglio avuto – l’utente esprime un voto (rating) –errore predizione di rating, la distanza tra
predizione attesa e valore dato da utente
• metriche di classificazione oggetti: – True Positive: oggetti consigliati dal sistema e
rilevanti per l'utente – False Positive: oggetti consigliati dal sistema, ma
che non ricoprono un ruolo rilevante per l'utente – True Negative: oggetti non consigliati dal sistema
e che non sono rilevanti per l'utente – False Negative: oggetti non raccomandati dal
sistema ma che l'utente vorrebbe ricevere
18/28
5. servizi commerciali • http://www.gravityrd.com/ per e-commerce e blog
• http://www.outbrain.com/ piattaforma leader di content discovery per aiutare le persone a scoprire contenuti rilevanti ed interessanti, da notare la informativa sulla privacy
• http://www.upcloo.com/ Yes, we're the best related posts service for your website, Java script da inserire nella pagina web, analizza le pagine per trovare correlazioni tra contenuti, servizio analytics
Festival ICT 6 novembre 2014 – Roberto Marmo - Costruire Motore di Raccomandazione 19/28
6. usare Apache Mahout per costruirlo • Duine Framework
http://www.duineframework.org/
• Easyrec http://www.easyrec.org/ open source con Rest API
• Lenskit http://lenskit.grouplens.org/ libreria open-source in Java per studiare il funzionamento
• Apache Mahout http://mahout.apache.org/ librerie in Java scalabili per il machine learning su grandi data sets
Festival ICT 6 novembre 2014 – Roberto Marmo - Costruire Motore di Raccomandazione 20/28
6. usare Apache Mahout per costruirlo • Sean Owen, Robin Anil, Ted Dunning e Ellen
Friedman. Mahout in Action. Manning Press.
• Mahout per costruire facilmente motore di raccomandazione, elabora gli oggetti da suggerire al variare degli utenti selezionati in base al comportamento nel passato dell’utente su come ha valutato gli oggetti, non usa le sue caratteristiche di descrizione
• strumenti per valutazione dell'accuratezza delle risposte con tempo medio di esecuzione, percentuale accuratezza, parametri di information retrieval, ecc.
Festival ICT 6 novembre 2014 – Roberto Marmo - Costruire Motore di Raccomandazione 21/28
6. usare Apache Mahout per costruirlo • creare Data Model una tripla (Codice_Utente,
Codice_Oggetto, Voto_Preferenza) esempio di input è (1,101,5.0) con Voto_Preferenza da minimo 0 a massimo 5, file CSV o database
• anche (Codice_Utente, Codice_Oggetto) senza voto per dire che utente ha gradito un oggetto
• ad ogni output di raccomandazione viene fornito un insieme N triple (Codice_Utente, Codice_Oggetto, Voto_Preferenza) scegliendo il Voto_Preferenza massimo si risale al Codice_Oggetto da consigliare al Codice_Utente
Festival ICT 6 novembre 2014 – Roberto Marmo - Costruire Motore di Raccomandazione 22/28
6. usare Apache Mahout per costruirlo Sequenza di creazione del motore: 1. caricare i dati tramite il Data Model 2. scegliere la funzione di similarità tra gli oggetti oppure tra gli utenti, anche implementazioni custom propria creazione 3. scegliere metodo per calcolo intorno in cui cercare 4. scegliere metodo di raccomandazione 5. scegliere metodo per valutare l'efficacia 6. decidere come interpretare il risultato e decidere cosa dare in output se le raccomandazioni hanno un punteggio stimato basso 7. decidere come mostrare risultati in interfaccia grafica approfondimenti su funzionamento Mahout in
http://www.slideshare.net/vangjee/a-quick-tutorial-on-mahouts-recommendation-engine-v-04 http://www.slideshare.net/Cataldo/apache-mahout-tutorial-recommendation-20132014
Festival ICT 6 novembre 2014 – Roberto Marmo - Costruire Motore di Raccomandazione 23/28
6. usare Apache Mahout per costruirlo bastano poche righe di codice per caricare i dati e
scegliere cosa raccomandare
esempi di semplice codice su
http://www.warski.org/blog/2013/10/creating-an-on-line-recommender-system-with-apache-mahout/
http://www.ibm.com/developerworks/java/library/j-
mahout/?S_TACT=105AGX54&S_CMP=D0107&ca=dnw-1101&ca=dth-j&open&cm_mmc=6600-_-n-_-
vrm_newsletter-_-10731_144487&cmibm_em=dm::13702153
Festival ICT 6 novembre 2014 – Roberto Marmo - Costruire Motore di Raccomandazione 24/28
6. usare Apache Mahout per costruirlo • database MovieLens contiene associazioni
utente/film, in cui un utente ha espresso delle valutazioni (tra 0 e 5), su un certo numero di film
• da https://movielens.org/ 1.000.000 di associazioni, con 6.000 utenti e circa 4.000 film in totale
Festival ICT 6 novembre 2014 – Roberto Marmo - Costruire Motore di Raccomandazione 25/28
Conclusioni • un motore di raccomandazione permette di aiutare
l’utente in trovare subito cosa è adatto solo per lui
• il funzionamento si basa sulla grande quantità di dati che descrivono l’utente e sul trovare utenti a lui simili, a condizione di avere raccolto tanti dati
• si può usare in tanti contesti dei servizi web
• esistono servizi commerciali che lo offrono
• si può creare programmando il codice con Mahout
GRAZIE PER L’ATTENZIONE!
Festival ICT 6 novembre 2014 – Roberto Marmo - Costruire Motore di Raccomandazione 26/28