Conseguenza del ridimensionamento delle funzioni


11

Attualmente sto usando SVM e ridimensionando le mie funzioni di allenamento nella gamma di [0,1]. Prima inserisco / trasformo il mio set di allenamento e quindi applico la stessa trasformazione al mio set di test. Per esempio:

    ### Configure transformation and apply to training set
    min_max_scaler = MinMaxScaler(feature_range=(0, 1))
    X_train = min_max_scaler.fit_transform(X_train)

    ### Perform transformation on testing set
    X_test = min_max_scaler.transform(X_test)

Supponiamo che una determinata funzione nel set di addestramento abbia un intervallo di [0,100] e che la stessa funzione nel set di test abbia un intervallo di [-10,120]. Nel set di addestramento tale funzione verrà ridimensionata in modo appropriato su [0,1], mentre nel set di test tale funzione verrà ridimensionata in un intervallo al di fuori di quello specificato per primo, qualcosa come [-0.1,1.2].

Mi chiedevo quali fossero le conseguenze delle funzionalità del set di test fuori dalla portata di quelle utilizzate per addestrare il modello? È un problema?

Risposte:


6

All'interno di ogni classe, avrai distribuzioni di valori per le funzionalità. Questo di per sé non è motivo di preoccupazione.

Da un punto di vista leggermente teorico, puoi chiederti perché dovresti ridimensionare le tue caratteristiche e perché dovresti ridimensionarle esattamente nel modo scelto.
Una delle ragioni potrebbe essere che il tuo particolare algoritmo di allenamento converge più velocemente (meglio) con valori intorno a 0 - 1 che con caratteristiche che coprono altri ordini di grandezza. In tal caso, probabilmente stai bene. La mia ipotesi è che il tuo SVM vada bene: vuoi evitare numeri troppo grandi a causa del prodotto interno, ma un massimo di 1,2 contro un massimo di 1,0 non farà molta differenza.
(OTOH, se per esempio sapessi che il tuo algoritmo non accetta valori negativi, ovviamente saresti nei guai.)

La domanda pratica è se il tuo modello si comporta bene per casi che sono leggermente al di fuori del range coperto dall'allenamento. Credo che ciò possa essere meglio e possibilmente rispondere solo testando tali casi / ispezionando i risultati dei test per la riduzione delle prestazioni per casi al di fuori del dominio di addestramento. È una preoccupazione valida e esaminarla sarebbe parte della validazione del tuo modello.

Osservare le differenze delle dimensioni che descrivi è IMHO un motivo per dare un'occhiata abbastanza da vicino alla stabilità del modello.


7

Questo è stato inteso come un commento, ma è troppo lungo.

Il fatto che il set di test abbia un intervallo diverso potrebbe indicare che il set di allenamento non è una buona rappresentazione del set di test. Tuttavia, se la differenza è davvero piccola come nel tuo esempio, è probabile che non influisca sulle tue previsioni. Sfortunatamente, non penso di avere una buona ragione per pensare che non influirà su una SVM in nessuna circostanza.

Si noti che la logica per l'utilizzo di MinMaxScalar è (secondo la documentazione):

La motivazione per utilizzare questo ridimensionamento include la solidità a deviazioni standard molto ridotte delle funzionalità e la conservazione di zero voci nei dati sparsi.

Pertanto, è importante assicurarsi che i dati si adattino a quel caso.

Se sei davvero preoccupato di avere un intervallo di differenza, dovresti usare invece una standardizzazione regolare (come preprocessing.scale).


Ciao Robert, grazie per la risposta! Un buon punto sulla rappresentazione del set di addestramento / test, ma si tratta di dati di serie temporali, quindi quando arrivano nuovi dati non posso garantire che i valori saranno simili nell'intervallo di quello che erano prima. Ho la stessa identica sensazione di te che non ho buone ragioni per pensare che non influirà su una SVM in nessuna circostanza.
mike1886,

Hai confrontato le previsioni usando MinMaxScaler e la standardizzazione?
Robert Smith,

Ho e i risultati sono simili, ma ciò non mi dice se le cose si stanno rovinando con MinMaxScalar.
mike1886,

Sicuro. In ogni caso, sarebbe meglio usare la standardizzazione se non stai ottenendo qualcosa di prezioso MinMaxScaler.
Robert Smith,
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.