Come suddividere il treno / test nei sistemi di raccomandazione


8

Sto lavorando con il set di dati MovieLens10M, prevedendo le valutazioni degli utenti. Se voglio valutare equamente il mio algoritmo, come devo dividere i miei dati di allenamento v. Test?

Per impostazione predefinita, credo che i dati siano suddivisi in set di test treno v. In cui 'test' contiene filmati precedentemente non visti nel set di addestramento. Se il mio modello richiede che ogni film sia stato visto almeno una volta nel set di formazione, come devo dividere i miei dati? Devo prendere tutte tranne N le classificazioni di ciascun utente per tutti i dati e valutare le mie prestazioni sulle classifiche NxUser_num date?

Risposte:


2

Leave-one-outla validazione incrociata è probabilmente il modo più diretto per affrontare questo problema. Se ti capita di utilizzare un modello che richiede molto tempo per la formazione, lasciare n% fuori potrebbe essere più appropriato.

Il metodo prevede l'eliminazione di una valutazione nota e il tentativo di prevederla. Se desideri rimuovere n percento delle valutazioni, selezionale in modo casuale anziché scegliere un numero specifico di valutazioni di ogni utente. E mantieni n abbastanza piccolo - nell'ordine del 10% o meno.

Ecco un buon trattamento dei metodi di validazione incrociata per i sistemi di raccomandazione . Generalmente:

Holdout è un metodo che divide un set di dati in due parti: un set di allenamento e un set di test. Questi set potrebbero avere proporzioni diverse. Nell'impostazione dei sistemi di raccomandazione, il partizionamento viene eseguito selezionando casualmente alcune classificazioni da tutti (o alcuni) degli utenti. Le classificazioni selezionate costituiscono il set di test, mentre le restanti sono il set di allenamento. Questo metodo è anche chiamato congedo-k-out. In [17], Sarwar et al. dividere il set di dati in 80% di training e 20% di dati di test. In [18] vengono scelti diversi rapporti tra allenamento e test (da 0,2 a 0,95 con un incremento di 0,05) e per ciascuno l'esperimento viene ripetuto dieci volte con diversi set di allenamento e test e infine i risultati sono mediati. In [13] il set di test è realizzato dal 10% degli utenti: vengono trattenute 5 valutazioni per ciascun utente nel set di test.

Leave-one-out è un metodo ottenuto impostando k = 1 nel metodo Leave-k-out. Dato un utente attivo, tratteniamo a sua volta un articolo valutato. L'algoritmo di apprendimento è addestrato sui dati rimanenti. L'elemento trattenuto viene utilizzato per valutare la correttezza della previsione e la media dei risultati di tutte le valutazioni al fine di calcolare la stima della qualità finale. Questo metodo presenta alcuni svantaggi, come l'adattamento eccessivo e l'elevata complessità computazionale. Questa tecnica è adatta per valutare la qualità di raccomandazione del modello per gli utenti che sono già registrati come membri del sistema. Karypis et al. [10] ha adottato una versione banale del congedo creando il set di test selezionando casualmente una delle voci diverse da zero per ciascun utente e le rimanenti voci per la formazione. In [7], Breese et al.

Una semplice variante del metodo di controllo è la convalida incrociata m-fold. Consiste nel dividere il set di dati in m pieghe indipendenti (in modo che le pieghe non si sovrappongano). A sua volta, ogni piega viene utilizzata esattamente una volta come set di test e le pieghe rimanenti vengono utilizzate per l'addestramento del modello. Secondo [20] e [11], il numero suggerito di pieghe è 10. Questa tecnica è adatta per valutare la capacità di raccomandare il modello quando nuovi utenti (cioè gli utenti non appartengono già al modello) si uniscono al sistema. Scegliendo un numero ragionevole di pieghe possiamo calcolare la media, la varianza e l'intervallo di confidenza.

Spero che sia di aiuto!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.