Bantu saya memahami Mesin Dukungan Vektor

76

Saya memahami dasar-dasar apa tujuan Support Vector Machines dalam hal mengklasifikasikan set input ke beberapa kelas yang berbeda, tetapi apa yang saya tidak mengerti adalah beberapa detail seluk beluk. Sebagai permulaan, saya agak bingung dengan penggunaan Slack Variables. Apa tujuan mereka

Saya melakukan masalah klasifikasi di mana saya menangkap pembacaan tekanan dari sensor yang saya pasang di sol sepatu. Subjek akan duduk, berdiri, dan berjalan selama beberapa menit sementara data tekanan direkam. Saya ingin melatih classifier untuk dapat menentukan apakah seseorang duduk, berdiri atau berjalan dan dapat melakukan itu untuk data tes di masa depan. Jenis classifier apa yang perlu saya coba? Apa cara terbaik bagi saya untuk melatih classifier dari data yang saya ambil? Saya memiliki 1000 entri untuk duduk, berdiri dan berjalan (3x1000 = total 3000), dan mereka semua memiliki bentuk vektor fitur berikut. (pressurefromsensor1, pressurefromsensor2, pressurefromsensor3, pressurefromsensor4)

rohanbk
sumber

Jawaban:

103

Saya pikir Anda mencoba memulai dari akhir yang buruk. Apa yang harus diketahui tentang SVM untuk menggunakannya adalah hanya bahwa algoritma ini menemukan hyperplane di hyperspace atribut yang memisahkan dua kelas terbaik, di mana cara terbaik dengan margin terbesar di antara kelas (pengetahuan bagaimana hal itu dilakukan adalah musuh Anda di sini, karena itu mengaburkan gambar keseluruhan), seperti yang diilustrasikan oleh gambar terkenal seperti ini: teks alternatif

Sekarang, ada beberapa masalah yang tersisa.
Pertama-tama, apa yang harus dilakukan dengan outlier jahat yang berbaring tanpa malu di tengah awan titik-titik kelas yang berbeda?
teks alternatif
Untuk tujuan ini, kami mengizinkan pengoptimal untuk membiarkan sampel tertentu salah dimasukkan, namun menghukum masing-masing contoh tersebut. Untuk menghindari opimisasi multi-tujuan, hukuman untuk kasus mislabelled digabung dengan ukuran margin dengan menggunakan parameter C tambahan yang mengontrol keseimbangan di antara tujuan tersebut.
Selanjutnya, kadang-kadang masalahnya tidak linier dan tidak ada hyperplane yang baik dapat ditemukan. Di sini, kami memperkenalkan trik kernel - kami hanya memproyeksikan ruang asli, nonlinier ke dimensi yang lebih tinggi dengan beberapa transformasi nonlinier, tentu saja ditentukan oleh sekelompok parameter tambahan, berharap bahwa di ruang yang dihasilkan masalah akan cocok untuk dataran SVM:

teks alternatif

Sekali lagi, dengan beberapa matematika dan kita dapat melihat bahwa seluruh prosedur transformasi ini dapat disembunyikan secara elegan dengan memodifikasi fungsi tujuan dengan mengganti produk titik dari objek dengan apa yang disebut fungsi kernel.
Akhirnya, ini semua berfungsi untuk 2 kelas, dan Anda memiliki 3; apa yang harus dilakukan dengan itu Di sini kita membuat 3 pengklasifikasi 2-kelas (duduk - tidak duduk, berdiri - tidak berdiri, berjalan - tidak berjalan) dan dalam klasifikasi menggabungkan mereka dengan pemungutan suara.

Ok, jadi masalah tampaknya terpecahkan, tetapi kita harus memilih kernel (di sini kita berkonsultasi dengan intuisi kita dan memilih RBF) dan memasukkan setidaknya beberapa parameter (C + kernel). Dan kita harus memiliki fungsi obyektif yang aman untuknya, misalnya perkiraan kesalahan dari validasi silang. Jadi kami membiarkan komputer bekerja pada itu, pergi untuk minum kopi, kembali dan melihat bahwa ada beberapa parameter optimal. Bagus! Sekarang kita baru saja mulai validasi silang bersarang untuk mendapatkan aproksimasi kesalahan dan voila.

Alur kerja singkat ini tentu saja terlalu disederhanakan untuk sepenuhnya benar, tetapi menunjukkan alasan mengapa saya pikir Anda harus terlebih dahulu mencoba dengan hutan acak , yang hampir parameter-independen, multiclass asli, memberikan perkiraan kesalahan yang tidak bias dan melakukan hampir sama baiknya serta dilengkapi SVM .


sumber
5
(+1) Hebat bahwa Anda menambahkan beberapa gambar untuk menggambarkan semuanya!
chl
3
@ mbq Karena Anda tampaknya sangat kompeten di SVM, izinkan saya meminta Anda untuk mengklarifikasi keraguan saya: setelah kami menemukan hyperplane pemisah terbaik, untuk apa kami menggunakannya? Kita dapat mendefinisikan SVM sebagai metode yang, pertama, memilih hyperplane terbaik untuk mengklasifikasikan poin data dengan benar, dan, kedua, ini menggunakan hyperplane ini untuk memutuskan titik data baru di dua kelas. Baik? (Saya punya beberapa keraguan pada bagian kedua)
DavideChicco.it
3
@ DavideChicco.it Pada dasarnya masalah inti dari seluruh ML adalah membuat model yang dapat dipercaya memprediksi data baru, jadi ya.