Как бороться с SVM с категориальными атрибутами

18

У меня есть пространство 35 измерений (атрибуты). Моя аналитическая проблема - простая классификационная.

Из 35 измерений более 25 являются категориальными, и каждый атрибут принимает более 50 типов значений.

В этом случае введение фиктивной переменной также не будет работать для меня.

Как я могу запустить SVM в пространстве, которое имеет много категориальных атрибутов?

Хима
источник

Ответы:

22
  1. Если вы уверены, что категориальный атрибут на самом деле является порядковым, то просто рассматривайте его как числовой атрибут.
  2. Если нет, используйте некоторый трюк кодирования, чтобы превратить его в числовой атрибут. По предложению автора libsvm можно просто использовать кодирование 1-из-K. Например, предположим, что одномерный атрибут категории принимает значение из . Просто превратите его в 3-мерные числа, чтобы , , . Конечно, это приведет к значительным дополнительным аспектам вашей проблемы, но я думаю, что это не является серьезной проблемой для современного решателя SVM (независимо от того, какой линейный тип или тип ядра вы используете).{A,В,С}Aзнак равно(1,0,0)Взнак равно(0,1,0)Сзнак равно(0,0,1)
pengsun.thu
источник
+1 Это то, что я тоже собирался сказать! Кроме того, я бы также добавил, что рекурсивное разбиение иногда используется, чтобы определить, где лучше всего делать сокращения в непрерывно оцениваемых объектах, чтобы разделить их на корзины.
Кайл.
Интересный! «Рекурсивное разбиение» звучит для меня (двоичным) деревом. Есть ли разница между этими двумя идеями? Кроме того, SVM уже может иметь дело с непрерывной функцией, почему мы должны превращать ее в корзины (опять же, категориальные данные)?
pengsun.thu
3
Не достаточно ли создания фиктивных переменных k-1 для категориальной переменной уровня ak? например, A = (1,0,0), B = (0,1,0) здесь, пропуск (0,0,1)?
Выпад
дополнительный вопрос: не требуется ли дополнительное масштабирование для фиктивных данных 0-1?
AZhao