Навіщо використовувати SVM, чому мені потрібно масштабувати функції?


9

Відповідно до документації об'єкта StandardScaler в scikit-learn:

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

Я повинен масштабувати свої особливості перед класифікацією. Чи є якийсь простий спосіб показати, чому я повинен це робити? Посилання на наукові статті були б ще кращими. Я вже знайшов одного, але, мабуть, багато іншого.

Відповіді:


16

Всі методи ядра базуються на відстані. Функцією ядра RBF є (використовуючи для простота).κ(u,v)=exp(uv2)γ=1

Дано 3 функції векторів:

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

тоді , тобто нібито більше схожий на ніж на .κ(x1,x2)=exp(10000)κ(x1,x3)=exp(2905)x1x3x2

Відносні відмінності між та: x1

x2[0.1,0,0],x3[0.05,10,10].

Отже, не змінюючи масштаб, ми робимо висновок, що більше схожий на ніж на , хоча відносні відмінності на особливість між та набагато більше, ніж у та .x1x3x2x1x3x1x2

Іншими словами, якщо ви не масштабуєте всі функції до порівнянних діапазонів, функції з найбільшим діапазоном повністю домінуватимуть у обчисленні матриці ядра.

Прості приклади для того, щоб проілюструвати це, ви можете знайти в наступному документі: Практичний посібник з підтримки векторної класифікації (Розділ 2.2).


Ви також можете поговорити про регуляризацію: масштаб ваг залежить від шкали входів ...
seanv507

Ефект регуляризації полягає в тому, що різні масштабування передбачають різний оптимальний , що є дещо ортогональним для даного питання. C
Marc Claesen

2
Але дійсно може бути, що близькість уздовж одного виміру важливіша. Таким чином, мета насправді не є однаковою дисперсією у всіх характеристиках, але їх масштабування таким чином, щоб відстані вздовж кожної функції мали приблизно однакове значення для виконання завдання.
ісаранді

@Marc Claesen, якщо ваші змінні мають різну величину, то ваги також будуть різними порядками, а норма l2 зосередиться на входах, які мають невелику дисперсію та відповідно велику вагу. по-іншому, регуляризація вагових норм забезпечує малі наслідки для «малих» входів. Це має сенс лише в тому випадку, якщо ви стандартизували "малий" (через свої входи), наприклад, нормалізуючи свої змінні
seanv507

1
@ seanv507, що стосується лише лінійного SVM.
Марк Клайсен

0

Це залежить від того, яке ядро ​​ви використовуєте. На сьогодні найпоширенішим (крім лінійного) є гауссова ядро, яке має форму

f=exp(||x1x2||22σ2)

SVM приймає цю функцію і використовує її для порівняння подібності точки ( ) до будь-якої іншої точки набору тренувань шляхом підсумовування різниць як:x1

(x1l1)2+(x2l2)2...+(xnln)2

де - ваш приклад, а значення - орієнтири.xl

Якщо функція коливається від 0 до 50 000, тоді як функція коливається від 0 до 0,01, ви можете бачити, що буде домінувати над цією сумою, а практично не матиме впливу. З цієї причини необхідно масштабувати функції перед застосуванням ядра.x1x2x1x2

Якщо ви хочете дізнатися більше, рекомендую модуль 12 (Підтримка векторних машин) з онлайн-курсу Стенфорда з машинного навчання в Coursera (безкоштовно та будь-коли): https://www.coursera.org/course/ml

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