Klasifikasi diskriminatif Satu Kelas dengan latar belakang Negatif heterogen dan tidak seimbang?

16

Saya sedang bekerja untuk meningkatkan classifier yang diawasi yang ada, untuk mengklasifikasikan urutan {protein} milik kelas tertentu (Neuropeptide hormone precursors), atau tidak.

Ada sekitar 1.150 "positif" yang diketahui, dengan latar belakang sekitar 13 juta sekuens protein ("Tidak diketahui / latar belakang beranotasi buruk"), atau sekitar 100.000 protein relevan yang ditinjau, dijelaskan dengan berbagai sifat (tetapi sangat sedikit dijelaskan dalam secara eksplisit) cara "negatif").

Implementasi saya sebelumnya melihat ini sebagai masalah klasifikasi biner: Set positif = Protein ditandai sebagai Neuropeptida. Set negatif: Sampel acak sebanyak 1.300 sampel (total) dari antara protein yang tersisa dari distribusi panjang yang kira-kira sama.

Itu berhasil, tetapi saya ingin sangat meningkatkan kemampuan diskriminatif mesin (Saat ini, sekitar 83-86% dalam hal akurasi, AUC, F1, diukur oleh CV, pada beberapa set negatif yang diambil secara acak).

Pikiranku adalah untuk: 1) Membuat ini masalah multikelas, memilih 2-3 kelas protein yang pasti akan menjadi negatif, berdasarkan sifat / kelas fungsionalnya, bersama dengan (mungkin) set sampel acak lainnya. (Prioritas di sini adalah himpunan negatif yang memiliki karakteristik / fitur yang serupa dengan himpunan positif, sementara masih memiliki karakteristik yang menentukan). 2) Pembelajaran satu kelas - Akan menyenangkan, tetapi seperti yang saya pahami, ini dimaksudkan hanya untuk deteksi anomali, dan memiliki kinerja yang lebih buruk daripada pendekatan diskriminatif.

*) Saya pernah mendengar pembelajaran PU, yang kedengarannya rapi, tapi saya pemrograman N00b, dan saya tidak tahu ada implementasi yang ada untuk itu. (Dalam Python / sci-kit, pelajari).

Jadi, apakah pendekatan 1 masuk akal dalam POV teoretis? Apakah ada cara terbaik untuk membuat beberapa set negatif? (Saya juga bisa menggunakan protein "negatif" [50K] besar-besaran, tetapi semuanya sangat berbeda satu sama lain, jadi saya tidak tahu seberapa baik penggolong akan menangani mereka sebagai satu campuran besar, tidak seimbang). ). Terima kasih!

GrimSqueaker
sumber
seperti yang mungkin Anda lihat, artikel Wikipedia tentang pembelajaran PU memiliki referensi ke makalah di mana ini telah diterapkan untuk identifikasi gen. Mungkin ada baiknya mencari tahu / bertanya kepada penulis perangkat lunak apa yang mereka gunakan.
Andre Holzner
Ada beberapa diskusi tentang pembelajaran PU di scikit, pelajari di sini: stackoverflow.com/questions/25700724/… (menggunakan mesin vektor dukungan 'satu kelas')
Andre Holzner
Pembelajaran PU adalah masalah klasifikasi dua kelas standar dengan satu peringatan - Anda mengoptimalkan area di bawah kurva, bukan akurasi klasifikasi. Anda dapat menggunakan paket perangkat lunak Sofia ML untuk mencapai hal ini dengan tepat (tidak perlu pemrograman). Di sisi praktis, Anda memberi anotasi contoh positif Anda dengan +1 dan yang lainnya sebagai -1 (ya, semua data tidak berlabel lainnya yang mungkin mengandung positif).
Vladislavs Dovgalecs

Jawaban:

5

Cara saya akan menyerang masalah, secara umum, adalah memanfaatkan analisis statistik seperti Principal Component Analysis atau Ordinary Least Squares untuk membantu menentukan atribut apa dalam sekuens protein ini yang paling cocok untuk mengklasifikasikan protein sebagai prekursor hormon Neuropeptide.

Untuk melakukan itu, Anda harus mengubah sekuens protein menjadi data numerik, tetapi saya yakin beberapa pekerjaan telah dilakukan dalam hal itu menggunakan formula yang diungkit dalam Asam Amino PCA.

Lihat dua tautan ini: http://www.ncbi.nlm.nih.gov/pubmed/24496727

http://www.ncbi.nlm.nih.gov/pubmed/16615809

Setelah pekerjaan itu dilakukan, saya akan mencoba untuk mengklasifikasikan menggunakan seluruh dataset dan algoritma pembelajaran penguatan, seperti Naif Bayes sambil melangsingkan data ke dalam apa yang PCA telah diidentifikasi sebagai penting.

Alasan saya akan mencoba menggunakan Bayes adalah karena telah terbukti menjadi salah satu metode terbaik untuk menentukan spam vs email biasa, yang memiliki dataset yang sama.

Setelah mengatakan semua itu ...

Melangsingkan jumlah atau jenis klasifikasi negatif mungkin memiringkan hasil Anda beberapa poin satu arah atau yang lain, tetapi saya tidak berpikir Anda akan melihat efektivitas jangka panjang berubah secara substansial sampai Anda melakukan pekerjaan keras menentukan cara terbaik menghapus ketidakjelasan dari data pelatihan Anda. Entah itu membutuhkan ahli lapangan atau analisis statistik.

Saya benar-benar tidak bisa bergerak. Saya tertarik melihat beberapa jawaban lain, tetapi itu adalah 2 sen saya.

Steve Kallestad
sumber
1
Saya sudah menerapkan ekstraksi fitur, dan toolkit untuknya (publikasi menunggu beberapa bugchecking).
GrimSqueaker
5

Pembelajaran satu kelas

Saya tidak akan terlalu cepat untuk membuang metode klasifikasi satu kelas (opsi 2) - kuncinya adalah memodelkan kelas positif (minoritas) dengan model satu kelas.

Ada penelitian yang mendemonstrasikan kasus-kasus di mana klasifikasi satu kelas mengungguli pendekatan lain seperti pengambilan sampel untuk data yang sangat tidak seimbang seperti yang sering terlihat pada tugas klasifikasi protein.

Saya tidak dapat menemukan penelitian yang saya ingat, tetapi saya memang menemukan beberapa perbandingan lain, menunjukkan menggunakan pengklasifikasi satu kelas (biasanya memodelkan kelas minoritas) yang dicapai sebagai kinerja yang baik atau lebih baik daripada klasifikasi biner yang biasanya dengan sampel "negatif" dari kumpulan besar sampel protein yang tidak diketahui positif.

Selain itu pendekatan ini juga memberikan keuntungan dari run-time yang jauh lebih baik - karena Anda hanya perlu melatih classifier pada perangkat positif yang lebih kecil. Beberapa makalah:

"Prediksi interaksi protein-protein menggunakan metode klasifikasi satu kelas dan mengintegrasikan beragam data biologis"

"Pendekatan Klasifikasi Satu Kelas untuk Urutan dan Struktur Protein"

Paling tidak saya akan mencoba beberapa metode satu kelas dan membandingkan kinerja menggunakan validasi dengan pendekatan klasifikasi biner / multi-kelas Anda. Ada juga implementasi open source untuk banyak dari ini sehingga tidak terlalu mahal untuk mencobanya, misalnya LibSVM memiliki implementasi SVM satu kelas. Selain itu, ini mungkin terbukti berharga untuk digunakan dalam ansambel dengan pengklasifikasi biner, karena mungkin ada lebih banyak ketidaksetujuan dalam prediksi mereka.

Penempatan / pengelompokan representasi tingkat tinggi

Sejalan dengan apa yang Anda pikirkan (1) dan pos lain yang menyarankan PCA, pendekatan seperti pengelompokan, pengkodean yang jarang, atau bahkan pemodelan topik - memperlakukan setiap protein sebagai string dokumen dan keluarga protein yang berbeda sebagai topik yang berbeda - dapat menghasilkan representasi yang mungkin membuat mengklasifikasikan protein secara langsung.

Yaitu, Anda dapat mengidentifikasi kelompok / klaster mana protein yang dimiliki atau mengklasifikasikan keanggotaan klaster / representasi tersemat.

Misalnya, pendekatan penyisipan seperti pengkodean jarang dapat menghasilkan representasi yang mengungkapkan kelompok mana yang termasuk protein - sehingga beberapa rangkaian fitur hanya aktif (bukan nol) untuk protein dalam kelompok yang sama - yang dapat membuat mengklasifikasikannya lebih mudah.

Selain itu label kelas atau keanggotaan cluster yang dikenal dapat dimasukkan dalam proses penyematan untuk sebagian besar metode.

Ansambel

Ensembel dari beberapa pengklasifikasi cenderung bekerja paling baik - terutama ketika pengklasifikasi sangat beragam dan dapat mencapai kinerja yang sebanding secara individual.

Setidaknya ada dua cara menggunakan ensemble untuk masalah ini.

  1. Anda dapat membangun ansambel pengklasifikasi biner dengan mengambil sampel beberapa set negatif berukuran sama yang berbeda dan melatih classifier pada masing-masingnya.
  2. Anda dapat membangun ansambel dari pendekatan yang berbeda, seperti pengklasifikasi biner dengan sampel negatif yang berbeda, dikombinasikan dengan pendekatan klasifikasi satu kelas, dikombinasikan dengan model klasifikasi yang dilatih pada data yang disematkan.
Brian
sumber
2

Ada tiga pendekatan yang bisa Anda ambil: APP, OAA, AAO. APP adalah diskriminasi antara objek berdasarkan semua kemungkinan pasangan kelas. OAA adalah penggunaan satu-lawan semua (kelas yang tersisa), dan AAO sekaligus seperti penggunaan uji-F untuk beberapa kelas secara bersamaan (atau uji Hotelling untuk MVN). APP dan AAO sebenarnya adalah beberapa klasifikasi biner tetapi dengan lebih dari dua kelas asli Anda. Masing-masing pendekatan ini menghasilkan hasil yang berbeda untuk berbagai pengklasifikasi yang digunakan.

Pengambilan sampel acak adalah teknik yang baik. Anda mungkin juga mencoba mengelompokkan semua objek menjadi pusat menggunakan k-means, dan kemudian menggunakan pusat sebagai objek baru. Either way, metode pengurangan dimensi linier dan non-linear mungkin membantu menjauh dari ukuran sampel yang besar.


sumber