Per Recommender Systems (o Sistema di raccomandazione) intendiamo un sistema che analizzi e comprenda il comportamento di un utente proponendoli contenuti pertinenti alle sue preferenze, senza che queste debbano esplicitamente essere definite.
Fantastico.
La nostra concisa ed elegante definizione, come sempre presente in apertura, ci dà un caldo abbraccio di benvenuto.
Veniamo accompagnati in soggiorno e inizia la presentazione.
In questo post: cosa sono i recommender systems? Comprendiamolo assieme!
Recommender Systems
Sappiamo quanto siano complessi gli esseri umani.
Ogni individuo, cresciuto in un brodo di esperienze uniche e personali, ha un fittizio paio di occhiali sempre presente e con il quale filtra la realtà che lo circonda.
Il comportamento umano può però seguire pattern, modelli più o meno riconoscibili, nonostante si viva un’esperienza apparentemente soggettiva.
Sulla base di questi pattern, è risaputo che le persone tendano ad apprezzare e gradire oggetti che condividono caratteristiche simili.
Ad esempio, avendo visualizzato il video “Il degrado delle gomme nella Formula 1” è assai probabile che ti interessi “Le strategie di base nella Formula 1” piuttosto che “Quick and Easy Last Minute Halloween Makeup“.
Inoltre, condividiamo sovente gusti con le persone a noi vicine, poiché siamo animali sociali e non lupi solitari.
Tutti questi complessi comportamenti irrazionali possono essere agevolmente identificati da opportuni sistemi, a patto che si disponga di un sufficiente ammontare di dati utili.
Qui entrano in gioco i Recommender Systems, che catturano questi pattern e comportamenti simili, proponendoti prodotti o esperienze che potresti gradire particolarmente.
Senz’altro più utile del tentare di mantenere un palo in equilibrio.
Advantages
Abbiamo capito cosa siano i Recommender Systems. Sappiamo che vengono usati da grandi aziende come Netflix e Amazon e dai principali Social Network come Facebook e Linkedin.
Qual è davvero il vantaggio di un sistema simile?
Il principale è senz’altro il fatto che l’utente possa entrare in contatto con un ventaglio di possibili oggetti di suo gradimento.
È un sistema win-win.
Quest’esposizione incoraggia la retention: l’utente torna sulla piattaforma.
In questo modo il provider del servizio guadagna traffico, e il cliente beneficia di una user experience migliore, creata appositamente per lui, cucita sui suoi gusti.
Entrambe le parti vincono.
In definitiva i recommender systems rappresentano una potenziale fonte di grande valore per le aziende, come visto qualche tempo fa esaminando i case studies dei chatbot e provando a realizzarne uno.
Types
Esistono due principali tipologie di Recommender Systems:
Content Based Recommender Systems
Un Content Based Recommender System identifica per uno specifico utente gli aspetti preferiti di un prodotto, proponendo poi oggetti, o contenuti, attinenti a quelle preferenze.
Collaborative Filtering Reccommender Systems
Un Collaborative Filtering Recommender System identifica gruppi di utenti che condividano un comportamento o gusto comune, proponendo loro contenuti o prodotti attinenti a quelle preferenze.
Devi quindi tenere a mente una cosa fondamentale.
La tecnica di collaborative filtering si basa esclusivamente sui dati del comportamento utente, e non su quelli profilo o affini.
Vediamo le logiche di funzionamento più nel dettaglio.
- Users che interagiscono con Items in modo simile (acquisto dello stesso prodotto, o visualizzazione degli stessi articoli) condividono una o più preferenze nascoste (hidden preferences)
- Users che condividono preferenze comuni (shared preferences) tendono a rispondere in modo simile agli stessi Items.
Combinando queste semplici osservazioni siamo in grado di realizzare un Recommender System senza determinare con precisione la natura delle preferenze che accomunano gli utenti.
Tutto ciò di cui abbiamo bisogno è che queste preferenze esistano e siano dotate di senso.
Assumiamo dunque che i comportamenti utente siano un riflesso di preferenze nascoste: questo consente ai recommandation systems di fornire suggerimenti di conseguenza.
Mi sembra di capire che le logiche di fondo si siano sedimentate nella nostra mente.
Ottimo.
Ora andiamo oltre: ecco le complicazioni.
Collaborative Filtering Troubleshooting
Alcune problematiche degne di nota da tenere presente sono:
- Performance issues or popularity bias
- Cold Start
- Scalability issues
Per funzionare, un Collaborative Filtering Recommender System ha bisogno che esista un insieme di utenti che abbiano precedentemente valutato un prodotto.
In caso contrario, potremmo non avere abbastanza valutazioni per proporre una raccomandazione attendibile.
Devi sapere che in questo modo incorreresti nel popularity bias con un sistema che potrebbe banalmente proporre l’item avente il maggior numero d’interazioni, senza però una precisa personalizzazione.
Poi c’è lui.
Il così detto Cold Start.
Si verifica un Cold Start ogni qualvolta un nuovo utente entra nel sistema: il suo profilo deve essere ancora creato, e la raccomandazione non può ancora avvenire.
Parliamo di Cold Start anche in presenza di un nuovo oggetto privo di valutazioni.
Occhio alla differenza con il caso precedente: prima le valutazioni erano insufficienti ora sono proprio assenti; in entrambi i casi, un problema non indifferente.
Passiamo alla scalabilità.
Con l’aumentare del numero di utenze presenti nel sistema, e di conseguenza l’espandersi dei dati, i Collaborative Filtering Recommendation Systems soffrono di drop-in-performances, a causa della crescita e del calcolo della similarità.
In parole povere, i dati sono troppo voluminosi per essere gestiti efficacemente.
La soluzione?
Per risolvere questi problemi possiamo ricorrere agli Hybrid Systems.
Hybrid Reccomender Systems
Ovviamente non possono mancare i sistemi ibridi, che condividono aspetti delle precedenti tipologie, risolvendo parte delle problematiche evidenziate.
Impelementation of Recommender Systems
In termini d’implementazione di un sistema di raccomandazione, distinguiamo due approcci principali: il memory based e il model based.
Memory Based
In un approccio Memory Based tutti i dati relativi all’utente e agli oggetti vengono impiegati per generare una raccomandazione, sfruttando tecniche perlopiù statistiche quali:
- Pearson Correlation
- Cosine Similarity
- Euclidean Distance
Model Based
In un approccio Model Based, quello di nostro maggiore interesse, usiamo tecniche di Machine Learning per generare un modello dell’utente contenente le sue preferenze.
Conclusione
Siamo giunti al termine di questa tappa.
Prima di salutarci, un rapidissimo recap.
Abbiamo introdotto e sviscerato il concetto di Recommender Systems, definendoli prima, capendone i vantaggi dopo.
Ora che ci penso forse avremmo dovuto invertire l’ordine delle informazioni… non importa lo faremo la prossima volta.
Infine abbiamo visto assieme le principali tipologie di sistemi di raccomandazione, vedendone rapidamente le caratteristiche distintive.
Ora, all’orizzonte abbiamo la prossima meta.
Nel post successivo andremo alla scoperta di una classe di algoritmi utili per risolvere il problema del Collaborative Filtering: useremo la Matrix Factorization.
Come?
Non vedi l’ora?
Ecco qui il link!
Un caldo abbraccio, Andrea.