# Cap. 5: Content Based Recommender Systems ### What distinguishes content-based recommender systems from collaborative filtering methods in terms of data usage and recommendations? I RS Content-based, a differenza dei Collaborative Filtering, non tengono conto dei rating forniti da altri utenti, ma solo dallo storico dell'utente (per il quale si sta facendo la raccomandazione) e dalle caratteristiche degli item, per cui non è necessaria la matrice dei rating (così come vista per CFRS). ### In content-based recommender systems, what are the two main sources of data used for making recommendations? How do they help address certain challenges? > Alternatives: > - Explain how content-based recommender systems leverage item attributes to make recommendations and why they are particularly useful for scenarios with descriptive attributes. > - How do content-based systems address the "cold-start problem" for new users? > - Give examples of scenarios where content-based recommendations are effective, such as movie recommendations, web page recommendations, and music recommendations. Le fonti di dati principali usate nei CBRS sono: - le descrizioni degli item (che quanto più ricche di feature sono, meglio è) - un profilo dei gusti dell'utente (che può essere uno storico, dei rating, un tema verso il quale ha dimostrato interesse) I CBRS possono essere particolarmente utili: - per risolvere il problema del cold start (in quanto richiedono meno dati dal punto di vista del profilo utente); - in tutti quei contesti dove è possibile estrarre tanto contenuto dagli item (testi, musica, ecc.) o dove sono presenti molti dati non strutturati; - Hanno un forte collegamento con i *Knowledge-based Rec Sys* ### Describe the components of a content-based recommender system, including preprocessing, feature extraction, learning user profiles, and filtering. > Alternative: > - What is feature extraction, and how does it play a role in content-based systems? Provide examples of how features are extracted from different domains. > - What type of data is used to build user profiles in content-based systems, and how is this data collected? > - In content-based systems, why is feature representation and cleaning an important step? What preprocessing steps are commonly applied in this phase? I componenti di un CBRS sono quelli che ci si può aspettare di trovare in un task di data science. 1) Innanzitutto serve un dataset con quanti più dati (strutturati e non) sugli item. 2) Si svolge una fase di pre-processing finalizzata ad estrarre **feature discriminanti** che permettano di distinguere gli item tra di loro, che verranno pesate più o meno nel modello. Per ciascuna feature si dovrà trovare una rappresentazione adeguata (per alcune le si terrà "native", per quelle testuali tornano utili rappresentazioni come BOW, ecc.). 3) Il pre-processing include, specie per i dati non strutturati, anche operazioni di pulizia (ad es. per il testo, stemming, stopwords removal, phrase extraction, ecc.) 4) L'obiettivo finale è arrivare ad un vettore di feature. 5) Dal punto del profilo utente invece è importante catturare le sue iterazioni con il sistema, quindi: - ratings - like e dislike - feedback impliciti - ecc. 6) A volte le feature che si ricavano sono anche fin troppe, quindi può essere utile fare una *selezione* e una *pesatura*. Per fare ciò tornano utili tecniche come: - l'indice di Gini - l'entropia e l'information Gain Tutte queste tecniche sono utili a capire "quanto una feature è discriminante" per i rating dell'utente (voglio selezionare feature "predittive" del voto) 7) Dati gli item rappresentati come vettori di feature e un set di item valutati, tramite un algoritmo di machine learning (anche molto naive come K-Nearest Neighbors) posso prevedere i rating degli item mancanti. ### Explain the process of collecting user likes and dislikes and how they are converted into ratings in content-based systems. Un paio di esempi: - raccogliere feedback espliciti come like, dislike, rating, ecc. sottoforma di dato binario, discreto, etc. - raccogliere feedback impliciti come click, buy, azioni varie, ecc. - raccogliere e analizzare feedback testuali (ad es., fare sentimental analysis sui commenti, ecc.) - raccogliere esempi "positivi e negativi" di ciò che l'utente vuole ### What is the purpose of supervised feature selection and weighting in content-based systems? How does it impact the vector-space representation of keywords? > Alternative: > - Describe the Gini Index and its application in feature selection. How does it measure feature discriminative power? > - Explain the concept of entropy and how it is used for feature selection in content-based systems. How does it differ from the Gini Index? Specie quando si analizzano dati non strutturati le feature possono essere tante; è necessario quindi fare una selezione di quelle più utili a discriminare gli item (dal punto di vista dell'utente). 1) Prendo tutti gli item valutati dall'utente (con le relative valutazioni) 2) Prendi le singole feature e ne calcolo il contenuto informativo (ad esempio con l'indice di Gini e/o con l'Information Gain) rispetto alle valutazioni degli item in cui la feature è presente. $$Gini(w)=1-\sum_{i=0}^t(p_i(w))^2$$ In pratica, dati gli item aventi una feature, considero la distribuzione di probabilità $p_1(w),..., p_t(w)$ dei rating assegnati dall'utente (dove $1,...,t$ sono tutti i possibili valori) ai documenti aventi una certa feature. Sono quindi interessato a selezionare feature per le quali questa distribuzione è disomogenea (le quali hanno alto potere predittivo rispetto al rating che l'utente darà). > NOTA: $p_i(w) = P(i | w)$, quindi la frazione di item valutati $i$ tra quelli contenenti la feature $w$. Si noti che ogni utente quindi avrà feature personalizzate in base a cosa ritiene polarizzante (in alternativa all'approccio classico di data science dove si premiano feature utili a distinguere gli oggetti tra di loro). Da evidenze sperimentali emerge che di solito va bene tenere tra le 50 e le 300 feature. Vengono poi considerati solo gli item che contengono le feature scelte. ### How do content-based systems learn user profiles, and how is this process related to classification and regression modeling? > Alternative: > - Describe the Nearest Neighbor Classification technique in content-based systems. How does it predict ratings for items in the test set? > - Explain the concept of user-specific models in content-based systems and how they are constructed. L'apprendimento di un profilo utente è un problema di machine learning (regressione/classificazione), che può essere risolto anche con un algoritmo naive come **Nearest Neighbor Classification**: - c'è un set di training (item per i quali l'utente ha dato un rating) e uno di test per i quali devo stimare i rating ($D_L, D_U$) - data una coppia di documenti (vettori $X,Y$), si può definire una misura di similarità (e.g., $Cosine(X,Y) = \frac{X^TY}{\sqrt{||X||_2} \sqrt{||Y||_2}}$) - per ogni documento del test set, prendo i k documenti più vicini nel training e ci faccio la media dei rating per fare previsione (la media può essere pesata con la similarità) - la complessità risultante è $O(|D_L| * |D_U|)$ - da un certo punto di vista "si sta facendo clustering" ### What is the advantage of content-based recommendations in terms of providing explanations for the recommendations made? How do content-based recommendations benefit from the interpretability of predictions? I sistemi content-based sono capaci di fornire spiegazioni in quanto: - le raccomandazioni avvengo su base di feature reali selezionate - "ti suggerisco X perché contiene A,B e C" - tali feature sono indipendenti dagli altri utenti (e quindi ci sono meno problemi di privacy) - quando genero le raccomandazioni so anche quali documenti sono stati considerati per stimare il rating - "ti suggerisco X perché assomiglia ad Y e Z" ### Compare the advantages and disadvantages of content-based recommender systems in contrast to collaborative filtering methods. > Alternative: > - How do content-based recommender systems perform in terms of novelty and serendipity compared to collaborative filtering methods? How do content-based methods address the diversity and novelty of recommended items compared to collaborative filtering? > - What is the "cold start" problem in the context of content-based recommender systems? I vantaggi sono: - l'explainability, - facile da implementare anche con componenti terzi - l'indipendenza dalla popolarità (e quindi la capacità di consigliare nuovi item non ancora valutati dagli altri utenti) - richiede meno dati rispetto ai modelli CF I svantaggi invece sono: - limitata esplorazione (problemi di novelty e serendipity) - anche questi modelli soffrono il problema del cold start ### How can content-based models be used for collaborative filtering? Provide examples of how the data can be mapped to support collaborative filtering. > Alternative: > - How does the mapping of user and item interactions in a content-based model approximate item-based neighborhood models for collaborative filtering? > - Can content-based models be used in combination with off-the-shelf content-based algorithms to support collaborative filtering? If yes, how? Un modello CB può essere adattato per fare anche CF aggiungendo agli item delle feature contenenti i rating di ciascun utente. A questo punto l'algoritmo di k-nearest neighborhood diventa lo stesso.