Blog.

Recommender Systems


Autore
Andrea Provino
Data
Tempo di lettura
5 minuti
Categoria
AI, machine-learning

recommender-systems-memory-based-model-based-content-based-collective-filtering-machine-learning-data-science-blog

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.

Taggedmachine learningteoria


Ultimi post

Patricia Merkle Trie

Il Practical Algorithm To Retrieve Information Coded In Alphanumeric Merkle Trie, o Patricia Merkle Trie è una struttura dati chiave-valore usatada Ethereum e particolarmente efficiente per il salvataggio e la verifica dell’integrità dell’informazione. In questo post ne studieremo le caratteristiche. Prima di procedere, ci conviene ripassare l’introduzione al Merkle Tree nella quale abbiamo chiarito il […]

Andrea Provino
ethereum-patricia-merkle-tree
Tree Data Structure: cos’è un Merkle Tree

Un Merkle Tree è una struttura dati efficiente per verificare che un dato appartenga a un insieme esteso di elementi. È comunemente impiegato nelle Peer to Peer network in cui la generazione efficiente di prove (proof) contribuisce alla scalabilità della rete. Capire i vantaggi di questa struttura ci tornerà utile nel nostro percorso di esplorazione […]

Andrea Provino
merkle-tree-cover
UTXO: come funziona il modello Unspent Transaction Outputs

Per tenere traccia dei bilanci utente, la blockchain di Bitcoin sfrutta un modello di contabilità definito UTXO o Unspent Transaction Outputs. In questo articolo ne esaminiamo le caratteristiche. Ogni blockchain è dotata di un sistema di contabilità, un meccanismo attraverso cui tenere traccia dei bilanci di ciascun utente. I due grandi modelli di riferimento nel […]

Andrea Provino
bitcoin-utxo
Cos’è Ethereum

Possiamo definire Ethereum come una macchina a stati distribuita che traccia le transizioni di un archivio dati general-purpose (i.e. una memoria in grado di registrare qualsiasi dato esprimibile come coppia di chiave e valore o key-value) all’interno della Ethereum Blockchain. È arrivato il momento di esplorare uno dei progetti tecnologici più innovativi e interessanti degli […]

Andrea Provino
ethereum