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!
sumber
Jawaban:
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.
sumber
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.
sumber
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