Kesalahan klasifikasi lebih rendah ketika saya tidak melakukan pembelajaran pada dataset?

8

Saya memiliki satu set data kata-kata. Saya secara acak memilih beberapa poin dan menggunakannya untuk pengujian dan yang lainnya digunakan untuk pelatihan.

  • kasus (1) Saya hanya mengambil setiap titik data dari set tes dan mengklasifikasikannya memiliki label kelas yang sama dengan titik terdekat dari set kereta.
  • kasus (2) Saya melakukan klasifikasi menggunakan classifier terawasi yang diketahui.

Saya selalu mendapatkan tingkat pengakuan yang lebih baik jika (1). Artinya, tidak melakukan pembelajaran sama sekali, lebih baik daripada menggunakan pembelajaran yang diawasi, untuk kumpulan data ini (dan lainnya)! Apakah itu situasi yang sering terjadi?

shn
sumber
Saya tidak tahu apakah itu sering, tetapi itu terjadi pada saya. Klasifikasi Anda tidak berfungsi dengan baik. Secara khusus, saya sering melakukan model pohon dan menemukan bahwa simpul akar adalah pohon terbaik (tergantung pada definisi "terbaik").
Peter Flom
1
Sangat umum bagi orang untuk membuat kesalahan ketika mereka menerapkan algoritma pembelajaran. Jika Anda menggunakan gradient descent, periksa apakah langkah kecil ke arah gradient benar-benar menurunkan fungsi biaya sekitar jumlah yang seharusnya. Ini adalah tes yang mudah, tetapi banyak orang melewatkannya dan membuang waktu untuk mengubah algoritma dengan kesalahan tanda, atau masalah serupa.
Douglas Zare
@DouglasZare Saya sudah menguji dengan banyak pengklasifikasi dari Weka, dan yang lainnya yang saya implementasikan sendiri. Untuk banyak kumpulan data, menggunakan classifier dengan langkah pelatihan (yaitu kasus (2)) akan memberikan hasil yang lebih baik daripada kasus (1), namun, untuk tiga kumpulan kata yang saat ini saya uji, saya mendapatkan hasil yang lebih baik dalam hal (1). Saya tidak berpikir bahwa pembelajaran / pengklasifikasi tidak berfungsi dengan baik, karena saya telah menguji dengan banyak pengklasifikasi.
shn

Jawaban:

11

Tidak benar bahwa Anda tidak melakukan pembelajaran apa pun. Apa yang Anda lakukan adalah menggunakan algoritma klasifikasi terkenal yang disebut Nearest Neighbor (NN). Penting untuk menyadari bahwa Anda belajar selama Anda menggunakan data kereta (bahkan jika Anda tidak secara eksplisit menghitung beberapa parameter) - dan dalam hal ini Anda pasti menggunakannya.

Tidak apa-apa kalau NN baik-baik saja. Namun, dalam beberapa kasus mungkin itu pertanda bahwa ada masalah dengan data Anda. Ini bisa terjadi ketika data Anda bukan IID . Misalnya, dalam beberapa kasus, Anda mungkin memiliki atau menutup duplikat dalam data Anda. Dalam kasus seperti itu, banyak contoh di set tes akan memiliki tetangga dekat di set kereta dan Anda akan mendapatkan tingkat keberhasilan yang tinggi tetapi sebenarnya Anda overfitting, karena jika Anda mendapatkan poin baru tanpa duplikat kinerja Anda akan lebih buruk. Apa yang dapat Anda lakukan dalam kasus ini adalah mencoba untuk menghapus duplikat di muka, atau membangun set kereta / tes sedemikian rupa sehingga duplikat (atau cluster ketat) harus berada di set yang sama. Penting untuk melihat data dan mencoba memahami apa yang sedang terjadi.

Bitwise
sumber
Saya langsung menggunakan set pelatihan untuk melakukan klasifikasi poin set tes. Tidak ada fase pelatihan yang dilakukan pada set pelatihan. Saya tidak belajar apa-apa, saya hanya mengklasifikasikan poin pengujian saya. Saya tidak tahu mengapa Anda menyebut ini "belajar" hanya karena set kereta digunakan. Meskipun demikian, saya baru saja memeriksa dataset dan Anda benar, ada beberapa titik data duplikat, kadang-kadang titik data yang sama ada di kereta dan set tes, ini tidak berlaku untuk semua titik data, tetapi saya akan mencoba untuk memperbaiki, hapus duplikat dan lihat apakah masalahnya sudah diperbaiki.
shn
1
@ shn, adalah kesalahan umum untuk berpikir bahwa Anda tidak belajar dan tidak ada parameter dalam metode seperti itu. Selama Anda menggunakan data pelatihan, itu adalah pembelajaran. Apa yang sebenarnya Anda lakukan adalah menggunakan seluruh pelatihan yang ditetapkan sebagai "parameter yang dipelajari", jadi ketika Anda menyimpannya untuk digunakan nanti, Anda sebenarnya "pelatihan" (inilah sebabnya mengapa NN sering lebih rentan terhadap overfitting - sebenarnya memiliki banyak dari "parameter"). Jika prediksi yang Anda buat tergantung pada set pelatihan, itu adalah pembelajaran. Kasus tanpa pelatihan adalah jika Anda membuat prediksi TANPA menggunakan set pelatihan sama sekali.
Bitwise
Oke, masalahnya datang dari titik yang digandakan. Dengan menghapusnya, beberapa pengklasifikasi mencapai tingkat pengakuan yang sedikit lebih baik daripada strategi NN. Namun, saya tidak memperhatikan bahwa ada terlalu banyak duplikasi poin, saya menghapusnya dan saya berakhir dengan dataset yang jauh lebih kecil, jumlah contoh tidak benar-benar cukup untuk melakukan pembelajaran online. Apakah Anda tahu dataset berlabel yang tersedia tentang klasifikasi dokumen yang siap digunakan (yaitu yang dapat saya gunakan tanpa melakukan preprocessing dan banyak hal ...)? Ada kumpulan data kata-kata yang bagus pada UCI repo, tetapi label tidak disediakan.
shn