Teknik Kategorisasi / Segmentasi


9

Pertama, izinkan saya mengatakan bahwa saya sedikit keluar dari kedalaman saya di sini, jadi jika pertanyaan ini perlu diutarakan kembali atau ditutup sebagai duplikat, harap beri tahu saya. Mungkin saja saya tidak memiliki kosakata yang tepat untuk mengungkapkan pertanyaan saya.

Saya mengerjakan tugas pemrosesan gambar di mana saya mengidentifikasi fitur-fitur dalam gambar, dan kemudian mengklasifikasikannya berdasarkan sifat-sifatnya, termasuk bentuk, ukuran, kegelapan, dll. Saya cukup berpengalaman dengan bagian pemrosesan gambar ini, tetapi pikirkan Saya dapat meningkatkan metode yang saya gunakan untuk klasifikasi fitur.

Saat ini, saya menetapkan ambang batas untuk setiap parameter yang diukur, dan kemudian mengklasifikasikan fitur berdasarkan beberapa logika sederhana berdasarkan pada ambang mana fitur tersebut telah dilewati. Misalnya (properti dan pengelompokan sebenarnya lebih kompleks, tapi saya mencoba menyederhanakan bagian yang tidak relevan dari proyek saya untuk pertanyaan ini), katakanlah saya mengelompokkan fitur ke dalam grup "Besar dan Gelap," "Besar dan Terang" dan "Kecil". Lalu sebuah fiturA akan berada di "Big and Dark" iff (ukuran (A)> sizeThreshold) & (darkness (A)> darknessThreshold).

Tujuannya adalah agar klasifikasi tersebut sesuai dengan klasifikasi yang dilakukan oleh manusia tingkat ahli, sehingga saya dapat menetapkan ambang batas untuk menghasilkan kecocokan terbaik antara pengelompokan yang dibuat oleh manusia dan komputer pada beberapa set pengujian, dan kemudian berharap bahwa klasifikasi tersebut berfungsi baik dengan data baru.

Ini sudah bekerja dengan cukup baik, tetapi saya melihat satu mode kegagalan tertentu yang saya pikir dapat diperbaiki. Katakanlah fiturAdiketahui milik "Besar dan Gelap." Manusia mengklasifikasikannya dengan cara ini karena, meski hanya cukup besar, itu sangat sangat gelap, yang agak membuat kurangnya "kebesaran". Algoritme saya akan gagal mengklasifikasikan fitur ini dengan benar, karena klasifikasi didasarkan pada logika biner yang kaku, dan mengharuskan semua ambang batas dilintasi.

Saya ingin memperbaiki kegagalan ini dengan membuat algoritme saya lebih baik meniru proses yang dipandu manusia, di mana kekurangan dalam satu parameter dapat dikompensasi dengan banyak parameter lainnya. Untuk melakukan ini, saya ingin mengambil masing-masing properti dasar dari fitur saya, dan mengubahnya menjadi semacam skor yang akan menjadi prediktor grup tempat fitur tersebut berada. Saya telah memikirkan banyak cara untuk melakukan ini, tetapi kebanyakan dari mereka adalah ide-ide sementara, berdasarkan latar belakang saya dalam kalkulus vektor dan fisika. Sebagai contoh, saya telah mempertimbangkan memperlakukan setiap fitur sebagai vektor di ruang ND properti fitur, dan menghitung proyeksi setiap fitur di sepanjang vektor tertentu, yang masing-masing akan mengukur sejauh mana fitur berada dalam grup.

Saya yakin ada teknik yang lebih ketat dan lebih mapan untuk melakukan hal semacam ini, tetapi latar belakang saya relatif lemah dalam analisis statistik, jadi saya mencari dorongan ke arah yang benar. Bahkan nama teknik, atau tautan ke buku teks akan sangat membantu.

TL; DR: Teknik apa yang berguna dalam mengklasifikasikan objek berdasarkan sejumlah besar parameter deskriptif?


@Colin Akan menyenangkan untuk melihat gambar-gambarnya. Anda telah menjelaskan masalah Anda dengan detail, itu akan menjadi pelengkap yang bagus. :)
deps_stats

@deps_stats: Terima kasih atas dorongannya, saya senang melihat bahwa orang-orang berpikir saya telah mengajukan pertanyaan saya setidaknya agak sopan. Sayangnya, data saya mungkin bukan sesuatu yang seharusnya ada di situs web publik. Itu tidak persis diklasifikasikan, tetapi jelas tidak untuk konsumsi publik. Saya akan mencoba menghasilkan beberapa data buatan yang akan berfungsi sebagai contoh yang baik untuk tujuan pertanyaan ini, tetapi saya mungkin tidak punya waktu untuk melakukan itu selama satu hari atau lebih.
Colin K

@Colin Tidak masalah. Saat ini saya sedang mengerjakan segmentasi pasar untuk grosir farmasi. Masalahnya adalah bahwa data mereka sangat mirip dengan sinyal. Saya melihat banyak kesamaan antara masalah saya dan masalah Anda. Saya akan mencoba memposting beberapa penelitian yang mungkin dapat membantu Anda.
deps_stats

@deps_stats: Saya berharap data saya lebih seperti sinyal. Saya jauh lebih nyaman dengan pemrosesan sinyal dibandingkan dengan pemodelan / analisis statistik semacam ini.
Colin K

@Colin Sudahkah Anda mencoba analisis pengelompokan apa pun sekarang? (k-means, hierarchical clustering, partisi di sekitar medoids ...)
deps_stats

Jawaban:


5

Kedengarannya seperti setiap classifier linear akan melakukan apa yang Anda butuhkan. Misalkan Anda punyaN fitur dan nilai fitur i adalah fi. Kemudian classifier linier akan menghitung skor

s=iwifi+o
(dimana oadalah offset). Lalu jikas>t (dimana t adalah beberapa ambang), maka fitur tersebut milik kelas (grup), dan jika s<t, maka tidak. Perhatikan bahwa ada ambang tunggal yang diterapkan pada seluruh skor (daripada nilai-nilai fitur individual), jadi memang kekurangan dalam satu parameter dapat dikompensasi dengan kelimpahan di yang lain. Bobot dapat ditafsirkan secara intuitif, dalam arti bahwa semakin tinggi bobotnya, semakin penting (atau lebih menentukan) fitur itu.

Ada banyak pengklasifikasi linear off-the-shelf yang dapat melakukan itu, termasuk SVM, LDA (analisis diskriminan linier), jaringan saraf linier, dan banyak lainnya. Saya akan mulai dengan menjalankan SVM linier karena bekerja dengan baik dalam banyak kasus dan dapat mentolerir data pelatihan yang terbatas. Ada juga banyak paket di banyak lingkungan (seperti Matlab dan R), sehingga Anda dapat dengan mudah mencobanya. Kelemahan dari SVM adalah ia bisa menjadi sangat berat secara komputasional, jadi jika Anda perlu belajar banyak kelas, itu mungkin kurang tepat.

Jika Anda ingin mempertahankan beberapa perilaku ambang yang saat ini Anda miliki, Anda bisa meneruskan nilai fitur melalui sigmoid dengan ambang di lokasi yang tepat. Misalnya untuk suatu fituri saat ini Anda menggunakan ambang batas ti, hitung dulu

gi=11+exp(fiti),
dan kemudian belajar menggunakan classifier linier gBukan fini Dengan cara ini, perilaku kompensasi hanya akan terjadi di dekat ambang, dan hal-hal yang terlalu jauh dari ambang tidak dapat dikompensasi (yang kadang-kadang diinginkan).

Hal lain yang bisa Anda coba adalah menggunakan pengklasifikasi probabilistik seperti Naive Bayes atau TAN. Naif Bayes hampir seperti classifier linier, kecuali itu menghitung

s=iwfii.
Jadi masih ada sejumlah bobot. Bobot ini tergantung pada nilai fiturfi, tetapi tidak dengan perkalian seperti dalam classifier linear biasa. Skor dalam kasus ini adalah probabilitas log, dan bobotnya adalah kontribusi fitur individual ke dalam probabilitas log tersebut. Kerugian menggunakan ini dalam kasus Anda adalah bahwa Anda akan membutuhkan banyak tempat sampah untuk nilai-nilai fitur Anda, dan kemudian belajar mungkin menjadi sulit. Ada beberapa cara untuk itu (misalnya, menggunakan prior), tetapi karena Anda tidak memiliki pengalaman dengan ini, mungkin akan lebih sulit.

Mengenai terminologi: apa yang Anda sebut 'set tes' biasanya disebut 'set pelatihan' dalam konteks ini, dan apa yang Anda sebut 'data baru' disebut 'set uji'.

Untuk sebuah buku, saya akan membaca "Pengenalan pola" oleh Duda, Hart, dan Bangau. Bab pertama adalah pengantar yang sangat bagus untuk pemula.


1
Saya telah membeli salinan "Pengenalan Pola" oleh D, H, dan S. Benar-benar spektakuler, dan semuanya bermanfaat dan mudah diikuti. Terima kasih lagi. Beginilah seharusnya SE bekerja :)
Colin K
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.