Quels algorithmes nécessitent une mise à l'échelle des fonctionnalités, à côté de SVM?

17

Je travaille avec de nombreux algorithmes: RandomForest, DecisionTrees, NaiveBayes, SVM (kernel = linear et rbf), KNN, LDA et XGBoost. Tous étaient assez rapides à l'exception de SVM. C'est à ce moment que j'ai appris qu'il avait besoin d'une mise à l'échelle des fonctionnalités pour fonctionner plus rapidement. Ensuite, j'ai commencé à me demander si je devais faire de même pour les autres algorithmes.

Aizzaac
la source

Réponses:

21

En général, les algorithmes qui exploitent les distances ou les similitudes (par exemple sous forme de produit scalaire) entre des échantillons de données, tels que k-NN et SVM, sont sensibles aux transformations de caractéristiques.

Les classificateurs basés sur des modèles graphiques, tels que Fisher LDA ou Naive Bayes, ainsi que les arbres de décision et les méthodes d'ensemble basées sur les arbres (RF, XGB) sont invariables pour la mise à l'échelle des fonctionnalités, mais il peut être judicieux de redimensionner / standardiser vos données .

hurler
la source
3
+1. Notez simplement que XGBoost implémente également un deuxième algorithme, basé sur le boost linéaire. La mise à l'échelle fera la différence.
usεr11852 dit Réintégrer Monic
1
Pourriez-vous nous en dire plus sur la mise à l'échelle / standardisation des données pour RF et XGB? Je ne vois pas comment cela peut influencer la qualité du modèle.
Tomek Tarczynski
17

Voici une liste que j'ai trouvée sur http://www.dataschool.io/comparing-supervised-learning-algorithms/ indiquant quel classificateur a besoin d' une mise à l'échelle des fonctionnalités :

entrez la description de l'image ici

Tableau complet:

entrez la description de l'image ici

Dans le clustering k-means, vous devez également normaliser votre entrée .

En plus de déterminer si le classificateur exploite les distances ou les similitudes comme Yell Bond l'a mentionné, la descente de gradient stochastique est également sensible à la mise à l'échelle des fonctionnalités (car le taux d'apprentissage dans l'équation de mise à jour de la descente de gradient stochastique est le même pour chaque paramètre {1}):

entrez la description de l'image ici


Les références:

Franck Dernoncourt
la source
Ce qui manque à cette réponse, c'est une explication de pourquoi !! Voir ma réponse pour cela.
kjetil b halvorsen
2
@kjetilbhalvorsen j'ai bien expliqué pour k-means et SGD, mais il existe de nombreux autres algorithmes et modèles. Il y a une limite de 30k-caractères sur Stack Exchange :)
Franck Dernoncourt
Assez lié: stats.stackexchange.com/questions/231285/…
kjetil b halvorsen
@FranckDernoncourt Puis-je vous poser une question à ce sujet? J'ai un ensemble de données de données catégorielles et continues, pour lesquelles je crée un SVM. Les données continues sont fortement asymétriques (longue queue). Pour une transformation sur le continu dois-je faire un log transformation / Box-Coxpuis puis aussi normalise the resultant data to get limits between 0 and 1? Je vais donc normaliser les valeurs du journal. Ensuite, calculez le SVM sur les données continues et catégorielles (0-1) ensemble? Bravo pour toute aide que vous pouvez fournir.
Chuck
7

Ouije=β0+β1Xje+β2zje+ϵje
je=1,,n. Maintenant, si vous dites, centrez et redimensionnez les prédicteurs pour obtenir
Xje=(Xje-X¯)/Dakota du Sud(X)zje=(zje-z¯)/Dakota du Sud(z)
et plutôt ajuster le modèle (en utilisant les moindres carrés ordinaires)
Ouije=β0+β1Xje+β2zje+ϵje
Ensuite, les paramètres ajustés (bêtas) changeront, mais ils changent d'une manière que vous pouvez calculer par simple algèbre à partir de la transformation appliquée. Donc, si nous appelons les bêtas estimés du modèle en utilisant des prédicteurs transformés pourβ1,2 et dénotent les bêtas du modèle non transformé avec β^1,2, nous pouvons calculer un ensemble de bêtas à partir de l'autre, en connaissant les moyennes et les écarts-types des prédicteurs. La relation entre les paramètres transformés et non transformés est la même qu'entre leurs estimations, lorsqu'elles sont basées sur OLS. Une algèbre donnera la relation
β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.

kjetil b halvorsen
la source
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