延續昨天的內容,如果想回顧其他指標的話可以看上一篇--Day 15|RAG 評估指南(1/2):檢索指標(上)
廢話不多說了,我們馬上開始!
F1 分數是 精確率 (Precision) 和 召回率 (Recall) 的「調和平均數」。它提供了一個單一的指標,能夠同時平衡檢索器的「品質」與「覆蓋率」。
公式:
調和平均數:求一組數值的平均數的方法中的一種。這邊會選用調和平均數正是為了避免被其中一邊拉低水準。
這個公式的重點是,只要精確率或者是召回率其中一個數值很低,F1 分數就會跟著大幅度的降低,所以如果需要很高的 F1 分數,就必須同時擁有高精確率和高召回率。
這邊一樣給幾個情境:
情境 | Precision | Recall | F1 | 說明 |
---|---|---|---|---|
高召回率、低精確率 | 0.10 | 0.90 | 0.18 | 取回很多結果,但多數與查詢無關(覆蓋廣、純度低) |
高召回率、高精確率 | 0.90 | 0.90 | 0.90 | 取回又全面又準確:理想狀態 |
低召回率、高精確率 | 0.90 | 0.10 | 0.18 | 取回很少,但幾乎都相關(純度高、漏得多) |
中等召回率、中等精確率 | 0.50 | 0.50 | 0.50 | 兩者都中等、整體平衡;比「一高一低」更好。 |
總結來說,F1-score 提供一個兼顧「不亂推」與「不漏掉」的單一分數,方便比較檢索器。
公式:
這邊的概念主要是關於排名,它適合用在評估「相關文件在檢索結果中的排名」。它衡量的是「第一個相關文件的排名」的倒數值,會取倒數就是因為名次肯定是越小越好,我們要將它轉成一個相對應的分數去做比較。
MRR 是在一組查詢 (queries) 上取平均,其實會取平均的原因也是因為我們並不是只關心單一查詢而是看整體的表現能力,所以會對每個查詢 i 去計算它的倒數值,再去取平均。
下面給個範例:
查詢(例子) | 第一個相關的名次 (rank) | 倒數值 (1/rank) |
---|---|---|
台北肉燥飯推薦 | 3 | 1/3 |
附近哪裡有賣肉燥飯 | 1 | 1 |
公館肉燥飯 | 2 | 1/2 |
24 小時營業的肉燥飯 | 3 | 1/3 |
註:rank 從 1 開始;沒有相關結果時記 0
MRR = 13/24 ≈ 0.542
直觀來說,我們很前面就能看到第一個相關結果(介於第 1~3 名之間)。
公式:
這邊的公式雖然很複雜,但我們會逐一拆解所以不用擔心,我們說明這邊名詞的意思 :
AP(Average Precision,平均精確率):針對「單一查詢」的分數。
其實就是沿著排名一直往下看,每遇到一個「相關」的結果,就記下當下的 Precision@k;把這些 Precision 值平均起來,就是該查詢的 AP。
rel@k = 1(第 k 名是相關)的位置
MAP(Mean Average Precision,平均的平均精確率):把多個查詢的 AP 再取平均。
會使用 MAP 主要是因為它很看重排名這件事情,且同時考慮多個相關結果。
如果只看 Precision、Recall,只能判斷有沒有找對,但沒辦法評估「排序好不好」。
就跟我們平常在搜尋資訊時,搜尋引擎的使用者通常只會點前幾筆結果,所以「排名越前越重要」,nDCG 就是用來衡量排序品質,特別適合相關性不是單一等級(0/1),而是多等級(例如 0,1,2,3)的情境。
這邊介紹一下公式:
DCG(折扣累積增益):它會考慮文件的相關性分數,以及它出現在排序中的位置。排名越後面,分數會被打「折扣」
IDCG(理想的 DCG):把同一批文件依照「最佳排序」(相關性最高的放最前面)計算出來的 DCG,就是理想情況的分數
nDCG(標準化的 DCG):實際排序結果和理想排序結果相比,得到一個 0~1 之間的值,越接近 1 代表排序品質越好
因為這部分的公式太複雜,我覺得我用舉例來說明好了,假設你搜尋「LOL FAKER」,系統找到 5 篇文章,每篇都有「相關性分數」:
1. 實際系統排序
搜尋引擎結果是:A, B, C, D, E,你就會很納悶 A 跑在第一名,但為甚麼拿到同等分數的 E 卻被排到最後,可以想像成我們「系統目前的表現」。
計算後的 DCG ≈ 11.84
2. 理想排序
在理想狀態應該是 A, E, C, B, D,也就是把分數最高的放在最前面才對,可以想像成「滿分狀態」。
計算後的 IDCG ≈ 13.35
3. nDCG 計算
把這兩項結果做一個比較後,會發現 nDCG 約是 0.89 ,表示這次排序的品質大概有 89% 的完美度,也就是「實際排序離滿分有多近」,就跟滿分 100 你考了 89,還不錯還不錯~
終於把這邊介紹完了,明天來總結這幾種方法吧~~~