Які алгоритми потребують масштабування функцій, крім SVM?


17

Я працюю з багатьма алгоритмами: RandomForest, DecisionTrees, NaiveBayes, SVM (ядро = лінійне та rbf), KNN, LDA та XGBoost. Усі вони були досить швидкими, за винятком SVM. Саме тоді я дізнався, що для швидшого роботи потрібне масштабування функцій. Тоді я задумався, чи варто робити те ж саме для інших алгоритмів.



Відповіді:


21

Взагалі, алгоритми, що експлуатують відстані або подібність (наприклад, у вигляді скалярного продукту) між зразками даних, такими як k-NN та SVM, чутливі до перетворень ознак.

Класифікатори на основі графічної моделі, такі як Fisher LDA або Naive Bayes, а також дерева рішень і методи ансамблю на основі дерева (RF, XGB) є інваріантними для масштабування функцій, але все-таки може бути хорошою ідеєю змінити масштаб / стандартизувати свої дані. .


3
+1. Зауважте лише, що XGBoost фактично реалізує і другий алгоритм, заснований на лінійному підсиленні. Масштабування там зміниться.
usεr11852 повідомляє Відновити Моніку

2
Чи можете ви детальніше розглянути питання про масштабування / стандартизацію даних для RF та XGB? Я не бачу, як це може вплинути на якість моделі.
Томек Тарчинський

17

Ось список, який я знайшов на веб-сайті http://www.dataschool.io/comparing-supervisor-learning-algorithms/ із зазначенням того, який класифікатор потребує масштабування функції :

введіть тут опис зображення

Повний стіл:

введіть тут опис зображення

У кластеризації k-означає, що вам також потрібно нормалізувати вхід .

Окрім того, чи враховує, чи використовує класифікатор відстані чи схожість, як згадував Єлл Бонд, стохастичний градієнтний спуск також чутливий до масштабування функцій (оскільки швидкість навчання в рівнянні оновлення Stochastic Gradient Descent однакова для кожного параметра {1}):

введіть тут опис зображення


Список літератури:


Чого бракує у цій відповіді, є деяке пояснення чому !! Дивіться мою відповідь на це.
kjetil b halvorsen

2
@kjetilbhalvorsen добре я пояснив, що стосується k-засобів і SGD, але є багато інших алгоритмів і моделей. На біржі стеків існує обмеження на 30-ти мільйон :)
Franck Dernoncourt

Дещо пов’язане з цим: stats.stackexchange.com/questions/231285/…
kjetil b halvorsen

@FranckDernoncourt Чи можу я задати вам питання щодо цього? У мене є набір даних як категоричних, так і безперервних даних, для яких я будую SVM. Суцільні дані сильно перекошені (довгий хвіст). Для трансформації на безперервному слід робити a, log transformation / Box-Coxа потім також normalise the resultant data to get limits between 0 and 1? Тому я буду нормалізувати значення журналу. Тоді обчислюємо SVM на даних безперервного та категоричного (0-1) разом? Вітаю за будь-яку допомогу, яку ви можете надати.
Чак

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.