1 評分預(yù)測:預(yù)測用戶對物品的評分
RMSE均方根誤差=實際評分差的平方的平均數(shù),再開根號
MAE均方根誤差=實際評分差的平均數(shù)
RSME 加大了對預(yù)測不準(zhǔn)的用戶物品評分的懲罰,因而對系統(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ù)測準(zhǔn)確率
網(wǎng)站在提供服務(wù)時,一般會給用戶一個個性化的推薦列表。
召回率: 準(zhǔn)確的有多少個被預(yù)測出來了
預(yù)測集中個數(shù)^實際集中個數(shù)/實際集中個數(shù)
準(zhǔn)確率: 預(yù)測中有多少個準(zhǔn)確的
預(yù)測集中個數(shù)^實際集中個數(shù)/預(yù)測集中個數(shù)
def recall(tests, N):
for user,items in tests.items():
topN = GetTopN(User,N)
Hit += useritems & topN # set 交集 累加
real_total += items # 實際集中數(shù)目累加
predict_total += N # 預(yù)測集中累加,每次預(yù)測N ,則每次加 N
recall = hit/ real_total
precision = hit / predict_total