Eseguire la normalizzazione delle funzioni prima o all'interno della convalida del modello?


52

Una buona pratica comune in Machine Learning è quella di caratterizzare la normalizzazione o la standardizzazione dei dati delle variabili del predittore, tutto qui, centrare i dati sottraendo la media e normalizzarli dividendoli per la varianza (o anche la deviazione standard). Per l'autocontenimento e per la mia comprensione facciamo questo per raggiungere due cose principali:

  1. Evitare pesi di modello extra piccoli ai fini della stabilità numerica.
  2. Garantire una rapida convergenza di algoritmi di ottimizzazione come, ad esempio, il gradiente coniugato in modo che la grande ampiezza di una dimensione predittore rispetto alle altre non porti a una convergenza lenta.

Di solito suddividiamo i dati in set di addestramento, validazione e test. In letteratura di solito vediamo che per eseguire la normalizzazione delle caratteristiche prendono la media e la varianza (o deviazione standard) sull'intero insieme di variabili predittive. Il grande difetto che vedo qui è che se lo fai, stai di fatto introducendo informazioni future nelle variabili predittive dell'allenamento, ovvero le informazioni future contenute nella media e nella varianza.

Pertanto, caratterizzo la normalizzazione sui dati di allenamento e salvo la media e la varianza. Quindi applico la normalizzazione delle funzioni alle variabili predittive dei set di dati di validazione e test usando la media e le varianze di addestramento. Ci sono dei difetti fondamentali in questo? qualcuno può consigliare un'alternativa migliore?


Risposte:


46

Il tuo approccio è del tutto corretto. Sebbene le trasformazioni di dati siano spesso sottovalutate come "preelaborazione", non si può sottolineare abbastanza che le trasformazioni al fine di ottimizzare le prestazioni del modello possono e devono essere trattate come parte del processo di costruzione del modello.

Ragionamento: un modello deve essere applicato su dati invisibili che in generale non sono disponibili al momento della creazione del modello. Il processo di validazione (inclusa la suddivisione dei dati) simula questo. Quindi, per ottenere una buona stima della qualità del modello (e del potere di generalizzazione) è necessario limitare il calcolo dei parametri di normalizzazione (media e varianza) al set di addestramento.

Posso solo immaginare perché questo non è sempre fatto in letteratura. Un argomento potrebbe essere che il calcolo della media e della varianza non è così sensibile alle piccole variazioni dei dati (ma anche questo è vero solo se la dimensione del campione di base è abbastanza grande e i dati sono distribuiti approssimativamente normalmente senza valori anomali estremi).


Lo trovo un po 'confuso. L'OP afferma che IS sta eseguendo la normalizzazione delle funzionalità su validazione e test dei set di dati. La tua risposta afferma innanzitutto che il suo approccio è corretto. Quindi dici "bisogna limitare il calcolo dei parametri di normalizzazione al set di addestramento" che non è quello che sta facendo. Quindi la tua risposta si contraddice dicendo che quello che sta facendo è corretto e quindi suggerendo il contrario. Cosa mi sto perdendo qui?
Mahonya,

4
Ciò che fa l'OP è descritto nel suo ultimo paragrafo e questo è esattamente quello che ho detto. Naturalmente la normalizzazione viene applicata al set di test / validazione se è stata applicata al set di addestramento. Il punto importante è che i parametri di questa normalizzazione sono stati calcolati solo sui dati di allenamento e non sull'insieme. Spero che sia di aiuto.
Steffen,

Ah, grazie mille. Ho frainteso la tua risposta. Pensavo che stavi suggerendo l '"applicazione" della normalizzazione solo al set di allenamento, che chiaramente non era quello che hai suggerito.
Mahonya,

2

La normalizzazione delle funzionalità consiste nel rendere diverse funzionalità nella stessa scala. Il ridimensionamento accelera la discesa del gradiente evitando molte iterazioni extra richieste quando una o più funzioni assumono valori molto più grandi rispetto alle altre (senza ridimensionamento, la funzione di costo visualizzata mostrerà una grande asimmetria).

Penso che abbia senso usare la media e la var del set di allenamento quando arrivano i dati del test. Tuttavia, se la dimensione dei dati è enorme, sia i set di training che quelli di validazione possono essere approssimativamente visti come una distribuzione normale, quindi condividono approssimativamente la media e la var.


1
Il motivo per cui la normalizzazione dei dati può accelerare la discesa del gradiente, immagino, è che senza normalizzazione l'rss ha contorni ellittici, quindi, dato il tasso di apprendimento fisso, potrebbe essere necessario più iterazioni per far convergere la discesa del gradiente. Mentre con il ridimensionamento, rss ha contorni circolari (simmetrici), quindi la discesa del gradiente converge rapidamente. Ho ragione?
avocado,

1

La metodologia che hai descritto è solida come altri hanno già detto. È necessario eseguire esattamente la stessa trasformazione sulle funzioni del set di test che si fa sulle funzioni del set di allenamento.

Penso che valga la pena aggiungere che un altro motivo per la normalizzazione delle funzionalità è quello di migliorare le prestazioni di determinati processi che sono sensibili alle differenze nella scala di determinate variabili. Ad esempio, l'analisi dei componenti principali (PCA) mira a catturare la percentuale maggiore di varianza e, di conseguenza, darà più peso alle variabili che mostrano la varianza maggiore se la normalizzazione delle caratteristiche non viene eseguita inizialmente.


Ottimo punto! grazie per averlo inserito. Ricordo dai miei studi di normalizzare sempre la matrice di input prima di calcolare PCA.
SkyWalker,
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.