混同される推奨システムのパフォーマンス指標🥱
5733 ワード
Hit rate at k
≪合計ユーザー|Total Users|ldap≫の予測に成功したユーザー数
Hit@ℓ=1m∑u∈U1(ranku,gu<=ℓ)\text{Hit}@\ell =\frac{1}{m}\sum_{u\in\mathcal{U}}\textbf{1}(rank_{u, g_u} <=\ell)Hit@ℓ=m1∑u∈U1(ranku,gu<=ℓ)
mmm:ユーザ総数
lll:カットオフ条件
uuu:特定のユーザー
rank,gurank{u,g u}ranku,gu:地上実物(gug ugu)のユーザuuuuのrank
AUC(D2L Ver.)
AUC=1m∑u∈U1∣I\Su∣∑j∈I\Su1(ranku,gu
SuS_uSu : candidate items of user uuu
ranku,gurank_{u, g_u}ranku,gu : ranking of the ground truth item gug_uguof user uuu(ideal ranking is 1)
def hit_and_auc(rankedlist, test_matrix, k):
hits_k = [(idx, val) for idx, val in enumerate(rankedlist[:k])
if val in set(test_matrix)]
hits_all = [(idx, val) for idx, val in enumerate(rankedlist)
if val in set(test_matrix)]
max = len(rankedlist) - 1
auc = 1.0 * (max - hits_all[0][0]) / max if len(hits_all) > 0 else 0
return len(hits_k), auc
各プレイヤーhit,aucの関数rankedlist:1人のプレイヤーのテストデータの推奨結果をソートする
test matrix:test set itemリスト
auc=(1人のプレイヤーの購入アイテム総数-ヒットアイテムの最高順位)/(1人のプレイヤーの購入アイテム総数)
上の式とコードがどのように組み合わせられているのかまだ分かりません.
似たような脈絡で疑問のあるコメントに対する回答は以下の通りである.
Moreover, in the hit_and_auc function we try to find whether the item the net “recommend” is in the top-k list or what’s the rank of that “recommendation” in the hits_al list(which is sorted by the score given by the net),which is corresponding to the way we calculate the AUC (
find out how many false recommendations rank before the ground truth
)GTのrankよりも高いランクでどれだけ間違ったものを推薦するかを把握する上で、脈々と受け継がれているようです.
上のAUC計算法はこの教材でAUCと名付けられています.厳密な意味で広く使われているAUCとは性格が違うようです.
元のAUC定義によるrecsys AUC
1人のプレイヤーにtop-20個のアイテムを推薦し、train set 80%、test set 20%を設定した後
80%のデータで学習後、20%のテストセットを購入するかどうかを予測します.
実際に購入した場合は、TPをお勧めします
実際に購入していなければ、お勧めもなく、TN
実際に購入しましたが、お勧めがなければFN
実際に購入していないのですが、オススメならFP
これによりFPR、TPRが得られる.これで、top-NでNを変更してグラフを描画すると、ROC-Curveが得られます.
リファレンス
1
2
Reference
この問題について(混同される推奨システムのパフォーマンス指標🥱), 我々は、より多くの情報をここで見つけました https://velog.io/@ann9902/계속-헷갈리는-추천시스템의-성능지표テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol