Beberapa label dalam algoritma pembelajaran terawasi

10

Saya memiliki kumpulan teks dengan topik yang sesuai. Misalnya "A rapper Tupac was shot in LA"dan diberi label sebagai ["celebrity", "murder"]. Jadi pada dasarnya setiap vektor fitur dapat memiliki banyak label (bukan jumlah yang sama. Vektor fitur pertama dapat memiliki 3 label, kedua 1, ketiga 5).

Jika saya hanya memiliki satu label yang sesuai dengan setiap teks, saya akan mencoba classifier Naif Bayes , tetapi saya tidak benar-benar tahu bagaimana saya harus melanjutkan jika saya dapat memiliki banyak label.

Apakah ada cara untuk mengubah Naive Bayes menjadi masalah klasifikasi multi label (jika ada pendekatan yang lebih baik - beri tahu saya)?

PS beberapa hal tentang data yang saya miliki.

  • sekitar 10.000 elemen dalam dataset
  • teks kira-kira 2-3 kalimat
  • maksimum 7 label per teks
Salvador Dali
sumber
@fordprefect Multinomial Naive Bayes menggunakan distribusi multinomial untuk probabilitas beberapa fitur yang diberikan kelas: . OP ingin classifier untuk mengelola beberapa output seperti yang dijelaskan TheGrimmScientist. hal(fsaya|c)
Robert Smith

Jawaban:

6

Sebagai permulaan, Naif Bayes mungkin tidak sesuai di sini. Ini mengasumsikan independensi di antara input (maka "Naif") dan kata-kata dalam kalimat sangat tergantung.

Tetapi, dengan asumsi Anda benar-benar ingin menjalankan dengan NB sebagai algoritma untuk memulai eksperimen Anda, ada dua opsi yang akan saya pertimbangkan:

Ungraceful: Banyak pengklasifikasi NB

Ini akan menjadi pendekatan alternatif. Buat korupus dari semua kata yang diamati sebagai vektor input Anda. Buat corpus dari semua tag yang diamati sebagai vektor output Anda. Klasifikasi NB dengan beberapa keluaran sama dengan memiliki beberapa pengklasifikasi NB dengan satu keluaran masing-masing (demikian juga yang mana yang lebih mudah diterapkan dalam kerangka kerja perangkat lunak apa pun yang Anda gunakan). Perlakukan setiap elemen sebagai sampel pelatihan di mana input yang diberikan (kata) adalah 1jika kata itu ada dan 0jika kata itu tidak ada. Gunakan skema biner yang sama untuk output.

Brute ini memaksa aplikasi NB Classifier ke data Anda, dan membuat Anda menemukan makna dengan tetap menambang untuk mengatur sekumpulan besar classifier yang akan Anda gunakan.

Lebih Anggun: Memproses data Anda

Ini adalah pendekatan yang saya sarankan jika Anda ingin menjalankan dengan satu NB Classifier multi-kelas.

Tujuan Anda di sini adalah untuk mengetahui cara memetakan setiap set tag ke satu kelas. Saya yakin ada semacam skema pengelompokan atau analisis jaringan (mungkin ["selebriti"] yang dikaitkan dengan ["pembunuhan"] dapat menjadi segmen ["pesta pora"]) yang secara masuk akal akan memetakan tag Anda ke satu cluster tunggal. Jika Anda memperlakukan tag sebagai node dan dua tag yang diberikan bersama sebagai tautan, maka Anda akan ingin melihat algoritma pendeteksian komunitas (yang merupakan tempat saya memulai). Tapi, jika Anda hanya ingin sesuatu berfungsi, maka semacam peretasan pada tag yang mengubah daftar tag menjadi hanya tag yang paling umum dilihat dalam dataset Anda sudah cukup.

Metode ini memuat pekerjaan pembersihan data Anda dan akan membuat output NB Classifier lebih mudah dipahami.

Ilmuwan TheGrimm
sumber
terima kasih atas masukan Anda, jika Anda memiliki ide apa yang akan lebih baik dari NB, tolong beri tahu saya.
Salvador Dali
1
bagian "solusi yang ada" pada slide deck ini menampung semua yang saya tahu akan dibalas dengan, ditambah lebih banyak (dengan asumsi Anda tidak memerlukan pengklasifikasi khusus dan hanya ingin cara menggunakan tag). Semoga bermanfaat bagi Anda.
TheGrimmScientist
@TheGrimmScientist Bukankah masuk akal untuk menggunakan pendekatan pertama? Jika Anda memiliki vektor fitur f1, f2, f3 dan katakanlah, 3 label untuk vektor ini, kita dapat mempartisi menjadi 3 vektor (semua berisi fitur yang sama f1, f2, f3) dengan label yang berbeda sebagai keluaran. Maka dimungkinkan untuk menggunakan Naif Bayes seperti biasa. Saya tidak yakin apakah itu yang ada dalam pikiran Anda.
Robert Smith