推薦系統:NDCG評價指標及其Python實現方法

除了推薦任務,在二分類任務中,也可以計算該指標,代碼如下:

# ndcg
def get_dcg(y_pred, y_true, k):
    #注意y_pred與y_true必須是一一對應的,並且y_pred越大越接近label=1(用相關性的說法就是,與label=1越相關)
    df = pd.DataFrame({"y_pred":y_pred, "y_true":y_true})
    df = df.sort_values(by="y_pred", ascending=False)  # 對y_pred進行降序排列,越排在前面的,越接近label=1
    df = df.iloc[0:k, :]  # 取前K個
    dcg = (2 ** df["y_true"] - 1) / np.log2(np.arange(1, df["y_true"].count()+1) + 1) # 位置從1開始計數
    dcg = np.sum(dcg)
    
def get_ndcg(df, k):
    # df包含y_pred和y_true
    dcg = get_dcg(df["y_pred"], df["y_true"], k)
    idcg = get_dcg(df["y_true"], df["y_true"], k)
    ndcg = dcg / idcg
    return ndcg
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章