Kapan saya harus bergerak melampaui k tetangga terdekat


9

Untuk banyak proyek pembelajaran mesin yang kami lakukan, kami mulai dengan pengklasifikasi k Nearest Neighbor. Ini adalah pengklasifikasi awal yang ideal karena kami biasanya memiliki waktu yang cukup untuk menghitung semua jarak dan jumlah parameter terbatas (k, metrik jarak, dan bobot)

Namun, ini sering memiliki efek bahwa kita tetap dengan classifier knn karena kemudian dalam proyek tidak ada ruang untuk beralih ke classifier lain. Apa yang menjadi alasan bagus untuk mencoba classifier baru. Yang jelas adalah ingatan dan batasan waktu, tetapi adakah kasus ketika classifier lain benar-benar dapat meningkatkan akurasi?


Apakah ini murni akademis atau hanya untuk digunakan dalam industri?
Dr Rob Lang

1
Sebagian besar aplikasi kami digunakan di industri (sehingga masalah memori dan waktu perhitungan menjadi masalah)

Jawaban:


3

k-NN menggeneralisasi dalam arti yang sangat terbatas. Ini hanya menggunakan kelancaran prior (atau asumsi kontinuitas). Asumsi ini menyiratkan bahwa pola yang dekat dalam ruang fitur kemungkinan besar milik kelas yang sama. Tidak ada keteraturan fungsional dalam distribusi pola yang dapat dipulihkan oleh k-NN.

Dengan demikian, diperlukan sampel pelatihan yang representatif, yang bisa sangat besar terutama dalam kasus ruang fitur yang sangat dimensional. Lebih buruk lagi, sampel ini tidak tersedia. Akibatnya, ia tidak dapat mempelajari invarian. Jika pola dapat mengalami beberapa transformasi tanpa mengubah labelnya, dan sampel pelatihan tidak mengandung pola yang ditransformasikan dalam semua cara yang dapat diterima, k-NN tidak akan pernah mengenali pola transformasi yang tidak disajikan selama pelatihan. Ini benar, misalnya, untuk gambar yang digeser atau diputar, jika mereka tidak diwakili dalam beberapa bentuk invarian sebelum menjalankan k-NN. k-NN bahkan tidak bisa abstrak dari fitur yang tidak relevan.

Contoh lain yang agak artifisial adalah mengikuti. Bayangkan bahwa pola milik kelas yang berbeda didistribusikan secara berkala (misalnya sesuai dengan sinus - jika kurang dari 0, maka pola milik satu kelas, dan lebih besar, maka pola milik kelas lain). Set pelatihan terbatas. Jadi, itu akan berlokasi di wilayah yang terbatas. Di luar wilayah ini, kesalahan pengenalan adalah 50%. Orang dapat membayangkan regresi logistik dengan fungsi basis periodik yang akan berkinerja lebih baik dalam kasus ini. Metode lain akan dapat mempelajari keteraturan lainnya dalam distribusi pola dan memperkirakan dengan baik.

Jadi, jika seseorang menduga bahwa kumpulan data yang tersedia tidak representatif, dan invariansi terhadap beberapa transformasi pola harus dicapai, maka ini adalah kasusnya, di mana seseorang harus bergerak melampaui k-NN.


Terima kasih atas jawaban Anda (dan terima kasih BartoszKP untuk mencoba memperbaikinya). Memang benar bahwa knn tidak dapat menemukan pola yang memerlukan transformasi (kecuali jika Anda mulai menggunakan metrik jarak yang aneh (dan salah)). Itu alasan yang bagus untuk mencoba classifier lain, saya kira svm adalah pilihan yang jelas. Saya tidak cukup akrab dengan svm untuk mengatakan, tetapi apakah itu tidak memerlukan pengetahuan khusus tentang pola yang Anda cari untuk mendefinisikan kernel?

Iya. Pilihan kernel akan tergantung pada pola. Kernel Gaussian akan memiliki properti yang mirip dengan metode k-NN. Kernel standar lainnya mungkin juga tidak sesuai. Namun, setidaknya, orang bisa mencoba menggunakannya.

Seperti yang tersirat oleh @ Necro0x0Derapa perbaikan sepanjang garis ini akan tergantung pada pola (dalam contoh sinus, periodisitas) yang alami untuk parametrization. Yaitu, parametrization (pilihan kernel) mendefinisikan struktur (efektif, metrik) dari ruang representasi. Jika Anda dapat menentukan (mungkin dengan menebak-nebak) beberapa struktur yang sesuai dengan beberapa cara, maka cobalah untuk parametrize pola yang sesuai. Perhatikan bahwa pada akhirnya, ini memungkinkan classifier Anda untuk dengan mudah menemukan beberapa jenis fitur yang relevan.

3

Dimensi tinggi tentu saja bukan batas tetap, dalam banyak kasus fitur kami cukup ekspresif sehingga jarak dapat bekerja. Tentu ini mungkin poin penting. Mungkin saya harus mengklarifikasi dengan sebuah contoh. Katakanlah kita memiliki classifier yang memiliki akurasi 93%, ini dapat diterima, tetapi sekarang kita dapat mencoba meningkatkan classifier atau menemukan fitur baru. Itu semua tergantung pada fitur yang mungkin baru dan data, tetapi saya sedang mencari pedoman tentang keputusan ini.

@Rhand Tampak bagi saya bahwa ini adalah keputusan tingkat manajemen proyek. Jika solusi saat ini dapat diterima, mengapa harus mengotak-atiknya? Buang-buang waktu. Jika tidak dapat diterima, tentukan lebih tepat apa yang ingin Anda tingkatkan (kecepatan, ketepatan, dll.).
BartoszKP

Bukan hanya manajemen proyek, pertanyaannya adalah bagaimana mendapatkan akurasi maksimum (ini ada dalam pertanyaan saya) dan arah mana yang terbaik untuk diambil. Anda menyarankan svm dan hutan acak karena dimensi mungkin terlalu tinggi, itu adalah satu kemungkinan saya bisa bereksperimen untuk melihat apakah akurasi meningkat dan itu adalah jenis jawaban yang saya cari.

Ya, ini adalah pertanyaan yang sangat luas. Tidak ada aturan umum bahwa classifier X lebih baik daripada Y. Anda hanya perlu mencoba beberapa classifier dan kemudian melakukan cross-validation untuk pemilihan model misalnya.
BartoszKP

3

kNN berguna untuk sampel data berukuran besar

Namun kelemahannya adalah:

  1. Bias dengan nilai k.
  2. Kompleksitas Komputasi
  3. Batasan Memori
  4. Menjadi algoritma malas belajar yang diawasi
  5. Mudah tertipu oleh atribut yang tidak relevan.
  6. Akurasi prediksi dapat dengan cepat menurun ketika jumlah atribut meningkat.

Biasanya hanya efektif jika data pelatihan besar, dan pelatihan sangat cepat.


Saya tidak melihat pengelompokan, tetapi pada klasifikasi

@Ayo, mari kita mulai, terima kasih atas iliasfl
Iancovici
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.