Saya membutuhkan algoritma untuk melakukan pencarian biner ketika tes pada setiap langkah dapat memberikan hasil yang salah.
Latar belakang:
Saya perlu menempatkan siswa pada 12 tingkat kesulitan yang paling tepat. Pendekatan saat ini adalah brute force dan mengajukan 60 pertanyaan pilihan ganda 4-jawaban untuk meningkatkan kesulitan, berhenti setelah tiga salah, dan menempatkan siswa pada level: floor((score - 1) / 5) + 1
dengan minimal 1.
Kami khawatir bahwa pelanggan dimatikan ketika mereka menghadapi tes dengan hingga 60 pertanyaan sebelum mereka benar-benar dapat menggunakan program ini, jadi kami ingin meminimalkan jumlah pertanyaan yang diajukan dalam tes. Kami juga khawatir bahwa pelanggan melewatkan tes penempatan (karena tampaknya lama) dan kemudian meninggalkan program karena tampaknya terlalu mudah.
Penempatan median sebenarnya pada level 2, jadi 50 +% siswa mendapat skor <11 (yaitu menjawab <14 pertanyaan). Secara anekdot, ini mungkin karena mereka bosan dan berhenti menanggapi pertanyaan dengan serius (mereka anak-anak kecil).
Solusi yang Diusulkan: Melaksanakan tes sebagai pencarian biner lebih dari dua belas item dimulai dengan pertanyaan pada tingkat kesulitan 6/7 dan melanjutkan berdasarkan pada apakah mereka mendapatkan pertanyaan yang benar atau salah. Secara teori, ini bisa menemukan tingkat kesulitan yang sesuai untuk mereka dalam 3-4 pertanyaan.
Masalahnya: Seperti yang Anda tebak dari tes yang ada hanya berakhir setelah tiga jawaban yang salah dan menggunakan 60 pertanyaan untuk memilih antara 12 level, kami ingin memberikan kelonggaran bagi siswa yang mengabaikan jawaban yang benar (yang seharusnya mereka lakukan 25% dari waktu) atau tanpa sengaja memberikan jawaban yang salah (jari gemuk, salah membaca pertanyaan, dll). Ini bahkan lebih penting dengan pencarian biner karena mengabaikan jawaban yang benar pada pertanyaan pertama dapat menempatkan Anda di bagian atas tingkat kesulitan bahkan jika Anda salah menjawab setiap pertanyaan.
Jadi, apakah ada algoritma yang dikenal untuk pencarian biner di mana Anda tidak dapat menjamin bahwa tes individual akurat?
Secara naif saya mungkin mencoba yang terbaik dari 3 atau 5 pertanyaan di setiap langkah, dan, karena pertanyaan awal memiliki efek yang lebih besar pada hasil akhir daripada pertanyaan selanjutnya, mungkin menambahkan pertanyaan tambahan ini hanya untuk langkah awal dan bukan yang kemudian. Apakah ada yang lebih dari itu?
Jawaban:
Perlakukan masalah sebagai array probabilitas bayesian; awalnya, anggap ada peluang 1/13 bahwa anak itu hanya di bawah setiap tingkat dan, untuk kelengkapan, peluang 1/13 mereka berada di atas. Kemudian: 1) Temukan tingkat median dari larik Anda, yaitu tingkat di mana probabilitas berada di atasnya paling dekat dengan 50% 2) Ajukan pertanyaan pada anak dari tingkat itu. 3) Gunakan Bayes 'Rule untuk memperbarui probabilitas setiap sel, dengan asumsi tingkat kesalahan 25%. Hentikan dan kembalikan level yang paling mungkin ketika satu sel mencapai probabilitas yang cukup tinggi, atau saya kira ketika Anda kehabisan pertanyaan pada level.
Perlakuan yang lebih ketat dari algoritma ini ada di sini ; Saya sarankan membacanya sebelum diimplementasikan.
sumber