Set di addestramento e test: suddivisione dei dati

Il modulo precedente ha introdotto l'idea di suddividere il set di dati in due sottoinsiemi:

  • training set, un sottoinsieme per l'addestramento di un modello.
  • set di test: un sottoinsieme di test del modello addestrato.

Puoi suddividere il singolo set di dati nel seguente modo:

Una barra orizzontale divisa in due parti: l'80% è il set di allenamento e il 20% il set di test.

Figura 1. Scomporre un singolo set di dati in un set di addestramento e di test.

Assicurati che il set di test soddisfi le due condizioni seguenti:

  • Sia abbastanza grande da fornire risultati statisticamente significativi.
  • È rappresentativo dell'insieme di dati. In altre parole, non scegliere un set di test con caratteristiche diverse da quelle del set di addestramento.

Supponendo che il set di test soddisfi le due condizioni precedenti, il tuo obiettivo è creare un modello che si richiami bene ai nuovi dati. Il nostro set di test funge da proxy per i nuovi dati. Ad esempio, considera la figura che segue. Nota che il modello appreso per i dati di addestramento è molto semplice. Questo modello non ha un lavoro perfetto: alcune previsioni sono errate. Tuttavia, questo modello ha un buon rendimento sia sui dati di test che sui dati di addestramento. In altre parole, questo semplice modello non sovradimensiona i dati di addestramento.

Due modelli: uno eseguito sui dati di addestramento e l'altro sui dati di test.  Il modello è molto semplice, è solo una linea che divide i punti arancioni dai punti blu.  La perdita dei dati di addestramento è simile a quella dei dati di test.

Figura 2. Convalida del modello addestrato in base ai dati di test.

Non addestrare mai utilizzando dati di test. Se noti risultati sorprendentemente positivi sulle metriche di valutazione, è possibile che tu ti stia addestrando accidentalmente sul set di test. Ad esempio, una precisione elevata potrebbe indicare che i dati dei test sono trapelati nel set di addestramento.

Ad esempio, considera un modello che prevede se un'email è spam, utilizzando come funzionalità la riga dell'oggetto, il corpo dell'email e l'indirizzo email del mittente. Distribuiamo i dati in set di addestramento e test, con una suddivisione 80-20. Dopo l'addestramento, il modello raggiunge una precisione del 99% sia sul set di addestramento che su quello di test. Ci aspettiamo una precisione inferiore nel set di test, quindi diamo un'altra occhiata ai dati e scopriamo che molti degli esempi nel set di test sono duplicati di esempi nel set di addestramento (abbiamo trascurato di eseguire lo scrubbing delle voci duplicate della stessa email di spam dal nostro database di input prima di suddividere i dati). Abbiamo inavvertitamente addestrato alcuni dei nostri dati di test e, di conseguenza, non misuriamo più accuratamente l'efficacia del nostro modello nella generalizzazione a nuovi dati.