クリックデータを使用して精度と再現率のグラフを作成しようとしています。2 つのデータ ソースがあります。
- 最初のデータ ソースには、特定の query_id に基づいて、すべてのユーザーがクリックした item_ids があります。
- 2 番目のデータ ソースには、指定された query_id に関連するすべての item_id があります。
私はPythonを使用し、次のように2つのデータソースでこれらを辞書に入れました:
>>> print clicked_data
{101: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 103: [20, 21, 22, 23, 24, 25, 26, 27, 28, 29]}
>>> print all_relevant_data
{101: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], 103: [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49]}
私は scikit-learn の Web サイト ( http://scikit-learn.org/stable/auto_examples/plot_precision_recall.html ) の記事を読んでいて、式に従おうとしましたが、偽陽性と偽陰性を実際に設定するのに本当に混乱しました。
scikit-learn の方程式に従います: 上記の例によると、アイテムの事前定義101
P = T_positive/ (T_positive + F_positive)
>>> float(len(clicked_data[101]))/float(len(all_relevant_data[101]))
0.5555555555555556
しかし、リコールを理解しようとすると、クリックデータの偽陰性項目を取得するのに問題があります。理論的には、偽陰性は誤ってマークされていることを意味します。私が持っているのは、特定の ID のユーザーがクリックしたデータと、その ID に関連するすべてのアイテムだけです。
R = T_positive / (T_positive + F_negative)
グラフを作成できるように、精度と再現率を正しく計算するにはどうすればよいですか。
これが結果を評価するための良い指標ではない場合、別のメモとして、上記のデータしかないという事実を考慮して、良い指標は何でしょうか?