Согласно документации объекта StandardScaler в scikit-learn:
Например, многие элементы, используемые в целевой функции алгоритма обучения (например, ядро RBF машин опорных векторов или регуляризаторы L1 и L2 линейных моделей), предполагают, что все объекты сосредоточены вокруг 0 и имеют дисперсию в том же порядке. Если у признака есть отклонение, которое на несколько порядков больше, чем у других, оно может доминировать в целевой функции и сделать оценщика неспособным учиться на других признаках правильно, как ожидалось.
Я должен масштабировать свои особенности перед классификацией. Есть ли простой способ показать, почему я должен это делать? Ссылки на научные статьи были бы еще лучше. Я уже нашел один, но, вероятно, есть много других.
Это зависит от того, какое ядро вы используете. Безусловно, наиболее часто используемым (кроме линейного) является гауссово ядро, которое имеет вид
SVM использует эту функцию и использует ее для сравнения сходства точки ( ) с любой другой точкой в обучающем наборе, суммируя различия следующим образом:х 1
где - ваш пример, а значения - ориентиры.Икс L
Если функция находится в диапазоне от 0 до 50 000, а функция находится в диапазоне от 0 до 0,01, вы можете увидеть, что будет доминировать в этой сумме, а не окажет практически никакого влияния. По этой причине необходимо масштабировать объекты перед применением ядра.Икс1 Икс2 Икс1 Икс2
Если вы хотите узнать больше, я рекомендую модуль 12 (Support Vector Machines) из онлайн-курса Stanford по машинному обучению в Coursera (бесплатный и доступный в любое время): https://www.coursera.org/course/ml
источник