Precision和Recall
首先我們來看看下面這個混淆矩陣:
pred_label/true_label | Positive | Negative |
---|---|---|
Positive | TP | FP |
Negtive | FN | TN |
如上表所示,行表示預測的label值,列表示真實label值。TP,FP,FN,TN分別表示如下意思:
- TP(true positive):表示樣本的真實類別爲正,最後預測得到的結果也爲正;
- FP(false positive):表示樣本的真實類別爲負,最後預測得到的結果卻爲正;
- FN(false negative):表示樣本的真實類別爲正,最後預測得到的結果卻爲負;
- TN(true negative):表示樣本的真實類別爲負,最後預測得到的結果也爲負.
根據以上幾個指標,可以分別計算出Accuracy、Precision、Recall(Sensitivity,SN),Specificity(SP)。
- Accuracy:表示預測結果的精確度,預測正確的樣本數除以總樣本數。
- precision,準確率,表示預測結果中,預測爲正樣本的樣本中,正確預測爲正樣本的概率;
- recall,召回率,表示在原始樣本的正樣本中,最後被正確預測爲正樣本的概率;
- specificity,常常稱作特異性,它研究的樣本集是原始樣本中的負樣本,表示的是在這些負樣本中最後被正確預測爲負樣本的概率。
在實際當中,我們往往希望得到的precision和recall都比較高,比如當FN和FP等於0的時候,他們的值都等於1。但是,它們往往在某種情況下是互斥的。例如,有50個正樣本,50個負樣本,結果全部預測爲正樣本,那麼TP=50,FP=50,TN=0,FN=0,按照上面的公式計算,可以得到正樣本的recall卻爲1,precision卻爲0.5.所以需要一種折衷的方式,因此就有了F1-score。
F1-score表示的是precision和recall的調和平均評估指標。
另外還有一個指標,即MCC,該指標對於不均衡數據集的評估非常有效,公式如下:
下面簡單列舉幾種常用的推薦系統評測指標:
1、準確率與召回率(Precision & Recall)
準確率和召回率是廣泛用於信息檢索和統計學分類領域的兩個度量值,用來評價結果的質量。其中精度是檢索出相關文檔數與檢索出的文檔總數的比率,衡量的是檢索系統的查準率;召回率是指檢索出的相關文檔數和文檔庫中所有的相關文檔數的比率,衡量的是檢索系統的查全率。
一般來說,Precision就是檢索出來的條目(比如:文檔、網頁等)有多少是準確的,Recall就是所有準確的條目有多少被檢索出來了。
正確率、召回率和 F 值是在魚龍混雜的環境中,選出目標的重要評價指標。不妨看看這些指標的定義先:
1. 正確率 = 提取出的正確信息條數 / 提取出的信息條數
2. 召回率 = 提取出的正確信息條數 / 樣本中的信息條數
兩者取值在0和1之間,數值越接近1,查準率或查全率就越高。
3. F值 = 正確率 * 召回率 * 2 / (正確率 + 召回率) (F 值即爲正確率和召回率的調和平均值)
不妨舉這樣一個例子:某池塘有1400條鯉魚,300只蝦,300只鱉。現在以捕鯉魚爲目的。撒一大網,逮着了700條鯉魚,200只蝦,100只鱉。那麼,這些指標分別如下:
正確率 = 700 / (700 + 200 + 100) = 70%
召回率 = 700 / 1400 = 50%
F值 = 70% * 50% * 2 / (70% + 50%) = 58.3%
不妨看看如果把池子裏的所有的鯉魚、蝦和鱉都一網打盡,這些指標又有何變化:
正確率 = 1400 / (1400 + 300 + 300) = 70%
召回率 = 1400 / 1400 = 100%
F值 = 70% * 100% * 2 / (70% + 100%) = 82.35%
由此可見,正確率是評估捕獲的成果中目標成果所佔得比例;召回率,顧名思義,就是從關注領域中,召回目標類別的比例;而F值,則是綜合這二者指標的評估指標,用於綜合反映整體的指標。
當然希望檢索結果Precision越高越好,同時Recall也越高越好,但事實上這兩者在某些情況下有矛盾的。比如極端情況下,我們只搜索出了一個結果,且是準確的,那麼Precision就是100%,但是Recall就很低;而如果我們把所有結果都返回,那麼比如Recall是100%,但是Precision就會很低。因此在不同的場合中需要自己判斷希望Precision比較高或是Recall比較高。如果是做實驗研究,可以繪製Precision-Recall曲線來幫助分析。
2、綜合評價指標(F-Measure)
P和R指標有時候會出現的矛盾的情況,這樣就需要綜合考慮他們,最常見的方法就是F-Measure(又稱爲F-Score)。
F-Measure是Precision和Recall加權調和平均:
當參數α=1時,就是最常見的F1,也即
可知F1綜合了P和R的結果,當F1較高時則能說明試驗方法比較有效。
3、E值
E值表示查準率P和查全率R的加權平均值,當其中一個爲0時,E值爲1,其計算公式:
b越大,表示查準率的權重越大。
4、平均正確率(Average Precision, AP)
平均正確率表示不同查全率的點上的正確率的平均。
5、DCG
例如:假設有兩個主題,主題1有4個相關網頁,主題2有5個相關網頁。某系統對於主題1檢索出4個相關網頁,其rank分別爲1, 2, 4, 7;對於主題2檢索出3個相關網頁,其rank分別爲1,3,5。對於主題1,平均準確率爲(1/1+2/2+3/4+4/7)/4=0.83。對於主題2,平均準確率爲(1/1+2/3+3/5+0+0)/5=0.45。則MAP= (0.83+0.45)/2=0.64。”
計算相對複雜。對於排在結位置n處的NDCG的計算公式如下圖所示:
在MAP中,四個文檔和query要麼相關,要麼不相關,也就是相關度非0即1。NDCG中改進了下,相關度分成從0到r的r+1的等級(r可設定)。當取r=5時,等級設定如下圖所示:
(應該還有r=1那一級,原文檔有誤,不過這裏不影響理解)
例如現在有一個query={abc},返回下圖左列的Ranked List(URL),當假設用戶的選擇與排序結果無關(即每一級都等概率被選中),則生成的累計增益值如下圖最右列所示:
考慮到一般情況下用戶會優先點選排在前面的搜索結果,所以應該引入一個折算因子(discounting factor): log(2)/log(1+rank)。這時將獲得DCG值(Discounted Cumulative Gain)如下如所示:
最後,爲了使不同等級上的搜索結果的得分值容易比較,需要將DCG值歸一化的到NDCG值。操作如下圖所示,首先計算理想返回結果List的DCG值:
然後用DCG/MaxDCG就得到NDCG值,如下圖所示:
8、MRR(Mean Reciprocal Rank):
是把標準答案在被評價系統給出結果中的排序取倒數作爲它的準確度,再對所有的問題取平均。相對簡單,舉個例子:有3個query如下圖所示:
(黑體爲返回結果中最匹配的一項)