Quali algoritmi richiedono il ridimensionamento delle funzionalità, oltre a SVM?


17

Sto lavorando con molti algoritmi: RandomForest, DecisionTrees, NaiveBayes, SVM (kernel = linear e rbf), KNN, LDA e XGBoost. Tutti sono stati piuttosto veloci, tranne SVM. Questo è quando ho saputo che ha bisogno del ridimensionamento delle funzionalità per funzionare più velocemente. Poi ho iniziato a chiedermi se avrei dovuto fare lo stesso per gli altri algoritmi.



Risposte:


21

In generale, gli algoritmi che sfruttano le distanze o le somiglianze (ad esempio in forma di prodotto scalare) tra campioni di dati, come k-NN e SVM, sono sensibili alle trasformazioni delle caratteristiche.

Classificatori basati su modelli grafici, come Fisher LDA o Naive Bayes, nonché alberi decisionali e metodi di ensemble basati su alberi (RF, XGB) sono invarianti rispetto al ridimensionamento delle funzionalità, ma potrebbe essere comunque una buona idea ridimensionare / mettere in piedi i dati .


3
+1. Basta notare che XGBoost implementa anche un secondo algoritmo, basato sul potenziamento lineare. Il ridimensionamento farà la differenza lì.
Usεr11852 dice Reinstate Monic il

1
Potresti approfondire di più sul ridimensionamento / standardizzazione dei dati per RF e XGB? Non vedo come possa influenzare la qualità del modello.
Tomek Tarczynski,

17

Ecco un elenco che ho trovato su http://www.dataschool.io/comparing-supervised-learning-algorithms/ che indica quale classificatore necessita del ridimensionamento delle funzionalità :

inserisci qui la descrizione dell'immagine

Tavolo intero:

inserisci qui la descrizione dell'immagine

Nel clustering k-mean devi anche normalizzare il tuo input .

Oltre a considerare se il classificatore sfrutta le distanze o le somiglianze come indicato da Yell Bond, la Discesa gradiente stocastica è anche sensibile al ridimensionamento delle caratteristiche (poiché la velocità di apprendimento nell'equazione di aggiornamento della Discesa stocastica gradiente è la stessa per ogni parametro {1}):

inserisci qui la descrizione dell'immagine


Riferimenti:


Ciò che manca di questa risposta è una spiegazione del perché !! Vedi la mia risposta per questo.
kjetil b halvorsen,

2
@kjetilbhalvorsen ho spiegato bene per k-mean e SGD, ma ci sono molti altri algoritmi e modelli. Esiste un limite di 30k-char su Stack Exchange :)
Franck Dernoncourt,


@FranckDernoncourt Posso farti una domanda basandoci su questo? Ho un set di dati sia categorici che continui, per i quali sto costruendo un SVM. I dati continui sono fortemente distorti (coda lunga). Per la trasformazione in continuo dovrei fare un log transformation / Box-Coxe poi anche normalise the resultant data to get limits between 0 and 1? Quindi normalizzerò i valori del registro. Quindi calcolare l'SVM sui dati continui e categorici (0-1) insieme? Saluti per qualsiasi aiuto tu possa fornire.
Chuck,

7

Yi=β0+β1xi+β2zi+ϵi
i=1,,n
xi=(xix¯)/sd(x)zi=(ziz¯)/sd(z)
Yi=β0+β1xi+β2zi+ϵi
β1,2β^1,2
β0=β0β1x¯sd(x)β2z¯sd(z),β1=β1sd(x),β2=β2sd(z)
So standardization is not a necessary part of modelling. (It might still be done for other reasons, which we do not cover here). This answer depends also upon us using ordinary least squares. For some other fitting methods, such as ridge or lasso, standardization is important, because we loose this invariance we have with least squares. This is easy to see: both lasso and ridge do regularization based on the size of the betas, so any transformation which change the relative sizes of the betas will change the result!

And this discussion for the case of linear regression tells you what you should look after in other cases: Is there invariance, or is it not? Generally, methods which depends on distance measures among the predictors will not show invariance, so standardization is important. Another example will be clustering.


1
Can you explicitly show how one calculates one set of betas from the other in this particular example of scalings you have applied?
Mathews24

@kjetil Can I ask you a question building on this? I have a dataset of both categorical and continuous data, for which I'm building an SVM. The continuous data is highly skewed (long tail). For transformation on the continuous should I do a log transformation / Box-Cox and then also normalise the resultant data to get limits between 0 and 1? So i'll be normalising the log values. Then calculate the SVM on the continuous and categorical (0-1) data together? Cheers for any help you can provide
Chuck

1
Can you please add this as a new question? with reference back here!
kjetil b halvorsen
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.