Skip to content

Instantly share code, notes, and snippets.

@mh-firouzjah
Created December 8, 2025 06:29
Show Gist options
  • Select an option

  • Save mh-firouzjah/1cb9dbdce90580ffb177a3775deaec4a to your computer and use it in GitHub Desktop.

Select an option

Save mh-firouzjah/1cb9dbdce90580ffb177a3775deaec4a to your computer and use it in GitHub Desktop.

Precision و Recall در بازیابی اطلاعات

در IR، مسئله اصلی رتبه‌بندی و انتخاب اسناد مرتبط است، نه صرفاً درست یا غلط بودن یک جواب.


1. مقدمه

در بازیابی اطلاعات (Information Retrieval)، وقتی یک سیستم مثل موتور جستجو یا سیستم طبقه‌بندی، اسناد یا نمونه‌ها را برمی‌گرداند، باید کیفیت نتایج را بسنجیم. دو معیار اصلی برای این کار وجود دارند:

  • Precision (دقت): درصد نتایج بازیابی‌شده که واقعاً درست هستند.
  • Recall (فراخوانی): درصد از کل نتایج درست که سیستم توانسته پیدا کند.

این دو معیار با هم به ما کمک می‌کنند تا بفهمیم سیستم تا چه حد دقیق و تا چه حد کامل عمل می‌کند.


چهار حالت پایه (Confusion Matrix)

در بازیابی اطلاعات، هر سند نسبت به یک پرس‌وجو یکی از این چهار حالت را دارد:

True Positive (TP) سند مرتبط است و بازیابی شده ✅

False Positive (FP) سند نامرتبط است ولی بازیابی شده ❌

False Negative (FN) سند مرتبط است ولی بازیابی نشده ❌

True Negative (TN) سند نامرتبط است و بازیابی نشده ✅

در IR معمولاً TN اهمیت کمی دارد، چون تعداد اسناد نامرتبط بسیار زیاد است.


Precision (دقت)

تعریف: از بین اسنادی که بازیابی کرده‌ایم، چند درصدشان واقعاً مرتبط بوده‌اند؟

$$ \text{Precision} = \frac{TP}{TP + FP} $$

$$ \text{Precision} = \frac{\text{تعداد نتایج درست بازیابی‌شده}}{\text{تعداد کل نتایج بازیابی‌شده}} $$

تعبیر شهودی:

  • Precision بالا ⇒ نتایج تمیز و کم‌خطا
  • مناسب وقتی کاربر حوصله نتایج اضافی ندارد

مثال ساده:

فرض کنید سیستم ما 10 سند را برمی‌گرداند، و از این 10 سند، 7 سند واقعاً مرتبط هستند:

  • Precision = 7 / 10 = 0.7 → 70%

نکته: Precision به ما می‌گوید «از میان چیزهایی که سیستم آورد، چند درصد درست بود».


Recall (فراخوانی)

تعریف: از بین تمام اسناد مرتبط موجود، چند درصدشان را پیدا کرده‌ایم؟

$$ \text{Recall} = \frac{TP}{TP + FN} $$

$$ \text{Recall} = \frac{\text{تعداد نتایج درست بازیابی‌شده}}{\text{تعداد کل نتایج درست موجود}} $$

تعبیر شهودی:

  • Recall بالا ⇒ چیزی از قلم نمی‌افتد
  • مناسب وقتی از دست دادن اطلاعات خطرناک است

مثال ساده:

فرض کنید در کل پایگاه داده 20 سند مرتبط وجود دارد، و سیستم ما 7 تا را برگردانده:

  • Recall = 7 / 20 = 0.35 → 35%

نکته: Recall به ما می‌گوید «سیستم چند درصد از همه نتایج درست را پیدا کرده است».


رابطه Precision و Recall

بین Precision و Recall معمولاً رابطه‌ی معکوس وجود دارد:

  • اگر خیلی سخت‌گیرانه فقط بهترین نتایج را بدهیم → Precision بالا، Recall پایین
  • اگر هرچیزی که شاید مرتبط است را بیاوریم → Recall بالا، Precision پایین

مثال گوگلی:

  • صفحه اول نتایج → Precision بالا
  • تمام نتایج ممکن → Recall بالا

راهکار متعادل‌سازی: از معیار F1-Score استفاده می‌کنیم:

$$ F1 = 2 \times \frac{Precision \times Recall}{Precision + Recall} $$

F1 میانگین هارمونیک Precision و Recall است و یک معیار کلی از عملکرد سیستم ارائه می‌دهد.


خلاصه

  • Precision: کیفیت نتایج بازیابی‌شده.
  • Recall: توانایی سیستم در پیدا کردن همه نتایج درست.
  • F1-Score: ترکیبی از هر دو برای یک ارزیابی متعادل.

نکته مهم: در طراحی سیستم‌های بازیابی اطلاعات، معمولاً باید تصمیم بگیریم که برای کاربرد ما دقت مهم‌تر است یا فراخوانی.


مثال کاربردی

سند واقعی مرتبط سیستم برگرداند درست/غلط
1 بله درست
2 بله درست
3 خیر -
4 بله درست
5 خیر -
  • Precision = 3 / 3 = 100%
  • Recall = 3 / 5 = 60%

جمع‌بندی و کاربردها

  • Precision مهم است وقتی:

    • اسپم فیلتر
    • موتور جستجو
    • پیشنهاد فیلم یا محصول
  • Recall مهم است وقتی:

    • تشخیص بیماری
    • بازیابی پرونده‌های حقوقی
    • سیستم‌های امنیتی
  • در بازیابی اطلاعات:

    • Precision و Recall با هم معنی پیدا می‌کنند
    • انتخاب آستانه (Threshold) تعیین‌کننده‌ی تعادل آن‌هاست

پیام کلیدی

یک سیستم خوب الزاماً نه بیشترین Precision را دارد و نه بیشترین Recall را، بلکه تعادل مناسبی بین این دو برقرار می‌کند.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment