Змішування безперервних та бінарних даних з лінійним SVM?


15

Тож я грав із SVM, і мені цікаво, чи це добре робити:

У мене є набір безперервних функцій (від 0 до 1) та набір категоричних ознак, які я перетворив на фіктивні змінні. У цьому конкретному випадку я кодую дату вимірювання у фіктивній змінній:

У мене є три періоди, з яких я маю дані, і я зарезервував 3 номери функцій для них:

20: 21: 22:

Отже, залежно від того, з якого періоду дані надходять, різні функції отримуватимуть 1 призначення; інші отримають 0.

Чи правильно працюватиме SVM з цим чи це погано?

Я використовую SVMLight та лінійне ядро.


Це чудово працює.
Marc Claesen

Те, що ви зробили, досить добре. Я дав тут трохи детальну відповідь - quora.com/Machine-Learning/…
TenaliRaman

@TenaliRaman, будь ласка, не публікуйте посилання на веб-сайти, на яких потрібно ввійти, перш ніж мати можливість щось прочитати.
Marc Claesen

@MarcClaesen Я повторив відповідь нижче.
TenaliRaman

Відповіді:


8

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


1
і яка була б найкраща методика нормалізації?
Шломі Шварц

23

Реплікація моєї відповіді з http://www.quora.com/Machine-Learning/What-are-good-ways-to-handle-discrete-and-continuous-inputs-together/answer/Arun-Iyer-1

  • Функції безперервного обмеження масштабу: Усі безперервні вхідні дані, які обмежені, переставляють їх до через x = 2 x - max - min[1,1] .x=2xmaxminmaxmin
  • Стандартизуйте всі безперервні характеристики: Весь безперервний вхід повинен бути стандартизованим, і це означає, що для кожної безперервної характеристики обчислюйте її середнє значення ( ) та стандартне відхилення ( σ ) і виконайте x = x - µμσ .x=xμσ
  • Бінаризація категоричних / дискретних ознак: для всіх категоричних ознак представляйте їх як кілька булевих ознак. Наприклад, замість однієї функції під назвою wedding_status, майте 3 булеві функції - married_status_single, married_status_married, married_status_divorced і належним чином встановіть ці функції на 1 або -1. Як бачимо, для кожної категоріальної ознаки ви додаєте k бінарну ознаку, де k - кількість значень, які приймає категорична ознака.

Тепер ви можете представити всі особливості в одному векторі, який ми можемо вважати вбудованим в і почати використовувати нестандартні пакети для класифікації / регресії тощо.Rn

Rn


Що ж, ця стаття досить цікава щодо категоричних особливостей. Не сказано, що одне гаряче кодування є найкращим вибором для категоричних особливостей - це те, що я виходжу з нього.
ім'я відображення

1
це відмінна відповідь, я прочитав посилання в коментарі @displayname, і це корисне порівняння. Зі статті випливає, що двійкове кодування є найкращим (не гарячим, описаним у цій відповіді) і досить простим). З посилання "Бінарне: спочатку категорії кодуються як порядкові, потім ці цілі числа перетворюються на двійкові. код, то цифри з цього двійкового рядка розбиваються на окремі стовпці. Це кодує дані в менших розмірах, які є гарячими, але з деяким викривленням відстаней ".
shelbypereira

Стаття, надана @displayname, є хорошою статтею, але не повинна сприйматись за номінал. Перше, що потрібно пам’ятати, - це те, що майже всі методи МЛ працюють із мірою подібності чи відстані. Вибір методу кодування безпосередньо впливає на те, як вимірюються відстані або схожість між двома точками. 1 гаряче кодування говорить про те, що об'єкт однієї категорії схожий лише на себе або рівнозначно, він ставить усі категорії на рівну відстань один до одного. Однак бувають випадки, коли певні категорії ближчі за інші. У цьому випадку може допомогти інше кодування.
TenaliRaman
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.