Gambar di bawah ini menunjukkan 7 poin di sekitar titik asal. Salah satunya telah dipilih oleh manusia berdasarkan aturan dan pengalaman dan diwarnai merah (yang ada di kuadran kiri bawah).
Sekarang kita memiliki lebih dari 1000 set poin ini dan untuk setiap set manusia telah memilih satu titik. Ketentuan ini berlaku untuk semua set:
- Setiap set memiliki sekitar 3 - 10 poin
- Tidak ada outlier
- Poin dapat memiliki nilai positif dan negatif
- Tidak ada kesalahan yang dilakukan saat memilih suatu titik
Pertanyaan saya adalah: Apakah ada algoritma pembelajaran mesin untuk belajar dari set ini dan seleksi buatan manusia sehingga secara otomatis dapat memutuskan titik mana yang akan dipilih ketika satu set poin baru diberikan? Set baru ini memenuhi 3 syarat pertama dari atas tentu saja.
2 komentar terakhir:
- Contoh yang saya berikan hanyalah contoh yang dibuat secara acak oleh saya untuk mendukung gagasan tentang titik-titik dalam sebuah pesawat di sekitar asal bersama dengan yang dipilih. Dalam kehidupan nyata mungkin ada lebih banyak struktur tetapi untuk saat ini saya ingin tahu dan ingin tahu apa yang mungkin untuk kasus ini.
- Apakah variasi mungkin? Katakan itu sekitar 2 titik yang dipilih atau Anda memiliki lingkaran dengan jari-jari tertentu dan bukan titik.
machine-learning
Elmex80s
sumber
sumber
Jawaban:
Ini adalah masalah yang menarik! Dua hal yang membuatnya sangat menantang:
age
danheight
(dalam sentimeter). Setiap sampel memiliki satu entri untuk masing-masing, dan tentu saja(age, height) = (22, 180)
tidak sama dengan(age, height) = (180, 22)
. Tidak ada yang benar dalam masalah Anda. Satu set poin memiliki antara 3 dan 10 poin, dan urutan kita memasukkan poin tidak akan membuat perbedaan ketika membandingkan dua set poin.Biarkan saya menguraikan algoritma yang menangani kedua tantangan. Akurasi prediksi tidak terlalu baik; tetapi mungkin Anda melihat cara bagaimana hal itu dapat ditingkatkan. Dan setidaknya itu memprediksi sesuatu , bukan?
1. Simulasi sampel
Untuk dapat menguji algoritme, saya menulis fungsi yang menghasilkan sampel dan label.
Menghasilkan sampel: Setiap sampel berisi antara 3 dan 10 poin. Jumlah poin acak, diambil dari distribusi yang seragam. Setiap titik berbentuk
(x_coordinate, y_coordinate)
. Koordinat kembali acak, diambil dari distribusi normal.Membuat label: Sebagai contoh mainan, mari kita asumsikan bahwa aturan untuk memilih titik adalah: Selalu pilih titik yang paling dekat dengan
(0, 0)
, di mana 'paling dekat' harus dipahami dalam hal norma Euclidean.Kami sekarang dapat membuat set kereta dan tes kami:
2. Membandingkan set titik melalui jarak Hausdorff
Mari kita atasi masalah pertama: Bagaimana kita harus membandingkan set poin yang berbeda? Jumlah poin dalam set poin berbeda. Juga ingat bahwa urutan penulisan poin tidak menjadi masalah: Membandingkan dengan set poin
[(0,0), (1,1), (2,2)]
harus menghasilkan hasil yang sama dengan membandingkan dengan set poin[(2,2), (0,0), (1,1)]
. Pendekatan saya adalah membandingkan set poin melalui jarak Hausdorff mereka :3. Memprediksi melalui k-tetangga terdekat dan rata-rata
Kami sekarang memiliki gagasan jarak antara set titik. Hal ini memungkinkan untuk menggunakan klasifikasi tetangga k-terdekat: Diberikan set titik uji, kami menemukan
k
set titik dalam sampel pelatihan kami yang memiliki jarak Hausdorff terkecil relatif terhadap set titik uji, dan mendapatkan label mereka. Sekarang tiba masalah kedua: Bagaimana kita mengubahk
label ini menjadi prediksi untuk set titik uji? Saya mengambil pendekatan paling sederhana: rata-rata label dan memprediksi titik di set titik uji yang paling dekat dengan rata-rata.4. Pengujian
Semuanya tersedia untuk menguji kinerja algoritma kami.
Untuk fungsi keputusan yang diberikan dan
num_neighbors = 70
, kami mendapatkan akurasi prediksi 84%. Ini tidak terlalu bagus, dan tentu saja spesifik untuk fungsi keputusan kami, yang tampaknya cukup mudah diprediksi.Untuk melihatnya, tentukan fungsi keputusan yang berbeda:
Menggunakan fungsi ini melalui
dec_fun = decision_function_maxaverage
menurunkan akurasi prediksi hingga 45%. Ini menunjukkan betapa pentingnya memikirkan aturan keputusan yang menghasilkan label Anda. Jika Anda memiliki ide mengapa orang memilih titik-titik tertentu, ini akan membantu Anda menemukan algoritma terbaik.Beberapa cara untuk meningkatkan algoritme ini: (1) Gunakan fungsi jarak yang berbeda daripada jarak Hausdorff, (2) gunakan sesuatu yang lebih canggih daripada k-tetangga terdekat, (3) tingkatkan cara label pelatihan yang dipilih diubah menjadi prediksi.
sumber
Berikut adalah beberapa cara Anda mungkin menggunakan jaringan saraf untuk mengatasi masalah ini:
Dengan Feedforward Neural Network:
Dengan Jaringan Syaraf Konvolusional:
CNN mungkin berkinerja lebih baik karena data Anda bersifat spasial. Namun Anda harus memutuskan apa yang harus dilakukan jika dua atau lebih poin tumpang tindih. Solusi paling sederhana adalah dengan memilih satu secara acak, yang mungkin OK tergantung pada tugas spesifik Anda.
Dengan Jaringan Syaraf Berulang:
Ya, semudah itu dengan RNN! Mereka menangani input panjang variabel dengan baik, tetapi mereka masih kekurangan keunggulan CNN untuk menangani data spasial.
Peringatan:
Jika menggunakan FNN atau RNN, ada juga masalah bagaimana Anda memesan data input Anda. Jika tidak ada urutan inheren dalam data nyata Anda, maka kami tidak ingin jaringan kami membuat prediksi berbeda untuk data yang sama yang dikodekan dalam pesanan yang berbeda. Salah satu cara untuk mengatasinya adalah dengan augmentasi data : duplikat setiap contoh pelatihan beberapa kali dengan urutan input berbeda, jadi semoga jaringan Anda dapat mempelajari simetri yang sesuai.
Jika Anda hanya punya waktu untuk mencoba satu pendekatan, saya akan memilih CNN. CNN dirancang untuk bekerja dengan baik dengan data spasial, dan tidak ada masalah dengan urutan input.
sumber
(0,0), (1,1), (2,2)
akan memiliki efek yang berbeda dari memberi makan set point(1,1), (2,2), (0,0)
.