Sviluppare motore raccomandazione Festival ICT

26
Sviluppare un Motore di Raccomandazione Roberto Marmo

description

Note su come sviluppare un motore di raccomandazione con Apache Mahout, per dare pochi e buoni consigli all'utente in base a come si è comportato in passato e come si sono comportate le persone simili a lui. Presentate il 6 novembre 2014 al Festival ICT in Mediolanum Forum di Assago (Milano).

Transcript of Sviluppare motore raccomandazione Festival ICT

Page 1: Sviluppare motore raccomandazione Festival ICT

Sviluppare un Motore di Raccomandazione

Roberto Marmo

Page 2: Sviluppare motore raccomandazione Festival ICT

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

Page 3: Sviluppare motore raccomandazione Festival ICT

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

Page 4: Sviluppare motore raccomandazione Festival ICT

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

Page 5: Sviluppare motore raccomandazione Festival ICT

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

Page 6: Sviluppare motore raccomandazione Festival ICT

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

Page 7: Sviluppare motore raccomandazione Festival ICT

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

Page 8: Sviluppare motore raccomandazione Festival ICT

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

Page 9: Sviluppare motore raccomandazione Festival ICT

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

Page 10: Sviluppare motore raccomandazione Festival ICT

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

Page 12: Sviluppare motore raccomandazione Festival ICT

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

Page 13: Sviluppare motore raccomandazione Festival ICT

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

Page 14: Sviluppare motore raccomandazione Festival ICT

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

Page 15: Sviluppare motore raccomandazione Festival ICT

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

Page 16: Sviluppare motore raccomandazione Festival ICT

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

Page 17: Sviluppare motore raccomandazione Festival ICT

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

Page 18: Sviluppare motore raccomandazione Festival ICT

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

Page 19: Sviluppare motore raccomandazione Festival ICT

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

Page 20: Sviluppare motore raccomandazione Festival ICT

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

Page 21: Sviluppare motore raccomandazione Festival ICT

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

Page 22: Sviluppare motore raccomandazione Festival ICT

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

Page 23: Sviluppare motore raccomandazione Festival ICT

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

Page 24: Sviluppare motore raccomandazione Festival ICT

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

Page 25: Sviluppare motore raccomandazione Festival ICT

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

Page 26: Sviluppare motore raccomandazione Festival ICT

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