# Cold start

La cold start (partenza a freddo) è un problema cui sono soggetti gli algoritmi informatici dei sistemi informativi che si basano su modellazione dei dati, quali i sistemi di raccomandazione, che si verifica quando il sistema non è in grado di fare alcuna inferenza per utenti o articoli (libri, film, prodotti...) sui quali non ha ancora raccolto sufficienti informazioni.

## Sistemi coinvolti

La partenza a freddo è un problema ben noto e oggetto di significativa ricerca nel settore dei sistemi di raccomandazione. I sistemi di raccomandazione sono una specifica famiglia di sistemi per il filtraggio delle informazioni il cui scopo è presentare all'utente gli articoli (commercio elettronico, film, musica, libri, notizie, immagini, pagine internet) che più probabilmente risulteranno di suo interesse tra tutti quelli presenti nel catalogo. Solitamente un sistema di raccomandazione compara il profilo utente a dei dati di riferimento. Tali dati possono essere o attributi dell'articolo (filtraggio basato sul contenuto) oppure essere relativi alle passate interazioni e attività dell'utente (filtraggio collaborativo). A seconda della natura del sistema, l'utente può essere associato a diversi tipi d'interazione: votazione, articoli preferiti, acquisti, like, numero di visite alla pagina ecc.
Ci sono tre casi di partenza a freddo:
* Nuova comunità: si riferisce all'avvio del sistema di raccomandazione, laddove, sebbene un catalogo di articoli possa esistere, quasi nessun utente è presente e la mancanza di interazioni rende molto difficile fornire raccomandazioni in modo affidabile.
* Nuovo articolo: un nuovo articolo è aggiunto al catalogo e, sebbene possa avere associate informazioni sul suo contenuto, non è stato oggetto di alcuna interazione da parte degli utenti.
* Nuovo utente: un nuovo utente si registra al sistema e non ha ancora fornito alcuna interazione, pertanto non è possibile offrirgli raccomandazioni personalizzate.

### Nuova comunità

La partenza a freddo nel caso di nuova comunità (o bootstrap del sistema) si riferisce al momento di avvio del sistema, laddove sostanzialmente nessun tipo di interazione o utenti siano presenti e il sistema di raccomandazione non ha alcuna informazione su cui basarsi. Questo caso accomuna gli svantaggi sia del caso di nuovi articoli sia del caso di nuovi utenti, poiché entrambi saranno privi di interazioni. A causa di ciò, alcune delle tecniche sviluppate per affrontare i nuovi utenti o articoli potrebbero non essere applicabili in questo caso.

### Nuovo articolo

In caso di nuovo articolo la partenza a freddo si riferisce all'aggiunta di un articolo al catalogo, laddove esso abbia ottenuto poche o nessuna interazione. Ciò costituisce un problema principalmente nel caso del filtraggio collaborativo, poiché questa famiglia di algoritmi determina la rilevanza di un articolo proprio in base alle sue interazioni. Se nessuna interazione è disponibile allora un algoritmo collaborativo puro non sarà in grado di raccomandare l'articolo a nessuno; nel caso in cui invece siano disponibili solo alcune interazioni, sebbene un algoritmo collaborativo sarà in grado di raccomandarlo, la qualità di tali raccomandazioni sarà molto scarsa. Ciò evidenzia un altro problema che non riguarda più i nuovi articoli strettamente parlando, ma tutti gli articoli poco popolari. In alcuni casi (p. es. raccomandazioni di film) capita che un limitato gruppo di articoli riceva un altissimo numero di interazioni, e la maggior parte degli altri ne riceva solo una piccola frazione: in letteratura questo sbilanciamento nel numero di interazioni è chiamato popularity bias.
In quest'ambito la popularity bias è importante poiché, sebbene un articolo sia stato nel catalogo per mesi, potrà comunque aver ricevuto solo poche interazioni: ciò crea un circolo vizioso nel quale articoli poco popolari saranno raccomandati male (quindi agli utenti sbagliati) e quindi avranno molta meno visibilità degli articoli popolari, rendendo difficile ricevano nuove interazioni. Sebbene sia atteso che alcuni articoli risultino meno popolari di altri, la partenza a freddo si riferisce in modo specifico ai casi in cui il sistema di raccomandazione non abbia abbastanza dati per poter raccomandare tali articoli in modo affidabile.
I sistemi di raccomandazione, d'altro canto, sono in teoria molto meno soggetti al problema dei nuovi articoli. Poiché gli algoritmi basati sul contenuto scelgono quali articoli raccomandare sulla base dei loro attributi, anche se l'articolo non ha ricevuto nessuna interazione, i suoi attributi consentiranno di effettuare una raccomandazione. Con ciò naturalmente si assume che i nuovi articoli siano descritti dai loro attributi, il che non sempre avviene: gli attributi editoriali (p. es. direttore, attori, titolo, anno) saranno sempre noti nel momento in cui l'articolo è aggiunto al catalogo, tuttavia altri tipi di attributi potrebbero non esserlo, per esempio quelli estratti dalle recensioni o dalle etichette fornite dagli utenti. Algoritmi basati sul contenuto che si appoggino ad attributi forniti dall'utente saranno comunque soggetti alla partenza a freddo, poiché se nessuna (o poche) interazioni sono avvenute, nessuna (o poche) recensione o etichetta sarà stata inserita.

### Nuovo utente

Questo caso di partenza a freddo si riferisce al momento in cui un nuovo utente si iscrive sul sistema e per un certo periodo di tempo il sistema di raccomandazione deve offrire raccomandazioni senza potersi affidare alle passate interazioni dell'utente, poiché nessuna è ancora avvenuta. Questo problema è particolarmente delicato laddove il sistema di raccomandazione sia una parte importante del servizio offerto, poiché un utente che riceva raccomandazioni di scarsa qualità potrebbe rapidamente decidere di smettere di utilizzare il sistema prima che esso riesca a raccogliere le interazioni di cui ha bisogno per modellare gli interessi dell'utente e produrre raccomandazioni affidabili. La strategia principale che si adotta per gestire il caso del nuovo utente è di chiedere loro di fornire alcune preferenze iniziali per costruire il loro profilo utente e che saranno usate come riferimento. Un punto di incontro dev'essere individuato tra la lunghezza del processo di registrazione, che se troppo lungo potrebbe scoraggiare l'utente inducendone un numero troppo alto a rinunciare, e la quantità di informazioni di cui l'algoritmo di raccomandazione ha bisogno prima di poter funzionare adeguatamente.
Analogamente al caso del nuovo articolo, non tutti gli algoritmi ne sono affetti allo stesso modo. Algoritmi di raccomandazione articolo-articolo ne saranno soggetti in quanto si basano sul profilo per pesare quanto rilevanti sono le preferenze di altri utenti rispetto a quello corrente. Gli algoritmi di filtraggio collaborativo sono i maggiormente affetti, in quanto senza interazioni non sono in grado di produrre nessuna inferenza sulle preferenze dell'utente e quindi non possono produrre alcuna raccomandazione. Gli algoritmi utente-utente invece si comportano in modo diverso: un algoritmo utente-utente che si basa sugli attributi dell'utente (per es. età, genere, provenienza) per individuare utenti simili e raccomandare gli articoli con cui essi hanno interagito in modo positivo, pertanto sarà robusto rispetto ai nuovi utenti e poco affetto dalla partenza a freddo. È utile ricordare che tutte queste informazioni devono essere raccolte durante il processo di registrazione, o richiedendole esplicitamente all'utente oppure sfruttando dati già disponibili in altre fonti, per esempio i suoi profili sulle reti sociali.

## Strategie di mitigazione

A causa del vasto numero di algoritmi di raccomandazione disponibili così come della grande variabilità nelle caratteristiche del servizio e delle interazioni, diverse strategie sono state sviluppate per mitigare il problema del cold start. Solitamente ci si affida ad algoritmi di raccomandazione ibridi, in modo da combinare due o più categorie di algoritmi per mitigare i reciproci svantaggi.
Tutte le tre categorie di cold-start (nuova community, nuovo, item, nuovo utente) sono accomunati dalla mancanza di interazioni e pertanto in alcuni casi possono essere affrontati con strategie simili.
Una strategia comune utilizzata per gestire i nuovi item è associare ad un collaborative filtering, per item già noti, un content-based filtering, per nuovi item. I due algoritmi possono essere combinati in molti modi, tuttavia il limite più forte di queste tecniche è legato alla scarsa qualità delle raccomandazioni prodotte dall'algoritmo content-based laddove sia difficile ottenere una descrizione accurata dell'articolo. Nel caso di nuovi utenti, se non sono disponibili informazioni demografiche (es. età, sesso, professione, stato) o la loro qualità è scarsa, una scelta comune è di sostituire l'algoritmo content effettuando raccomandazioni non personalizzate. Ciò vuol dire, ad esempio, raccomandare gli item più popolari globalmente o per paese, lingua...

### Arricchimento del profilo

Una delle possibili strategie per gestire nuovi item o user è cercare di acquisire rapidamente dati relativi alle loro preferenze. Ci sono vari modi per farlo a seconda della quantità di dati richiesti, queste tecniche sono chiamate in letteratura preference elicitation. La raccolta di interazioni può essere fatta sia in modo esplicito (es. chiedendo all'utente) oppure in modo implicito (es. osservando il suo comportamento). In entrambi i casi ciò implica che l'utente dovrà dedicare un certo tempo ad utilizzare il sistema di raccomandazione, per lui ancora non affidabile, in modo da fornirgli le informazioni necessarie.
Sebbene le strategie di questo tipo siano semplici ed efficaci per la raccolta dei dati, esse rendono il processo di registrazione più lungo e laborioso per l'utente. Inoltre la qualità dei dati ottenuti potrebbe non essere ottimale, in quanto l'utente potrebbe indicare rating per film che ha visto mesi o anni prima, oppure fornirli in modo quasi casuale per poter completare la registrazione velocemente.
La costruzione del profilo utente può anche essere automatizzata integrando informazioni da altre attività, quali piattaforme social o navigazione internet. Ad esempio un utente che abbia cercato informazioni su uno specifico musicista su un portale potrà automaticamente ricevere raccomandazioni relative a quell'artista quando visiterà un servizio che offra musica.
Una variante del precedente approccio è di assegnare automaticamente i rating ai nuovi item in base ai rating che la community di utenti ha assegnato ad item simili. La similarità sarà determinata in base agli attributi content dell'item.
È anche possibile creare il profilo iniziale dell'utente in base a delle informazioni sulla personalità. dell'utente, che possono essere identificate e rappresentante tramite modelli quali il five factor model (FFM).
Un'altra delle possibili tecniche è l'applicare l'active learning. Lo scopo principale dell'active learning è di guidare l'utente in modo che esprima delle preferenze/interazioni che siano le più informative possibile per il sistema di raccomandazione. Ciò richiede di analizzare i dati disponibili e stimare l'utilità dei dati non ancora disponibili (es., rating, interazioni). Ad esempio, poniamo di voler dividere una certa nuvola di punti in due cluster. Una volta che abbiamo individuato due punti appartenenti ciascuno ad un diverso cluster, qual è il punto più informativo che possiamo andare a verificare? Se scegliessimo un punto vicino a quelli che conosciamo probabilmente lo scopriremmo appartenere allo stesso cluster. Invece, scegliendo un punto a metà strada tra i due potremmo riuscire ad individuare dove si colloca il confine tra i due cluster potendo classificare un gran numero di altri punti senza bisogno di osservarli.
Il cold-start è un problema presente anche nel caso di agenti intelligenti. Poiché questi agenti tipicamente imparano le preferenze dell'utente osservando il suo comportamento, impiegherebbero tempo prima che l'agente sia in grado di personalizzarsi. A quel punto, la sua efficacia sarebbe comunque limitata ai casi ed attività che ha già potuto osservare tramite l'utente. Il problema del cold start può essere mitigato introducendo una forma di collaborazione tra agenti relativi a diversi utenti. In questo modo, nuove situazioni possono essere gestite condividendo quanto imparato da altri agenti tramite i rispettivi utenti.

### Mappatura delle feature

Recentemente sono state proposte diverse strategie che si appoggiano al machine learning con l'obiettivo di fondere informazioni di tipo content e collaborativo in un singolo modello. A titolo di esempio uno di questi approcci è chiamato attribute to feature mapping sviluppato per algoritmi di matrix factorization. L'idea alla base è la seguente. Un sistema di raccomandazione che usi la fattorizzazione di matrice rappresenta le interazioni utente-item sotto forma del prodotto di due matrici rettangolari il cui contenuto è imparato tramite machine learning. Ogni utente sarà associato ad una riga della prima matrice ed ogni item ad una colonna della seconda matrice. La riga o colonna associata ad un utente o item è chiamata fattori latenti. Quando viene aggiunto un nuovo item esso non è associato ad alcun fattore latente e la mancanza di interazioni non permette di impararli come è stato fatto per gli altri item già noti. Se ogni item è associato ad alcune feature (es. autore, anno, casa editrice, attori, titolo) è possibile definire una funzione che, date le feature dell'item, stimi i suoi fattori latenti. La funzione può assumere molte forme e sarà addestrata sui dati degli item già noti. La stessa idea si può applicare nel caso di nuovi utenti, poiché se essi hanno fornito alcune informazioni (es. età, nazionalità, genere) allora anche i loro fattori latenti possono essere stimati.

### Pesi delle feature ibridi

Un altro approccio che presenta delle similarità con la mappatura delle feature, riguarda la creazione di un algoritmo content-based filtering ibrido nel quale le feature dell'item o dell'utente siano pesate in base alla sua percezione dell'importanza che hanno nella scelta. Quando l'utente deve scegliere un film o item di suo interesse, diverse feature (e.g. attori, paese di origine, regista, titolo) avranno diversa importanza. Per esempio si considerino i film su James bond, l'attore principale è cambiato molte volte nel corso degli anni, mentre altri no, come ad esempio Lois Maxwell. Per questo motivo la sua presenza sarà probabilmente una caratteristica di maggiore importanza per identificare quel tipo di film rispetto alla presenza di uno dei vari attori principali. Sebbene esistano molte tecniche per calcolare i pesi delle feature in sistemi di raccomandazione, molti di questi metodi sono stati sviluppati per l'information retrieval quali tf–idf, Okapi BM25, solo pochi sono stati pensati specificamente per i sistemi di raccomandazione.
Le tecniche per individuare i pesi delle feature ibride usate in ambito cold-start, in particolare, sono state sviluppate espressamente per i sistemi di raccomandazione. Alcune di esse imparano i pesi delle feature basandosi direttamente sulle interazioni effettuate dall'utente, come FBSM. Altre si appoggiano ad un modello collaborativo intermedio, addestrato sugli item già noti, ed imparano i pesi delle feature in modo da approssimare il modello collaborativo al meglio, pur usando un algoritmo content.
Molto di questi metodi ibridi possono essere considerati come casi speciali di factorization machines.