Bagaimana menangani SVM dengan atribut kategorikal

18

Saya memiliki ruang 35 dimensi (atribut). Masalah analitik saya adalah klasifikasi sederhana.

Dari 35 dimensi, lebih dari 25 adalah kategorikal dan setiap atribut mengambil lebih dari 50 jenis nilai.

Dalam skenario itu, memperkenalkan variabel dummy juga tidak akan bekerja untuk saya.

Bagaimana saya bisa menjalankan SVM di ruang yang memiliki banyak atribut kategorikal?

Hima
sumber

Jawaban:

22
  1. Jika Anda yakin atribut kategoris sebenarnya adalah ordinal, maka anggap saja sebagai atribut numerik.
  2. Jika tidak, gunakan beberapa trik pengkodean untuk mengubahnya menjadi atribut numerik. Menurut saran dari penulis libsvm, seseorang cukup menggunakan pengkodean 1-of-K. Sebagai contoh, anggaplah atribut kategori 1 dimensi mengambil nilai dari . Ubah saja menjadi angka 3 dimensi sehingga A = ( 1 , 0 , 0 ) , B = ( 0 , 1 , 0 ) , C = ( 0 , 0 , 1 ){SEBUAH,B,C}SEBUAH=(1,0,0)B=(0,1,0)C=(0,0,1). Tentu saja, ini akan menimbulkan dimensi tambahan yang signifikan dalam masalah Anda, tetapi saya pikir itu bukan masalah serius bagi pemecah SVM modern (tidak peduli tipe Linear atau tipe Kernel yang Anda adopsi).
pengsun.thu
sumber
+1 Ini juga yang akan saya katakan! Sebagai tambahan, saya juga menambahkan bahwa partisi rekursif kadang-kadang digunakan untuk mengidentifikasi di mana cara terbaik untuk memotong fitur yang bernilai terus menerus, untuk mempartisi mereka menjadi nampan.
Kyle.
Menarik! "Partisi rekursif" terdengar pohon (biner) bagi saya. Adakah perbedaan antara kedua ide ini? Selain itu, SVM sudah dapat menangani fitur kontinu, mengapa kita mengubahnya menjadi bins (sekali lagi, data kategorikal)?
pengsun.thu
3
Bukankah membuat variabel dummy k-1 cukup untuk variabel kategori level? misalnya A = (1,0,0), B = (0,1,0) di sini, melewatkan (0,0,1)?
Outlier
pertanyaan tindak lanjut: apakah tidak ada penskalaan tambahan yang diperlukan dari data 0-1 yang dummied?
AZhao