При использовании SVM зачем мне масштабировать функции?

9

Согласно документации объекта StandardScaler в scikit-learn:

Например, многие элементы, используемые в целевой функции алгоритма обучения (например, ядро ​​RBF машин опорных векторов или регуляризаторы L1 и L2 линейных моделей), предполагают, что все объекты сосредоточены вокруг 0 ​​и имеют дисперсию в том же порядке. Если у признака есть отклонение, которое на несколько порядков больше, чем у других, оно может доминировать в целевой функции и сделать оценщика неспособным учиться на других признаках правильно, как ожидалось.

Я должен масштабировать свои особенности перед классификацией. Есть ли простой способ показать, почему я должен это делать? Ссылки на научные статьи были бы еще лучше. Я уже нашел один, но, вероятно, есть много других.

прохвост
источник

Ответы:

16

γ = 1κ(u,v)=exp(uv2)γ=1

Имеются 3 вектора признаков:

x1=[1000,1,2],x2=[900,1,2],x3=[1050,10,20].

затем , то есть предположительно больше похож на чем на .x 1 x 3 x 2κ(x1,x2)=exp(10000)κ(x1,x3)=exp(2905)x1x3Икс2

Относительные различия между и: х 2[0,1,0,0],Икс1

Икс2[0,1,0,0],Икс3[0,05,-10,10],

Таким образом, без масштабирования мы заключаем, что больше похож на чем на , хотя относительные различия по признакам между и намного больше, чем у и .х 3 х 2 х 1 х 3 х 1Икс1Икс3Икс2Икс1Икс3Икс1Икс2

Другими словами, если вы не масштабируете все объекты до сопоставимых диапазонов, объекты с наибольшим диапазоном будут полностью доминировать при вычислении матрицы ядра.

Вы можете найти простые примеры, чтобы проиллюстрировать это, в следующем документе: Практическое руководство по классификации опорных векторов (раздел 2.2).

Марк Клазен
источник
Вы также можете обсудить регуляризацию: масштаб весов зависит от масштаба входных данных ...
seanv507
Эффект регуляризации является то , что различная окалина подресть различный оптимальный , что несколько ортогональных к этому конкретному вопросу. С
Марк Клазен
2
Но действительно может быть, что близость вдоль одного измерения важнее. Таким образом, цель состоит не в том, чтобы иметь одинаковую дисперсию во всех объектах, а в том, чтобы их масштабировать так, чтобы расстояния вдоль каждого объекта имели примерно одинаковую важность для задачи.
isarandi
@Marc Claesen, если ваши переменные имеют разные порядки величины, то ваши веса также будут иметь разные порядки величины, а норма l2 будет фокусироваться на входах, которые имеют небольшую дисперсию и соответственно большие веса. Иными словами, регуляризация весовой нормы гарантирует, что «малые» входы будут иметь небольшие эффекты. Это имеет смысл только в том случае, если вы стандартизировали «маленький» (по всем вашим входам), например, путем нормализации ваших переменных
seanv507
1
@ seanv507, который применяется только к линейному SVM.
Марк Клазен
0

Это зависит от того, какое ядро ​​вы используете. Безусловно, наиболее часто используемым (кроме линейного) является гауссово ядро, которое имеет вид

езнак равноеИксп(-||Икс1-Икс2||22σ2)

SVM использует эту функцию и использует ее для сравнения сходства точки ( ) с любой другой точкой в ​​обучающем наборе, суммируя различия следующим образом:Икс1

(Икс1-L1)2+(Икс2-L2)2,,,+(ИксN-LN)2

где - ваш пример, а значения - ориентиры.ИксL

Если функция находится в диапазоне от 0 до 50 000, а функция находится в диапазоне от 0 до 0,01, вы можете увидеть, что будет доминировать в этой сумме, а не окажет практически никакого влияния. По этой причине необходимо масштабировать объекты перед применением ядра.Икс1Икс2Икс1Икс2

Если вы хотите узнать больше, я рекомендую модуль 12 (Support Vector Machines) из онлайн-курса Stanford по машинному обучению в Coursera (бесплатный и доступный в любое время): https://www.coursera.org/course/ml

ralph346526
источник