Mencampur data biner dan kontinu dengan linear SVM?

15

Jadi saya sudah bermain-main dengan SVM dan saya ingin tahu apakah ini hal yang baik untuk dilakukan:

Saya memiliki serangkaian fitur berkelanjutan (0 hingga 1) dan serangkaian fitur kategorikal yang saya konversi ke variabel dummy. Dalam kasus khusus ini, saya menyandikan tanggal pengukuran dalam variabel dummy:

Ada 3 periode tempat saya mendapatkan data dan saya mencadangkan 3 nomor fitur untuk mereka:

20:21: 22:

Jadi tergantung pada periode mana data berasal, fitur yang berbeda akan mendapatkan 1 ditugaskan; yang lain akan mendapat 0.

Apakah SVM bekerja dengan baik dengan ini atau ini adalah hal yang buruk untuk dilakukan?

Saya menggunakan SVMLight dan kernel linear.

pengguna3010273
sumber
Ini berfungsi dengan baik.
Marc Claesen
Apa yang telah Anda lakukan sudah cukup baik. Saya telah memberikan jawaban yang sedikit terperinci di sini - quora.com/Machine-Learning/…
TenaliRaman
@TenaliRaman tolong jangan memposting tautan ke situs yang mengharuskan seseorang untuk masuk sebelum bisa membaca apa pun.
Marc Claesen
@MarcClaesen Saya telah mereplikasi jawaban di bawah ini.
TenaliRaman

Jawaban:

8

SVM akan menangani variabel biner dan kontinu selama Anda membuat beberapa preprocessing: semua fitur harus diskalakan atau dinormalisasi. Setelah langkah itu, dari perspektif algoritme, tidak masalah jika fitur bersifat kontinu atau biner: untuk biner, ia melihat sampel yang "jauh", atau sangat mirip; untuk kontinu ada juga di antara nilai-nilai. Kernel tidak masalah sehubungan dengan jenis variabel.

iliasfl
sumber
1
dan apa yang akan menjadi teknik normalisasi terbaik?
Shlomi Schwartz
23

Meniru jawaban saya dari http://www.quora.com/Machine-Learning/What-are-good-ways-to-handle-discrete-and-continuous-inputs-together/answer/Arun-Iyer-1

  • Fitur kontinu terbatas berskala kembali: Semua input kontinu yang dibatasi, skala ulang ke hingga x = 2 x - maks - mnt[1,1] .x=2xmaxminmaxmin
  • Standarisasi semua fitur kontinu: Semua input kontinu harus distandarisasi dan maksud saya ini, untuk setiap fitur kontinu, hitung rata-rata ( ) dan standar deviasi ( σ ) dan lakukan x = x - μμσ .x=xμσ
  • Binarize fitur kategoris / diskrit: Untuk semua fitur kategorikal, gambarkan sebagai beberapa fitur boolean. Sebagai contoh, alih-alih memiliki satu fitur yang disebut Marriage_status, miliki 3 fitur boolean - menikah_status_single, menikah_status_married, menikah_status_divorced dan secara tepat mengatur fitur ini ke 1 atau -1. Seperti yang Anda lihat, untuk setiap fitur kategorikal, Anda menambahkan fitur k binary di mana k adalah jumlah nilai yang diambil oleh fitur kategoris.

Sekarang, Anda dapat mewakili semua fitur dalam satu vektor yang dapat kita asumsikan tertanam dalam dan mulai menggunakan paket yang tidak tersedia untuk klasifikasi / regresi dll.Rn

Rn

TenaliRaman
sumber
Nah, artikel ini cukup menarik mengenai fitur-fitur kategorikal. Tidak disebutkan bahwa pengkodean satu-panas adalah pilihan terbaik untuk fitur-fitur kategorikal adalah apa yang saya dapatkan darinya.
displayname
1
ini adalah jawaban yang sangat baik, saya membaca tautan di komentar @displayname dan ini adalah perbandingan yang bermanfaat. Dari artikel tersebut, tampak bahwa pengkodean biner adalah yang terbaik, (bukan yang panas dijelaskan dalam jawaban ini) dan cukup sederhana juga) Dari tautan "Binary: pertama kategori dikodekan sebagai ordinal, kemudian bilangan bulat tersebut diubah menjadi biner kode, maka digit dari string biner itu dibagi menjadi kolom terpisah. Ini mengkodekan data dalam dimensi yang lebih sedikit yang satu-panas, tetapi dengan beberapa distorsi jarak. "
shelbypereira
Artikel yang diberikan oleh @displayname adalah artikel yang bagus, tetapi jangan dianggap sebagai nilai nominal. Hal pertama yang perlu diingat adalah bahwa hampir semua metode ML bekerja dengan kesamaan atau ukuran jarak. Pilihan metode pengkodean secara langsung mempengaruhi bagaimana jarak atau kesamaan diukur antara dua titik. 1 encoding panas mengatakan bahwa objek dari satu kategori sama dengan hanya dirinya sendiri atau setara, itu menempatkan semua kategori dalam jarak yang sama satu sama lain. Namun, ada kasus di mana kategori tertentu lebih dekat daripada yang lain. Dalam hal ini, penyandian yang berbeda dapat membantu.
TenaliRaman