पाठ 14 / 25
Metrics: Accuracy, Precision, Recall, F1
ऐसा metric चुनें जो हर तरह की ग़लती की क़ीमत से मेल खाए।
जोखिम से मेल खाता metric चुनें
हाँ/ना निर्णयों (क्या यह संदेश हानिकारक है? क्या उत्तर ने स्रोत उपयोग किया?) के लिए true positives (TP), false positives (FP) और false negatives (FN) गिनें। Precision = TP / (TP + FP): हमने जो चिह्नित किया उनमें कितने सचमुच positive थे। Recall = TP / (TP + FN): सभी सचमुच positive में से हमने कितने पकड़े। F1 उनका harmonic mean है। सादी accuracy तब भ्रमित कर सकती है जब कोई वर्ग दुर्लभ हो: जो filter कुछ भी चिह्नित नहीं करता वह 99% सटीक है यदि सिर्फ़ 1% संदेश हानिकारक हैं।
Precision, recall और F1, चलाकर
मैंने यह TP = 40, FP = 10, FN = 20 के साथ चलाया: precision 0.8, recall लगभग 0.667 और F1 लगभग 0.727। तय करें कि आपके काम में कौन ज़्यादा मायने रखता है: safety filter आम तौर पर recall पसंद करता है, spam filter अक्सर precision।
def prf(tp, fp, fn):
p = tp / (tp + fp)
r = tp / (tp + fn)
f = 2 * p * r / (p + r)
return round(p, 3), round(r, 3), round(f, 3)
print(prf(40, 10, 20))
Output:
(0.8, 0.667, 0.727)
Base rate न भूलें
यदि हानिकारक संदेश 100 में 1 हैं, तो हमेशा "सुरक्षित" कहने वाला आलसी नियम 99% accuracy पाता है और कुछ नहीं पकड़ता। दुर्लभ वर्ग के लिए हमेशा precision और recall बताएँ, सिर्फ़ accuracy नहीं।
त्वरित जाँच: Recall क्या मापता है?
- कितने tokens उपयोग हुए
- चिह्नित items में से कितने सचमुच positive थे
- Model कितनी तेज़ी से उत्तर देता है
- सभी सचमुच positive items में से कितने पकड़े गए
Answer
सभी सचमुच positive items में से कितने पकड़े गए — Recall है TP / (TP + FN): system द्वारा खोजे गए असली positives का हिस्सा।