# 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.