Asumsikan saya telah membangun sistem pemberi rekomendasi yang (misalnya memberi peringkat film atau apa pun dari banyak pengguna) akan menghasilkan daftar 10 film yang direkomendasikan untuk ditonton oleh setiap pengguna. Bayangkan bahwa saya juga memiliki sejumlah besar item film, bersama dengan log peringkat pengguna bersama dengan film yang mereka putuskan untuk tonton. Jadi saya ingin menggunakan kumpulan data ini untuk mengevaluasi sistem saya.
Saya telah melihat dalam literatur bahwa tugas-tugas "menyarankan beberapa item bagus" ini biasanya dievaluasi menggunakan ketepatan, daya ingat dan skor-F1 (mis. Lihat [1] ). Saya kira saya harus tertarik, khususnya, pada "presisi pada 10". Namun saya tidak begitu yakin bagaimana seseorang harus menghitung langkah-langkah ini (atau jika mereka masuk akal) dalam skenario yang saya jelaskan di atas.
Tampaknya, hal yang disukai untuk dilakukan adalah memecah sampel secara acak menjadi bagian "pelatihan" dan "pengujian". Dan kemudian memberi makan data pelatihan ke algoritma saya sehingga dapat muncul dengan daftar 10 prediksi.
Sekarang presisi agak masuk akal, saya dapat memeriksa dari 10 prediksi berapa banyak dari ini sebenarnya ditemukan di film yang ditonton oleh pengguna dalam data pengujian.
Namun untuk diingat, jika pengguna menonton banyak film dalam data pengujian, katakan 50 atau lebih; tidak ada cara untuk mendapatkan skor recall "baik", hanya karena sistem saya dibatasi untuk menghasilkan hanya 10 film dan saya akan mendapatkan paling banyak 1/5 = 0,2 dari recall.
Atau, jika saya membatasi tes hanya untuk menebak "10 tontonan berikutnya" film pengguna (sehingga ada kesempatan untuk mendapatkan "recall sempurna"), maka presisi dan recall akan selalu persis angka yang sama (jika nomor yang disarankan dan jumlah yang relevan untuk pengguna adalah sama, presisi dan daya ingat juga selalu sama).
Apakah saya melakukan sesuatu yang salah? Atau metrik ini tidak masuk akal dalam skenario yang dipertimbangkan?