私は、(映画のランキングや多くのユーザーの何であれ)ユーザーが視聴する10のおすすめの映画のリストを作成する推奨システムを構築していると仮定します。私がいくつかの大きな映画アイテムのプールと、ユーザーが実際に視聴することに決めた映画と一緒にユーザーの評価のログがあるとします。したがって、このデータセットを使用してシステムを評価したいと思います。
これらの「いくつかの良いアイテムを提案する」タスクは通常、精度、再現率、F1スコアを使用して評価されることを文献で確認しました(たとえば[1]を参照)。特に「10での精度」に興味があると思います。しかし、私が上記のシナリオでこれらの測定値をどのように計算するか(またはそれらが意味をなすかどうか)はよくわかりません。
どうやら、好ましいのは、サンプルを「トレーニング」と「テスト」の部分にランダムに分割することです。次に、トレーニングデータをアルゴリズムにフィードして、10個の予測のリストを作成できるようにします。
正確な並べ替えが意味をなすようになったので、10個の予測から、テストデータでユーザーが見た映画に実際にどれだけあるかを確認できます。
ただし、思い出してください。ユーザーがテストデータで多数の映画を視聴した場合、たとえば50程度です。「良い」リコールスコアを取得する方法はありません。これは、私のシステムが10本の映画しか制作しないように制限されており、最大で1/5 = 0.2のリコールしか得られないためです。
または、ユーザーの「次に視聴した10本の」映画を推測するためだけにテストを制限すると(「完全な再現」が得られる可能性があるため)、精度と再現は常にまったく同じ数になります(推奨数とユーザーに関連する数は同じで、精度と再現率も常に同じです)。
私は何か間違ったことをしていますか?または、これらのメトリックは、検討中のシナリオではあまり意味がありませんか?