पाठ 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 का हिस्सा।