Giả sử tôi đã xây dựng một hệ thống đề xuất rằng (được cho là xếp hạng phim hoặc bất kỳ người dùng nào) sẽ tạo ra một danh sách 10 phim được đề xuất cho mỗi người dùng để xem. Hãy tưởng tượng rằng tôi cũng có một số lượng lớn các mục phim, cùng với nhật ký xếp hạng của người dùng cùng với các phim mà họ thực sự quyết định xem. Vì vậy, tôi muốn sử dụng bộ dữ liệu này để đánh giá hệ thống của mình.
Trong tài liệu tôi đã thấy rằng các nhiệm vụ "đề xuất một số mặt hàng tốt" này thường được đánh giá bằng cách sử dụng độ chính xác, thu hồi và điểm F1 (ví dụ: xem [1] ). Tôi đoán rằng tôi nên quan tâm, đặc biệt, về "độ chính xác ở mức 10". Tuy nhiên tôi không chắc chắn làm thế nào người ta phải tính toán các biện pháp này (hoặc nếu chúng có ý nghĩa gì) trong kịch bản mà tôi đã mô tả ở trên.
Rõ ràng, điều cần làm là chia ngẫu nhiên mẫu thành một phần "đào tạo" và một phần "thử nghiệm". Và sau đó cung cấp dữ liệu đào tạo cho thuật toán của tôi để nó có thể đưa ra danh sách 10 dự đoán.
Bây giờ chính xác là hợp lý, tôi có thể kiểm tra từ 10 dự đoán có bao nhiêu trong số này thực sự được tìm thấy trong các bộ phim được người dùng xem trong dữ liệu thử nghiệm.
Tuy nhiên, để nhớ lại, nếu người dùng đã xem rất nhiều phim trong dữ liệu thử nghiệm, hãy nói 50 hoặc hơn; không có cách nào để đạt được điểm thu hồi "tốt", đơn giản là vì hệ thống của tôi bị hạn chế chỉ sản xuất 10 phim và tôi sẽ nhận được tối đa 1/5 = 0,2 lần thu hồi.
Ngoài ra, nếu tôi chỉ kiểm tra thử để đoán phim "10 lần xem tiếp theo" của người dùng (để có cơ hội nhận được "thu hồi hoàn hảo"), thì độ chính xác và thu hồi sẽ luôn chính xác như nhau (nếu số được đề xuất và số liên quan cho người dùng là như nhau, độ chính xác và thu hồi cũng luôn giống nhau).
Tôi có làm điều gì sai? Hoặc những số liệu này chỉ đơn giản là không có ý nghĩa nhiều trong kịch bản được xem xét?