Domanda:
Quando devo applicare il ridimensionamento delle funzionalità per i miei dati
jjepsuomi
2014-10-29 14:00:48 UTC
view on stackexchange narkive permalink

Ho avuto una discussione con un collega e abbiamo iniziato a chiederci, quando si dovrebbe applicare la normalizzazione / ridimensionamento delle funzionalità ai dati? Supponiamo di avere una serie di funzionalità con alcune funzionalità che hanno una gamma di valori molto ampia e alcune funzionalità che hanno una gamma di valori non così ampia.

Se dovessi eseguire l'analisi delle componenti principali, avrei bisogno di normalizzare i dati, questo è chiaro, ma diciamo che stiamo cercando di classificare i dati usando la regressione lineare k-vicina più vicina e semplice metodo.

In quali condizioni dovrei o non dovrei normalizzare i dati e perché? Un esempio breve e semplice che evidenzi il punto aggiunto alla risposta sarebbe perfetto.

Vedi: https://stats.stackexchange.com/questions/29781/when-conducting-multiple-regression-when-should-you-center-your-predictor-varia
Cinque risposte:
#1
+20
Karolis Koncevičius
2014-10-29 15:05:40 UTC
view on stackexchange narkive permalink

A mio avviso, la domanda sul ridimensionamento / non ridimensionamento delle funzionalità nell'apprendimento automatico è un'affermazione sulle unità di misura delle funzionalità. Ed è correlato alla conoscenza pregressa che hai del problema.

Alcuni algoritmi, come Linear Discriminant Analysis e Naive Bayes fanno scalabilità di progettazione e non avresti alcun effetto nell'eseguirne uno manualmente. Altri, come knn, possono esserne gravemente influenzati.

Quindi con il tipo di classificatore knn devi misurare le distanze tra coppie di campioni. Le distanze saranno ovviamente influenzate dalle unità di misura utilizzate. Immagina di classificare la popolazione in maschi e femmine e di avere un sacco di misurazioni inclusa l'altezza. Ora il risultato della classificazione sarà influenzato dalle misurazioni in cui è stata riportata l'altezza. Se l'altezza è misurata in nanometri, è probabile che qualsiasi k vicini più vicini avrà semplicemente misure di altezza simili. Devi ridimensionare.

Tuttavia, come esempio di contrasto immagina di classificare qualcosa che ha uguali unità di misura registrate con il rumore. Come una fotografia o un microarray o uno spettro. in questo caso sai già a priori che le tue caratteristiche hanno unità uguali. Se dovessi ridimensionarli tutti, amplieresti l'effetto delle caratteristiche che sono costanti su tutti i campioni, ma sono state misurate con il rumore. (Come uno sfondo della foto). Anche questo avrà un'influenza su knn e potrebbe ridurre drasticamente le prestazioni se i tuoi dati avessero valori costanti più rumorosi rispetto a quelli che variano. Ora qualsiasi somiglianza tra i vicini k più vicini verrà influenzata dal rumore.

Quindi questo è come con tutto il resto nell'apprendimento automatico: usa la conoscenza precedente quando possibile e nel caso delle funzionalità della scatola nera fai entrambe le cose e incrocia convalidare.

Buoni esempi ...
Solo un rapido follow-up, perché kNN dovrebbe essere influenzato dal ridimensionamento delle funzionalità?A quanto ho capito, la distanza di Mahalanobis dovrebbe già tenerne conto.
@SebastianRaschka Quando kNN è stato menzionato per qualche motivo, avevo in mente solo la distanza euclidea.Questo dovrebbe spiegare la confusione.kNN ovviamente può essere utilizzato con altre metriche di distanza e grazie per averlo notato.
Nel corso di Machine Learning di Andrew Ng, spiega che il ridimensionamento delle caratteristiche è importante anche quando si esegue la discesa del gradiente per adattarsi a un modello di regressione lineare (https://www.coursera.org/learn/machine-learning/lecture/xx3Da/gradient-descent-in-practice-i-feature-scaling).
#2
+16
Neil G
2014-10-29 14:58:58 UTC
view on stackexchange narkive permalink

Dovresti normalizzare quando la scala di una caratteristica è irrilevante o fuorviante e non normalizzare quando la scala è significativa.

K-means considera significativa la distanza euclidea. Se una caratteristica ha una scala più ampia rispetto a un'altra, ma la prima caratteristica rappresenta veramente una maggiore diversità, allora il raggruppamento in quella dimensione dovrebbe essere penalizzato.

Nella regressione, fintanto che hai un pregiudizio non ha importanza se normalizzi o meno poiché stai scoprendo una mappa affine e la composizione di una trasformazione in scala e di una mappa affine è ancora affine.

Quando sono coinvolti tassi di apprendimento, ad es. quando esegui la discesa del gradiente, la scala di input ridimensiona efficacemente i gradienti, il che potrebbe richiedere un metodo di secondo ordine per stabilizzare le velocità di apprendimento per parametro. Probabilmente è più facile normalizzare gli input se non importa diversamente.

#3
+8
show_stopper
2014-10-29 14:49:07 UTC
view on stackexchange narkive permalink

Esistono diversi metodi di normalizzazione.

Per quanto riguarda la regressione, se prevedi di normalizzare la funzione di un singolo fattore, non ce n'è bisogno. Il motivo è che la normalizzazione di un singolo fattore come la divisione o la moltiplicazione per una costante viene già regolata nei pesi (ad esempio, diciamo che il peso di una caratteristica è 3, ma se normalizziamo tutti i valori della caratteristica dividendo per 2, allora il nuovo il peso sarà 6, quindi nel complesso l'effetto è lo stesso). Al contrario, se intendi dire normalizzare, allora c'è una storia diversa. La normalizzazione media è buona quando c'è un'enorme varianza nei valori delle caratteristiche (1 70 300 4). Inoltre, se una singola caratteristica può avere sia un effetto positivo che negativo, allora è bene intendere normalizzare. Questo perché quando intendi normalizzare un dato insieme di valori positivi, i valori sotto la media diventano negativi mentre quelli sopra la media diventano positivi.

Per quanto riguarda i vicini k-più vicini, la normalizzazione dovrebbe essere eseguita tutte le volte. Questo perché in KNN, la distanza tra i punti provoca il raggruppamento. Quindi, se stai applicando KNN su un problema con 2 caratteristiche con la prima caratteristica che va da 1-10 e l'altra che va da 1-1000, allora tutti i cluster verranno generati in base alla seconda caratteristica poiché la differenza tra 1 e 10 è piccolo rispetto a 1-1000 e quindi possono essere raggruppati in un unico gruppo

"... se una singola caratteristica può avere un effetto sia positivo che negativo, allora è bene intendere normalizzare. Questo perché quando intendi normalizzare un dato insieme di valori positivi, i valori sotto la media diventano negativi mentre quelli sopra la media diventano positivi."- l'esistenza di un termine bias non consentirà a qualsiasi caratteristica di avere un effetto positivo o negativo nonostante un intervallo di valori positivo?
#4
+4
cbeleites unhappy with SX
2015-10-04 17:00:37 UTC
view on stackexchange narkive permalink

Ecco un altro esempio di applicazione chemiometrica in cui il ridimensionamento delle caratteristiche sarebbe disastroso:

Ci sono molti compiti di classificazione (analisi qualitativa) della forma "verifica se il contenuto di alcuni analiti (= sostanza di interesse) è inferiore a ( o superiore) una determinata soglia (es. limite legale) ". In questo caso, i sensori per produrre i dati di input per il classificatore verrebbero scelti per avere $$ signal = f (analita ~ concentrazione) $$, preferibilmente con $ f $ come una funzione ripida e persino lineare.

In questa situazione, il ridimensionamento delle caratteristiche cancellerebbe essenzialmente tutte le informazioni rilevanti dai dati grezzi.


In generale, alcune domande che aiutano a decidere se il ridimensionamento è una buona idea:

  • Cosa fa la normalizzazione ai tuoi dati rispetto a. risolvere il compito a portata di mano? Dovrebbe diventare più facile o rischi di eliminare informazioni importanti?
  • Il tuo algoritmo / classificatore reagisce in modo sensibile alla scala (numerica) dei dati? (convergenza)
  • L'algoritmo / classificatore è fortemente influenzato da scale differenti di caratteristiche differenti?
  • In tal caso, le tue caratteristiche condividono le stesse scale (o comparabili) o anche unità fisiche?
  • Il tuo classificatore / algoritmo / implementazione effettiva esegue la propria normalizzazione?
#5
+3
RUser4512
2018-04-19 13:55:32 UTC
view on stackexchange narkive permalink

Questo problema sembra effettivamente trascurato in molti corsi / risorse di machine learning. Ho finito per scrivere un articolo sul ridimensionamento sul mio blog.

In breve, ci sono metodi di apprendimento invarianti di "trasformazione monotonica" (alberi decisionali e tutto ciò che ne deriva), metodi di apprendimento invariante di traduzione (kNN, SVM con kernel RBF) e altri.

Ovviamente, i metodi di apprendimento invarianti di trasformazione monotonica sono invarianti di traduzione.

Con la prima classe, non è necessario eseguire alcun centraggio / ridimensionamento. Con gli algoritmi invarianti di traduzione, la centratura è inutile. Ora, per gli altri metodi, dipende davvero dai dati. Di solito, può valere la pena provare con il ridimensionamento (specialmente se le variabili hanno diversi ordini di grandezza).

In un caso generale, consiglierei di provare varie pre-elaborazioni dei dati: senza ridimensionamento, ridimensionamento dividendo per la deviazione standard, ridimensionamento dividendo per la somma dei valori assoluti dei dati (che lo farebbe giacere su un simplex). Uno di loro funzionerà meglio degli altri, ma non posso dire quale finché non ho provato.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...