# Cap. 17: Production Recommender Systems - Spotify ### How does Spotify's home screen use a model called BaRT to curate recommendations for users? What are some of the sections that BaRT contributes to, and what is its purpose in recommendation? BaRT ("Bandits for Recommedations as Treatments") è il modello di raccomandazione utilizzato da Spotify per creare la homepage di Spotify e generare le playlist di "exploration" (es. Discover Weekly, Release Radar, ecc.). Per le playlist di "exploitation" si segnalano Jump Back In, Recently Played, ecc. ### What types of data does Spotify store for both artists and consumers? How does Spotify leverage this data for its recommendation algorithms? Spotify usa i seguenti dati. - Spotify incoraggia gli artisti a mettere a disposizione quanti più dati possibili sulle canzoni (titoli, descrizione, testi, immagini, ecc.) - Lato costumer, Spotify registra e usa tutto lo storico degli ascolti (cosa ha ascoltato, per quanto, ecc.), ma anche le azioni in senso più ampio (skip, frequenza ascolti, creazione di playlist, iterazioni social, *etc.*) - Fonti esterne (come crawl web) Tipicamente, i comportamenti utenti vengono utilizzati per fare exploitation, mentre le altre fonti per fare exploration. ### What is a hybrid recommendation system, and how does Spotify's BaRT model incorporate both collaborative filtering and content-based approaches? > Alternative: > - Explain the collaborative-filtering approach used in Spotify's recommendation algorithm. How does collaborative filtering make recommendations based on past user behavior? > - Describe the content-based recommender system approach. What information does a content-based model utilize to generate recommendations? > - What are the two modes of the BaRT model, and how do they differ in terms of their purpose and the data they leverage? La parte exploitation, in termini molto generali, può essere visto come un CF fortemente focalizzato sullo storico delle azioni. La parte di exploration invece è un sistema più content-based, che genera predizioni incerte ma il suo scopo principale è la raccolta dati (sull'utente e sugli item). Il secondo sistema è utile anche per situazioni di cold start con utenti nuovi e/o item nuovi. Il comportamento del sistema dipende da tre fattori: la modalità explore/exploit, la relevance e la certezza sulla relevance. - in situazioni di alta certezza, il sistema ignora l'item se ha bassa relevance oppure lo utilizza per fare exploit se ha alta relevance - la differenza tra le due modalità si vede in situazioni di bassa certezza: - il sistema focalizzato su exploit, a volte ignora, a volte fa exploit - il sistema basato su explore invece predilige l'exploration di nuovi item BaRT possiede due modalità: - modalità Exploitation: in questa modalità il modello tende a raccomandare sulla base del collaborative-filtering. Viene utilizzato principalmente quando il modello ha a disposizione un buon numero di dati storici dell'utente. - modalità Exploration: negli altri casi ![](https://hackmd.io/_uploads/SkS318AfT.png) ### What is the significance of the "Exploration" mode in BaRT's recommendation algorithm? When is it used, and what problem does it address? In modalità esplorazione il modello raccomanda contenuti con previsioni incerte di coinvolgimento dell'utente per scopo di raccogliere ulteriori informazioni. Questa modalità viene utilizzata principalmente quando non si hanno ancora a disposizione dati sufficienti dall'utente per applicare il collaborative-filtering. ### How does the BaRT model learn and predict satisfaction? What metrics are used to measure satisfaction, and how does the model continually improve itself? La predizione della satisfaction dell'utente è il principale compito del modello attraverso varie metriche (es. Click-through rate, tempo di ascolto, ecc.). Il modello è costruito in maniera incrementale: costantemente registra e analizza le sue performance per "imparare" dagli errori commessi. ### Explain the contextual multi-armed bandit approach introduced by BaRT. Why is context important in recommendation, and how does BaRT leverage it to improve its recommendations? A differenza degli altri modelli *bandit-base*, BaRT considera anche il contesto (orario, device, playlist, feature utente, ecc.) per predire la soddisfazione dell'utente. ![](https://hackmd.io/_uploads/Hkx6QIAG6.png) ### Discuss the joint personalization of item recommendations and their associated explanations. How are contextual features and user attributes used to build this personalized approach? ### Algoritmo (reward e parte exploit) Si definiscono: - una funzione di validità: $$f:\varepsilon \times \mathcal U \to 2^J$$ che "fa da filtro", mappando spiegazioni e utenti in un set di item candidati validi per le raccomandazioni - "quali item sono buoni candidati da raccomandare a questo utente per questo scopo?" - serve a restringere il campo dei candidati - una funzione di reward: $$r:J \times \epsilon \times \mathcal X \to \mathbb R$$ che stima (in modo pointwise) il reward di un item per un certo scopo in un certo contesto La policy exploit introdotta attraverso una versione modificata di un bandit, si raccomanda ciò che massimizza il reward: $$(j^*, e^*) = \arg\max_{j,e} r(j,e,x)$$ (Versione modificata in quanto, oltre che la sola azione, tiene conto anche il contesto). Una policy $\pi$ deciderà in seguito quando sfruttare l'exploit e quando no. Nel concreto, la funzione di reward viene definita come una regressione logistica: $$r(j,e,x)=\sigma(\theta_G + \theta_j^T\mathbb 1_j + \theta_e^T\mathbb 1_e + \theta_x^T\mathbb x)$$ (dove la loss è una funzione cross entropy e il reward risultante è binario) Tale modello ha il vantaggio di essere particolarmente semplice, facile da addestrare, facile da comprendere (nella regressione logistica il peso dei parametri è facilmente interpretabile) e incorpora anche una spiegazione da fornire all'utente (una motivazione presa da un set predefinito sul "perché" è stato raccomandato un item in un certo contesto). Un problema del modello è però che a causa di come è fatto il contributo dei dati dell'utente si limita ad essere lineare e si è visto che ciò porta a poca personalizzazione (popularity bias). Per compensare ciò, si è passati a dei modelli che includono _"somme di ordine maggiore"_, che tramite l'aggiunta di termini alla sommatoria in input introducono spazio per vettori latenti (ottenendo un effetto simile alle factorization machines). ### How is counterfactual risk minimization (CRM) used in training the contextual bandit model? Why is importance sampling important in this context? CRM è un framework utilizzato per addestrare il contextual bandit. L'obiettivo è quello di campionare il dataset in modo da costruire un training set adeguato che tenga conto di tutti i bias presenti nella user base. Massimizzo la log-likehood del modello rispetto alla funzione di reward dati tutti i contesti e tutte le azioni (supponendo che queste abbiano una distribuzione di probabilità uniforme). ### Explain the concept of exploration-exploitation policy. How does BaRT's exploration approach differ from traditional epsilon-greedy strategies? > Alternative: > - Describe the conditional exploration approach used by BaRT. How does it make decisions regarding exploration and exploitation separately for items and explanations? La funzione di reward, se applicata di per se, fa puro exploit (scelgo gli item che hanno ottenuto reward più alto). Per fare anche explore si introduce la cosiddetta _conditional exploration policy_, una variante di $\epsilon$-greedy. Si calcola uno score di propensità $\pi_c=\pi_c^{item} \pi_c^{expl}$, composto da due componenti: - la prima è l'adeguatezza dell'item per il contesto e per l'explaination. Tale misura dipende da: - il fatto che l'item appartenga o meno al set filtrato - il fatto che l'item sia quello con lo score di reward più altro Se l'item non appartiene al set, $\pi_c^{i}=0$. Se l'item appartiene al set ma non è il migliore la sua propensione $\pi_c^{i}=\frac{\epsilon}{|f(e,u)|}$. Se invece l'item è il migliore, la sua propensione aumenta di $1-\epsilon$ - la seconda è l'adeguatezza dell'explaination dato l'item e il contesto. Viene calcolata in un modo simile all'adeguatezza dell'item, ma la spiegazione con miglior punteggio e l'appartenenza alla spiegazione al contesto. Combinando le due in un prodotto si ottiene un punteggio che: - sarà nullo per tutti gli item e per tutte le explaination che non si sono reputate opportune al contesto (in base alla funzione di filterning) - sarà alto se l'item è il migliore da raccomandare secondo il reward stimato - sarà alto se la spiegazione è la migliore da raccomandare secondo il reward stimato Il risultato finale quindi è che ogni tanto si scelgono le raccomandazioni con gli item con miglior reward, mentre ogni tanto si scelgono raccomandazioni con una buona spiegazione (per esplorare in quella direzione). ### How was the empirical evaluation of BaRT's recommendation algorithm performed? What kind of testing methodology was used, and what were the key insights from the evaluation? I ricercatori hanno preso un sottoinsieme di explanation con le relative impressioni (ca. 140k per ogni spiegazione) e hanno svolto una valutazione empirica con A/B testing e $\chi^2$. Si misura la probabilità che un certo item sia consigliato utilizzando il modello rispetto a un modello casuale all'aumentare della dimensione degli embedding. ![](https://hackmd.io/_uploads/HySJfoCza.png) ### What is the "cold start" problem in the context of recommender systems? How did Spotify address this problem by using raw audio files and convolutional layers? > Alternative: > - Explain how Spotify uses Natural Language Processing (NLP) and music intelligence to enhance its recommendation system. What sources of data are analyzed, and how does NLP help in tracking trends and user preferences? Per migliorare gli embedding e mitigare il problema del cold start, Spotify fa uso di tecniche come NLP e Music Intelligence (generazione di feature latenti a partire dagli spettrogrammi delle canzoni) anche utilizzando fonti di terze parti. Nel caso dell'NLP lo scopo è quello di identificare termini e frasi legati a canzoni o ad artisti assegnando ad ognuna un punteggio di importanza per l'artista o per la canzone stessa.