Jak radzić sobie z maszyną SVM z atrybutami kategorialnymi


18

Mam przestrzeń 35 wymiarów (atrybutów). Mój problem analityczny jest prosty.

Spośród 35 wymiarów ponad 25 ma charakter kategoryczny, a każdy atrybut przyjmuje ponad 50 typów wartości.

W tym scenariuszu wprowadzenie zmiennej zastępczej również nie będzie dla mnie działać.

Jak mogę uruchomić SVM na przestrzeni, która ma wiele atrybutów jakościowych?

Odpowiedzi:


22
  1. Jeśli masz pewność, że atrybut kategoryczny jest w rzeczywistości porządkowy, po prostu traktuj go jak atrybut liczbowy.
  2. Jeśli nie, użyj sztuczki kodującej, aby przekształcić go w atrybut liczbowy. Zgodnie z sugestią autora libsvm można po prostu użyć kodowania 1-of-K. Załóżmy na przykład, że 1-wymiarowy atrybut kategorii przyjmuje wartość z . Po prostu zamień go na liczby trójwymiarowe, tak że , , . Oczywiście spowoduje to znaczne dodatkowe wymiary twojego problemu, ale myślę, że nie jest to poważny problem dla nowoczesnego solvera SVM (bez względu na typ liniowy lub typ jądra, który przyjmujesz).{ZA,b,do}ZA=(1,0,0)b=(0,1,0)do=(0,0,1)

+1 To też chciałem powiedzieć! Na marginesie, dodam również, że partycjonowanie rekurencyjne jest czasem używane do określenia, gdzie najlepiej wykonać cięcia w ciągle wycenianych funkcjach, do podzielenia ich na przedziały.
Kyle.

Ciekawy! „Partycjonowanie rekurencyjne” brzmi jak drzewo (binarne). Czy jest jakaś różnica między tymi dwoma pomysłami? Poza tym SVM jest już w stanie poradzić sobie z funkcją ciągłą, dlaczego mielibyśmy zamieniać ją w pojemniki (ponownie, dane kategoryczne)?
pengsun.thu

3
Czy tworzenie zmiennych zastępczych k-1 nie wystarcza dla zmiennej kategorialnej poziomu ak? np. A = (1,0,0), B = (0,1,0) tutaj, pomijanie (0,0,1)?
Outlier

pytanie uzupełniające: czy dane dummyd 0-1 nie wymagają dodatkowego skalowania?
AZhao,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.