Klasifikasi untuk label kelas yang tidak pasti

11

Katakanlah saya memiliki serangkaian instance dengan label kelas yang terkait. Tidak masalah bagaimana label ini diberi label, tetapi seberapa yakin keanggotaan kelas mereka. Setiap instanc milik tepat satu kelas. Katakanlah saya dapat mengukur kepastian setiap keanggotaan kelas dengan atribut nominal yang berubah dari 1 menjadi 3 (sangat pasti menjadi tidak pasti, masing-masing).

Apakah ada semacam classifier yang mempertimbangkan ukuran kepastian dan jika ya, apakah itu tersedia dalam toolkit WEKA?

Saya membayangkan situasi ini cukup sering terjadi, misalnya ketika contoh diklasifikasikan oleh manusia yang tidak selalu sepenuhnya yakin. Dalam kasus saya, saya harus mengklasifikasikan gambar, dan kadang-kadang gambar bisa menjadi milik lebih dari satu kelas. Jika ini terjadi, saya memberikan kelas ketidakpastian tinggi, tetapi masih mengklasifikasikannya hanya dengan satu kelas.

Atau apakah ada pendekatan lain untuk masalah ini, tanpa pengklasifikasi khusus? Misalnya hanya mengambil klasifikasi "tertentu" untuk pelatihan? Saya khawatir bahwa dalam kasus ini, akan ada lebih banyak kesalahan klasifikasi karena kasus "perbatasan" tidak dicakup.

wnstnsmth
sumber
1
Apakah setiap entri milik tepat satu kelas? Atau mungkin beberapa entri masuk ke kelas 12 dengan kepastian 1 dan kelas 34 dengan kepastian 2?
user31264
Setiap entri milik tepat satu kelas, dalam hal ini.
wnstnsmth

Jawaban:

8

Pertama-tama, seperti yang sudah dijelaskan oleh @Marc Claesen, klasifikasi semi-terawasi adalah salah satu teknik untuk menjaga situasi di mana Anda tahu bahwa kelas benar-benar berbeda, tetapi Anda tidak yakin kelas mana yang dimiliki oleh kasing itu.

Namun, ada situasi terkait juga, di mana "kenyataan" tidak begitu jelas, dan asumsi memiliki kelas yang benar-benar berbeda tidak terpenuhi: kasus batas mungkin merupakan realitas "fisik" (lihat di bawah untuk makalah tentang aplikasi di mana kami bertemu dengan kondisi seperti itu).

Ada satu asumsi penting untuk pengklasifikasi semi-diawasi yang perlu Anda pastikan terpenuhi: asumsi bahwa dalam ruang fitur, batas kelas datang bersama dengan kepadatan sampel yang rendah . Ini disebut sebagai asumsi cluster.
Sekalipun kenyataan yang mendasari data Anda memiliki kelas yang berbeda, kumpulan data Anda mungkin memiliki lebih banyak kasus garis batas yang tidak proporsional: misalnya jika teknik klasifikasi Anda ditargetkan untuk mengklasifikasikan kasus-kasus sulit, sedangkan kasus-kasus yang jelas dan mudah tidak menarik dan data pelatihan Anda sudah mencerminkan hal ini. situasi.

hanya mengambil klasifikasi "pasti" untuk pelatihan? Saya khawatir bahwa dalam kasus ini, akan ada lebih banyak kesalahan klasifikasi karena kasus "perbatasan" tidak dicakup.

Saya sepenuhnya setuju dengan Anda bahwa mengecualikan kasus batas sering merupakan ide yang buruk: dengan menghapus semua kasus sulit Anda berakhir dengan masalah artifisial mudah. IMHO bahkan lebih buruk bahwa tidak termasuk kasus garis batas biasanya tidak berhenti dengan pelatihan model, tetapi kasus garis batas juga dikecualikan dari pengujian, sehingga menguji model hanya dengan kasus mudah. Dengan itu Anda bahkan tidak akan menyadari bahwa model tidak berkinerja baik dengan kasus batas.

Berikut adalah dua makalah yang kami tulis tentang masalah yang berbeda dari masalah Anda karena dalam aplikasi kami juga kenyataannya dapat memiliki kelas "campuran" (versi yang lebih umum dari masalah Anda: ketidakpastian dalam label referensi juga tercakup).

Tautan menuju ke halaman proyek dari paket R yang saya kembangkan untuk melakukan perhitungan kinerja. Ada lebih banyak tautan ke halaman web resmi dan manuskrip naskah saya. Meskipun saya belum menggunakan Weka sejauh ini, saya mengerti bahwa antarmuka ke R tersedia .


pertimbangan praktis:

  • Meskipun pendekatan salin dan label berbeda secara langsung, ia tidak bekerja dengan baik dengan semua pengklasifikasi dan implementasi dalam praktik. Misalnya AFAIK tidak ada cara untuk memberitahu libSVMtuning dengan validasi silang bahwa semua salinan dari setiap titik data perlu disimpan dalam lipatan validasi silang yang sama. Dengan demikian libSVMpenyetelan mungkin akan menghasilkan model pakaian besar-besaran.
  • Juga untuk regresi logistik, saya menemukan bahwa banyak implementasi tidak memungkinkan label keanggotaan parsial yang saya butuhkan.
  • Implementasi yang saya gunakan untuk makalah di atas sebenarnya adalah JST tanpa lapisan tersembunyi menggunakan logistik sebagai fungsi tautan sigmoidal ( nnet::multinom).
cbeleites tidak senang dengan SX
sumber
Pertimbangan praktis pertama Anda, meskipun benar, tidak berlaku libsvmsecara khusus. Para libsvmpenulis memberikan versi alternatif dari setiap rilis di mana klasifikasi berdasarkan contoh dimungkinkan, menghindari masalah ini sama sekali. Hal-hal inilah yang mendorong saya untuk umumnya menggunakan perpustakaan algoritma secara langsung, daripada pembungkus seperti Weka / scipy / ... csie.ntu.edu.tw/~cjlin/libsvmtools/#weights_for_data_instances
Marc Claesen
@MarcClaesen: terima kasih - saya belum melihat itu. Tetapi tidakkah Anda perlu menyediakan dua contoh kasus yang sama, satu berbobot mengatakan dengan 1/3 kelas A dan lainnya dengan 2/3 kelas B? Dalam kasus apa pun, tidak perlu menyediakan banyak salinan dari kasing yang jelas akan membuat penyetelan kurang bermasalah (untuk data saya, saya harus melakukan pemisahan penyetelan secara eksternal karena saya memiliki struktur data "hierarkis" dengan beberapa pengukuran kasus aktual) )
cbeleites tidak senang dengan SX
@cbeiteles ketika sebuah instance mungkin milik beberapa kelas, Anda memang perlu menyediakannya beberapa kali, bahkan dengan bobot instance ini. Saya belum mempertimbangkan kemungkinan itu.
Marc Claesen
6

Ini adalah salah satu generalisasi dari klasifikasi yang ditangani dalam pembelajaran semi-diawasi. Jika Anda memiliki pengukuran kepastian, Anda dapat menggunakan pendekatan yang memungkinkan pembobotan instance pelatihan. Semakin tinggi kepastian, semakin besar bobot contoh yang sesuai. Contoh-contoh dari pendekatan tersebut termasuk SVM-instance-weighted dan regresi logistik.

Saya yakin weka memiliki implementasi dari algoritma ini. Jika semuanya gagal, sampel beberapa instans dari instans dengan kepastian tinggi. Anda dapat menggunakan pendekatan ini untuk SVM atau LR tradisional.

Contoh: SVM

Jika saya tidak salah, weka memiliki antarmuka ke LIBSVM . LIBSVM memungkinkan Anda untuk memecahkan SVM berbobot kelas di semua rilisnya, dan SVM berbobot instance dalam versi khusus dari setiap rilis. Saya akan menganggap weka tidak mendukung yang terakhir (yang Anda butuhkan).

w ξ P N C p o s C n e g

minw,ξw2+ChalHaissayaPξsaya+CnegsayaNξsaya,
wξPNChalHaisCneg

Berdasarkan pertanyaan Anda, sepertinya Anda idealnya ingin menggunakan 6 bobot berbeda (2 kelas 3 tingkat kepastian). Anda dapat mencapai ini untuk banyak pendekatan dengan menduplikasi sampel poin dengan kepastian tinggi.×

Misalnya, dalam hal SVM, menggunakan instance data yang sama dua kali menghasilkan solusi yang identik untuk menggandakan nilai terkait . Ini adalah cara yang sangat mudah untuk menetapkan hukuman kesalahan klasifikasi tinggi untuk instance data tertentu. Anda dapat mengikuti pendekatan yang sama untuk regresi logistik.C

Marc Claesen
sumber
(+1) ini dia! Dengan menduplikasi instance dengan label yang berbeda dan bobot instance (alias label kepastian), orang juga dapat menerapkan algoritma seperti Hutan Acak, Naif Bayes dll. Bobot instance sangat umum, weka harus memiliki pembelajar yang mendukungnya. Rapidminer (pesaing weka) tidak. Dengan menetapkan kepastian ke 1, seseorang bahkan dapat memodelkan masalah-masalah multi-label "crisp".
steffen
Anda benar, WEKA mendukung LIBSVM, tetapi tidak mendukung pembobotan instance, afaik. Gagasan menduplikasi contoh adalah sangat bagus, saya pikir, terutama karena setiap pelajar "tradisional" dapat mengatasinya.
wnstnsmth
2

Kesulitan masalah sangat tergantung pada seberapa keliru label yang tidak pasti itu. Jika label tidak pasti itu benar, katakanlah, 90% dari waktu, Anda mungkin bisa lolos hanya dengan menggunakan regresi logistik. Di sisi lain, jika label salah hampir separuh waktu, Anda mungkin perlu menggunakan beberapa teknik khusus. Inilah satu tikaman yang saya ambil pada masalah yang sangat mirip. (Kami memiliki beberapa pengamatan per label, tetapi pengaturannya sangat mirip.)

Stefan Taruhan
sumber
-5

Saya telah menjalankan singkat dengan pengenalan dan klasifikasi gambar.

Hutan Acak adalah teknik yang mudah digunakan. Saya sudah menerapkannya di R, itu harus tersedia di Weka juga. Kemudahan penggunaan akurasi prediksi truf. Jika Anda memiliki satu set pelatihan yang cukup besar, itu dapat mengklasifikasikan beberapa label.

Ini berfungsi untuk mengenali angka tulisan tangan dengan cukup baik, tetapi jika gambar Anda lebih kompleks, maka hanya percobaan yang akan memberi tahu Anda jika itu bekerja dengan baik.

Arun Jose
sumber
4
Apa hubungannya dengan label kelas yang tidak pasti?
wnstnsmth