Masalah yang saya tangani adalah mengelompokkan teks-teks pendek menjadi beberapa kelas. Pendekatan saya saat ini adalah menggunakan frekuensi istilah bobot tf-idf dan mempelajari classifier linier sederhana (regresi logistik). Ini bekerja cukup baik (sekitar 90% makro F-1 pada set tes, hampir 100% pada set pelatihan). Masalah besar adalah kata-kata yang tidak terlihat / n-gram.
Saya mencoba untuk meningkatkan classifier dengan menambahkan fitur lain, misalnya vektor berukuran tetap dihitung menggunakan persamaan distribusi (seperti yang dihitung oleh word2vec) atau fitur kategori lainnya dari contoh. Ide saya adalah menambahkan fitur ke fitur input yang jarang dari kantong kata-kata. Namun, ini menghasilkan kinerja yang lebih buruk pada set tes dan pelatihan. Fitur tambahan sendiri memberikan sekitar 80% F-1 pada set tes, sehingga mereka bukan sampah. Memperbesar fitur tidak membantu juga. Pemikiran saya saat ini adalah bahwa fitur semacam ini tidak cocok dengan fitur kata (jarang).
Jadi pertanyaannya adalah: dengan asumsi fitur tambahan memberikan informasi tambahan, apa cara terbaik untuk menggabungkannya? Bisakah melatih pengklasifikasi yang terpisah dan menggabungkannya dalam beberapa jenis pekerjaan ansambel (ini mungkin akan memiliki kelemahan bahwa tidak ada interaksi antara fitur dari pengklasifikasi yang berbeda dapat ditangkap)? Apakah ada model lain yang lebih rumit yang harus saya pertimbangkan?
sumber
Jawaban:
Jika saya mengerti dengan benar, Anda pada dasarnya memiliki dua bentuk fitur untuk model Anda. (1) Data teks yang telah Anda wakili sebagai sekumpulan kata yang jarang dan (2) fitur padat yang lebih tradisional. Jika demikian, maka ada 3 pendekatan umum:
TruncatedSVD
) pada data Anda yang jarang untuk membuatnya padat dan menggabungkan fitur menjadi matriks padat tunggal untuk melatih model Anda.hstack
ke dalam matriks sparse tunggal untuk melatih model Anda.Pipeline
jika diinginkan).Ketiga pendekatan itu valid dan memiliki pro dan kontra sendiri. Secara pribadi, saya menemukan (1) biasanya menjadi yang terburuk karena, secara relatif, sangat lambat. Saya juga menemukan (3) biasanya menjadi yang terbaik, karena keduanya cukup cepat dan menghasilkan prediksi yang sangat baik. Anda juga dapat melakukan kombinasi keduanya jika Anda bersedia melakukan ansambel yang lebih luas.
Adapun algoritma yang Anda gunakan, pada dasarnya semuanya bisa masuk dalam kerangka itu. Regresi logistik berkinerja sangat baik hampir sepanjang waktu, tetapi yang lain mungkin lebih baik tergantung pada masalah yang dihadapi dan seberapa baik Anda menyetelnya. Saya sendiri mendukung GBM, tetapi intinya adalah Anda dapat mencoba sebanyak mungkin algoritma yang Anda inginkan dan bahkan melakukan ansambel sederhana dari prediksi mereka hampir selalu mengarah pada solusi keseluruhan yang lebih baik.
sumber
Model linear hanya menambahkan fitur-fiturnya dikalikan dengan bobot yang sesuai. Jika, misalnya, Anda memiliki 1000 fitur jarang, hanya 3 atau 4 yang aktif di setiap instance (dan yang lainnya nol) dan 20 fitur padat yang semuanya non-nol, maka kemungkinan besar fitur padat akan membuat sebagian besar dari dampaknya sementara fitur yang jarang hanya akan menambah sedikit nilai. Anda dapat memeriksanya dengan melihat bobot fitur untuk beberapa contoh dan bagaimana mereka memengaruhi jumlah yang dihasilkan.
Salah satu cara untuk memperbaikinya adalah menjauh dari model aditif. Berikut adalah beberapa model kandidat.
SVM didasarkan pada pemisahan hyperplanes. Meskipun hyperplane adalah model linier itu sendiri, SVM tidak merangkum parameternya, tetapi mencoba untuk membagi ruang fitur secara optimal. Mengingat banyaknya fitur, saya akan mengatakan bahwa SVM linier harus bekerja dengan baik sementara kernel yang lebih rumit cenderung cocok dengan data.
Terlepas dari namanya, Naive Bayes adalah model statistik yang cukup kuat yang menunjukkan hasil yang baik untuk klasifikasi teks. Ini juga cukup fleksibel untuk menangkap ketidakseimbangan dalam frekuensi fitur yang jarang dan padat, jadi Anda harus mencobanya.
Akhirnya, hutan acak dapat berfungsi sebagai metode ansambel yang baik dalam kasus ini. Pengacakan akan memastikan bahwa berbagai jenis fitur (jarang / padat) akan digunakan sebagai simpul keputusan utama di pohon yang berbeda. RF / decision tree juga baik untuk memeriksa fitur-fitur itu sendiri, jadi sebaiknya perhatikan strukturnya.
Perhatikan bahwa semua metode ini memiliki kelemahan yang dapat mengubahnya menjadi sampah di casing Anda. Menggabungkan fitur yang jarang dan padat bukan tugas yang dipelajari dengan baik, jadi beri tahu kami pendekatan mana yang paling cocok untuk kasus Anda.
sumber