SVM satu kelas vs. SVM contoh

16

Saya mengerti bahwa satu kelas SVM (OSVM) diusulkan dengan tidak adanya data negatif dalam pikiran dan bahwa mereka berusaha untuk menemukan batas keputusan yang memisahkan set positif dan beberapa titik jangkar negatif, kata asalnya.

Sebuah karya pada tahun 2011 mengusulkan Exemplar SVMs (ESVMs) yang melatih "satu pengelompokan per kategori" yang mengklaim berbeda dari OSVM, di mana ESVM tidak "mengharuskan pemetaan contoh ke dalam ruang fitur umum di mana kernel kesamaan dapat dihitung ". Saya tidak begitu mengerti apa artinya ini dan bagaimana ESVM berbeda dari OSVM. Jadi, bagaimana perbedaannya? Dan bagaimana penghitungan kernel kesamaan ini dihindari dalam ESVM?

bjou
sumber

Jawaban:

20

(Anda mungkin ingin melihat "tabel" di bawah ini terlebih dahulu)

Mari kita mulai dengan mesin vektor dukungan "klasik". Ini belajar membedakan antara dua kategori. Anda mengumpulkan beberapa contoh kategori A, beberapa kategori B dan meneruskan keduanya ke algoritma pelatihan SVM, yang menemukan garis / bidang / hyperplane yang paling baik memisahkan A dari B. Ini berfungsi - dan sering bekerja dengan cukup baik - saat Anda ingin membedakan antara kelas yang didefinisikan dengan baik dan saling eksklusif: pria vs wanita, huruf-huruf alfabet, dan sebagainya.

Namun, misalkan Anda ingin mengidentifikasi "A" sebagai gantinya. Anda bisa memperlakukan ini sebagai masalah klasifikasi: Bagaimana cara membedakan "A" dari "tidak-A". Cukup mudah untuk mengumpulkan satu set pelatihan yang terdiri dari gambar anjing, tetapi apa yang harus masuk ke set pelatihan Anda bukan-anjing? Karena ada banyak hal yang bukan anjing, Anda mungkin akan kesulitan membangun rangkaian pelatihan yang komprehensif dan representatif untuk semua hal yang bukan anjing. Sebagai gantinya, Anda mungkin mempertimbangkan untuk menggunakan classifier satu kelas. Klasifikasi dua kelas tradisional menemukan bidang (hiper) yang memisahkan A dari B. SVM satu kelas malah menemukan garis / bidang / hyperplane yang memisahkan semua titik di dalam kelas ("A") dari titik asal ;

Ensemble SVM "system" sebenarnya adalah kumpulan dari banyak "subunit" SVM dua kelas. Setiap subunit dilatih menggunakan satucontoh positif untuk satu kelas dan kumpulan besar contoh negatif untuk yang lain. Jadi, alih-alih membedakan anjing vs contoh bukan anjing (SVM dua kelas standar), atau anjing vs asal (SVM satu kelas), setiap subunit mendiskriminasi antara anjing tertentu (misalnya, "Rex") dan banyak yang bukan-anjing contoh. SVM subunit individu dilatih untuk setiap contoh kelas positif, jadi Anda akan memiliki satu SVM untuk Rex, satu lagi untuk Fido, satu lagi untuk anjing tetangga Anda yang menggonggong pada pukul 6 pagi, dan seterusnya. Keluaran dari subunit SVM ini dikalibrasi dan digabungkan untuk menentukan apakah seekor anjing, bukan hanya salah satu dari contoh spesifik, muncul dalam data pengujian. Saya kira Anda juga bisa menganggap masing-masing subnits sebagai SVM satu kelas, di mana ruang koordinat digeser sehingga contoh positif tunggal terletak pada titik asal.

Singkatnya, perbedaan utama adalah:

Data pelatihan

  • Dua kelas SVM: Contoh positif dan negatif
  • Satu kelas SVM: contoh positif hanya
  • Ensemble "sistem" SVM: Contoh positif dan negatif. Setiap subunit dilatih pada satu contoh positif dan banyak contoh negatif.

Jumlah mesin

  • Dua kelas SVM: satu
  • Satu kelas SVM: satu
  • Ensemble SVM "system": banyak (satu mesin subunit per contoh positif)

Contoh per kelas (per mesin)

  • Dua kelas SVM: banyak / banyak
  • SVM satu kelas: banyak / satu (ditetapkan pada titik asal)
  • Ensemble "sistem" SVM: banyak / banyak
  • Ensemble SVM "subunit": satu / banyak

Pengolahan pasca

  • Dua kelas SVM: Tidak perlu
  • SVM satu kelas: Tidak perlu
  • Ensemble SVM: Diperlukan untuk menggabungkan output masing-masing SVM ke prediksi tingkat kelas.

Catatan tambahan: Anda telah bertanya apa yang dimaksud dengan "[pendekatan lain] memerlukan pemetaan contoh ke dalam ruang fitur umum di mana kernel kesamaan dapat dihitung." Saya pikir mereka bermaksud bahwa SVM dua kelas tradisional beroperasi di bawah asumsi bahwa semua anggota kelas entah bagaimana mirip, dan jadi Anda ingin menemukan kernel yang menempatkan tarian besar dan dachsund dekat satu sama lain, tetapi jauh dari yang lain. Sebaliknya, sistem SVM ansambel mengesampingkan ini dengan memanggil sesuatu anjing jika itu cukup hebat seperti -e atau ATAU seperti dachsund ATAU seperti pudel, tanpa khawatir tentang hubungan antara para contoh.

Matt Krause
sumber
Terima kasih atas jawaban yang bagus dan komprehensif. Hanya untuk menjadi jelas, di beberapa tempat Anda memang berarti "Ensemble" dari Exemplar SVMs, tetapi di tempat lain, hanya "Exemplar" SVM? Saya pikir adil, harus ada perbandingan dengan (1) OSVM TUNGGAL dengan ESVM TUNGGAL, atau (2) ENSEMBLE OSVMs dengan ENSEMBLE ESVMs.
bjou
Saya harap tidak terlalu berlebihan untuk bertanya seberapa baik generalisasi ini ke beberapa kelas? Jika saya memiliki kucing, anjing, dan burung, apakah itu membuat esvm memerlukan satu "elemen" SVM untuk fido vs setiap kucing DAN satu "elemen" SVM untuk fido vs setiap burung? Jika saya memiliki 10 titik data untuk masing-masing 3 kategori apakah itu berarti saya memiliki 20 elemen SVM per "anjing" atau ansambel yang terdiri dari 200 elemen? Bagaimana jika saya memiliki 300 titik data dan 20 dimensi, atau 50k titik data dan 50k dimensi. Jika saya membuat hutan SVM acak, maka bisakah saya menggunakan himpunan bagian acak untuk mengurangi dampak "kutukan dimensi"?
EngrStudent
@ bjou, saya sedikit ceroboh dengan terminologi ESVM, jadi saya kembali dan membersihkannya. Saya kira Anda bisa menganggap "subunit" dari sistem ESVM sebagai seperti OSVM, kecuali bahwa sistem koordinat telah dipusatkan kembali sehingga contoh positifnya terletak pada asalnya.
Matt Krause
1
@ EngrStudent, ini sebenarnya menggeneralisasi dengan sangat baik. Di koran, mereka menggunakan tugas Pascal VOC, yang memiliki ~ 20 kategori. Untuk memperluas contoh hewan kami, Anda akan memiliki subunit untuk "Fido" vs. (semua burung, kucing, dan ikan), subunit lain untuk "Rex" vs semua non-anjing, dan seterusnya untuk setiap anjing. Untuk burung, Anda akan melatih "Tweety" vs. (semua kucing, anjing, ikan), "Polly" vs semua yang bukan burung, dan seterusnya. Juga akan ada subunit untuk masing-masing contoh kucing dan ikan, yang dilatih untuk semua non-kucing dan non-ikan. Anda berakhir dengan 1 SVM per contoh berlabel, terlepas dari jumlah kelas.
Matt Krause
Kedengarannya seperti sepupu meningkatkan (dalam arti gradien meningkatkan pohon). Ensembelnya, apakah kesalahan keluarannya tertimbang, atau tertimbang seragam?
EngrStudent
2

Singkatnya, model ESVM adalah ansambel SVM yang dilatih untuk membedakan setiap elemen set pelatihan tunggal dari yang lainnya, sementara OSVM adalah ansambel SVM yang dilatih untuk membedakan setiap subset elemen pelatihan yang dimiliki satu kelas. Jadi, jika Anda memiliki 300 kucing dan 300 contoh anjing di set pelatihan, ESVM akan menghasilkan 600 SVM, masing-masing untuk satu hewan peliharaan sementara OSVM akan membuat dua SVM (pertama untuk semua kucing, kedua untuk semua anjing).

Dengan cara ini, ESVM tidak perlu menemukan ruang di mana seluruh kluster kelas melainkan ruang di mana elemen tunggal ini merupakan pencilan, yang cenderung lebih sederhana dan mengarah ke presisi tinggi. Ingat dikatakan disediakan oleh ansambel.


sumber