1 評(píng)分預(yù)測(cè):預(yù)測(cè)用戶對(duì)物品的評(píng)分
RMSE均方根誤差=實(shí)際評(píng)分差的平方的平均數(shù),再開(kāi)根號(hào)
MAE均方根誤差=實(shí)際評(píng)分差的平均數(shù)
RSME 加大了對(duì)預(yù)測(cè)不準(zhǔn)的用戶物品評(píng)分的懲罰,因而對(duì)系統(tǒng)的懲罰更加苛刻。
def RSME(records):
allsum= sum(pow(real - predict,2) for real, predict in records)
avg = allsum / float(len(records))
return math.sqrt(avg)
def MAE(records):
allsum = sum(abs(real - predict) for real, predict in records)
avg = allsum / float(len(records))
return math.sqrt(avg)
2 TopN 推薦的預(yù)測(cè)準(zhǔn)確率
網(wǎng)站在提供服務(wù)時(shí),一般會(huì)給用戶一個(gè)個(gè)性化的推薦列表。
召回率: 準(zhǔn)確的有多少個(gè)被預(yù)測(cè)出來(lái)了
預(yù)測(cè)集中個(gè)數(shù)^實(shí)際集中個(gè)數(shù)/實(shí)際集中個(gè)數(shù)
準(zhǔn)確率: 預(yù)測(cè)中有多少個(gè)準(zhǔn)確的
預(yù)測(cè)集中個(gè)數(shù)^實(shí)際集中個(gè)數(shù)/預(yù)測(cè)集中個(gè)數(shù)
def recall(tests, N):
for user,items in tests.items():
topN = GetTopN(User,N)
Hit += useritems & topN # set 交集 累加
real_total += items # 實(shí)際集中數(shù)目累加
predict_total += N # 預(yù)測(cè)集中累加,每次預(yù)測(cè)N ,則每次加 N
recall = hit/ real_total
precision = hit / predict_total