From 2349deff920f816dd1788df78e97427bb6222cdc Mon Sep 17 00:00:00 2001 From: Ajay Dhangar Date: Tue, 6 Jan 2026 09:54:53 +0530 Subject: [PATCH] ml docs add --- .../model-evaluation/metrics/accuracy.mdx | 128 ++++++++++++++++ .../metrics/confusion-matrix.mdx | 143 ++++++++++++++++++ .../model-evaluation/metrics/f1-score.mdx | 104 +++++++++++++ .../model-evaluation/metrics/log-loss.mdx | 125 +++++++++++++++ .../model-evaluation/metrics/precision.mdx | 102 +++++++++++++ .../model-evaluation/metrics/recall.mdx | 110 ++++++++++++++ .../model-evaluation/metrics/roc-auc.mdx | 123 +++++++++++++++ .../why-evaluation-matters.mdx | 78 ++++++++++ static/img/tutorials/ml/cancer-detection.jpg | Bin 0 -> 101138 bytes 9 files changed, 913 insertions(+) create mode 100644 static/img/tutorials/ml/cancer-detection.jpg diff --git a/docs/machine-learning/machine-learning-core/model-evaluation/metrics/accuracy.mdx b/docs/machine-learning/machine-learning-core/model-evaluation/metrics/accuracy.mdx index e69de29..dce4642 100644 --- a/docs/machine-learning/machine-learning-core/model-evaluation/metrics/accuracy.mdx +++ b/docs/machine-learning/machine-learning-core/model-evaluation/metrics/accuracy.mdx @@ -0,0 +1,128 @@ +--- +title: "Accuracy: The Intuitive Metric" +sidebar_label: Accuracy +description: "Understanding the most common evaluation metric, its formula, and its fatal flaws in imbalanced datasets." +tags: [machine-learning, model-evaluation, metrics, classification] +--- + +**Accuracy** is the most basic and intuitive metric used to evaluate a classification model. In simple terms, it answers the question: *"Out of all the predictions made, how many were correct?"* + +## 1. The Mathematical Formula + +Accuracy is calculated by dividing the number of correct predictions by the total number of input samples. + +Using the components of a [Confusion Matrix](./confusion-matrix), the formula is: + +$$ +\text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN} +$$ + +Where: + +* **TP (True Positives):** Correctly predicted positive samples. +* **TN (True Negatives):** Correctly predicted negative samples. +* **FP (False Positives):** Incorrectly predicted as positive. +* **FN (False Negatives):** Incorrectly predicted as negative. + +**Example:** + +Imagine you have a dataset of 100 emails, where 80 are spam and 20 are not spam. Your model makes the following predictions: + +| Actual \ Predicted | Spam | Not Spam | +| --- | --- | --- | +| **Spam** | 70 (TP) | 10 (FN) | +| **Not Spam** | 5 (FP) | 15 (TN) | + +Using the formula: + +$$ +\text{Accuracy} = \frac{70 + 15}{70 + 15 + 5 + 10} = \frac{85}{100} = 0.85 \text{ or } 85\% +$$ + +This means your model correctly identified 85% of the emails. + +## 2. When Accuracy Works Best + +Accuracy is a reliable metric **only** when your dataset is **balanced**. + +* **Example:** You are building a model to classify images as either "Cats" or "Dogs." Your dataset has 500 cats and 500 dogs. +* If your model gets an accuracy of 90%, you can be confident that it is performing well across both categories. + +## 3. The "Accuracy Paradox" (Imbalanced Data) + +Accuracy becomes highly misleading when one class significantly outweighs the other. This is known as the **Accuracy Paradox**. + +### The Scenario: + +Imagine a Rare Disease test where only **1%** of the population is actually sick. + +1. If a "lazy" model is programmed to simply say **"Healthy"** for every single patient... +2. It will be **99% accurate**. + +```mermaid +graph LR + POP["$$\text{Population (100\%)}$$"] + + POP --> H["$$99\% \ \text{Healthy}$$"] + POP --> S["$$1\% \ \text{Sick (Rare Disease)}$$"] + + %% Lazy Model + H --> PH["$$\text{Predicted: Healthy}$$"] + S --> PS["$$\text{Predicted: Healthy}$$"] + + PH --> ACC1["$$\text{True Negatives (99\%)}$$"] + PS --> ERR1["$$\text{False Negatives (1\%)}$$"] + + ACC1 --> MET["$$\text{Accuracy} = \frac{99}{100} = 99\%$$"] + + ERR1 --> FAIL["$$\text{❌ All Sick Patients Missed}$$"] + + MET -.->|"$$\text{Accuracy Paradox}$$"| FAIL + +``` + +**The problem?** Even though the accuracy is 99%, the model failed to find the 1% of people who actually need help. In high-stakes fields like medicine or fraud detection, accuracy is often the least important metric. + +## 4. Implementation with Scikit-Learn + +```python +from sklearn.metrics import accuracy_score + +# Actual target values +y_true = [0, 1, 1, 0, 1, 1] + +# Model predictions +y_pred = [0, 1, 0, 0, 1, 1] + +# Calculate Accuracy +score = accuracy_score(y_true, y_pred) + +print(f"Accuracy: {score * 100:.2f}%") +# Output: Accuracy: 83.33% + +``` + +## 5. Pros and Cons + +| Advantages | Disadvantages | +| --- | --- | +| **Simple to understand:** Easy to explain to non-technical stakeholders. | **Useless for Imbalance:** Can hide poor performance on minority classes. | +| **Single Number:** Provides a quick, high-level overview of model health. | **Ignores Probability:** Doesn't tell you how confident the model was in its choice. | +| **Standardized:** Used across almost every classification project. | **Cost Blind:** Treats "False Positives" and "False Negatives" as equally bad. | + +## 6. How to move beyond Accuracy? + +To get a true picture of your model's performance—especially if your data is "skewed"—you should look at Accuracy alongside: + +* **Precision:** How many of the predicted positives were actually positive? +* **Recall:** How many of the actual positives did we successfully find? +* **F1-Score:** The harmonic mean of Precision and Recall. + +## References + +* **Google Developers:** [Classification: Accuracy](https://developers.google.com/machine-learning/crash-course/classification/accuracy) +* **StatQuest:** [Accuracy, Precision, and Recall](https://www.youtube.com/watch?v=Kdsp6soqA7o) + +--- + +**If Accuracy isn't enough to catch rare diseases or credit card fraud, what is?** Stay tuned for our next chapter on **Precision & Recall** to find out! \ No newline at end of file diff --git a/docs/machine-learning/machine-learning-core/model-evaluation/metrics/confusion-matrix.mdx b/docs/machine-learning/machine-learning-core/model-evaluation/metrics/confusion-matrix.mdx index e69de29..63deaff 100644 --- a/docs/machine-learning/machine-learning-core/model-evaluation/metrics/confusion-matrix.mdx +++ b/docs/machine-learning/machine-learning-core/model-evaluation/metrics/confusion-matrix.mdx @@ -0,0 +1,143 @@ +--- +title: The Confusion Matrix +sidebar_label: Confusion Matrix +description: "The foundation of classification evaluation: True Positives, False Positives, True Negatives, and False Negatives." +tags: [machine-learning, model-evaluation, metrics, classification, confusion-matrix] +--- + +A **Confusion Matrix** is a table used to describe the performance of a classification model. While "Accuracy" tells you how often the model is correct, the Confusion Matrix tells you exactly **how** it is failing and which classes are being swapped. + +## 1. The 2x2 Layout + +For a binary classification (Yes/No, Spam/Ham), the matrix consists of four quadrants: + +| | Predicted: **Negative** | Predicted: **Positive** | +| :--- | :--- | :--- | +| **Actual: Negative** | **True Negative (TN)** | **False Positive (FP)** | +| **Actual: Positive** | **False Negative (FN)** | **True Positive (TP)** | + +### Breaking Down the Quadrants: +* **True Positive (TP):** You predicted positive, and it was true. (e.g., You predicted a patient has cancer, and they do). +* **True Negative (TN):** You predicted negative, and it was true. (e.g., You predicted a patient is healthy, and they are). +* **False Positive (FP):** You predicted positive, but it was false. (Also known as a **Type I Error** or a "False Alarm"). +* **False Negative (FN):** You predicted negative, but it was positive. (Also known as a **Type II Error** or a "Miss"). + +## 2. Type I vs. Type II Errors + +The "cost" of these errors depends entirely on your specific problem. + +```mermaid +graph TB + TITLE["$$\text{Type I vs. Type II Errors}$$"] + + %% Ground Truth + TITLE --> TRUTH["$$\text{Actual Condition}$$"] + TRUTH --> POS["$$\text{Positive (Condition Present)}$$"] + TRUTH --> NEG["$$\text{Negative (Condition Absent)}$$"] + + %% Model Decisions + POS --> TP["$$\text{True Positive}$$"] + POS --> FN["$$\text{Type II Error}$$
$$\text{False Negative}$$"] + + NEG --> TN["$$\text{True Negative}$$"] + NEG --> FP["$$\text{Type I Error}$$
$$\text{False Positive}$$"] + + %% Costs + FP --> COST1["$$\text{Cost Depends on Context}$$"] + FN --> COST2["$$\text{Cost Depends on Context}$$"] + + %% Examples + COST1 --> EX1["$$\text{Example: Spam Filter}$$
$$\text{Important Email Blocked}$$"] + COST2 --> EX2["$$\text{Example: Medical Test}$$
$$\text{Disease Missed}$$"] + + %% Emphasis + EX1 -.->|"$$\text{Type I Cost High}$$"| FP + EX2 -.->|"$$\text{Type II Cost High}$$"| FN + +``` + +* **In Cancer Detection:** A **Type II Error (FN)** is much worse because a sick patient goes untreated. +* **In Spam Filtering:** A **Type I Error (FP)** is worse because an important work email is hidden in the trash. + +## 3. Implementation with Scikit-Learn + +```python +from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay +import matplotlib.pyplot as plt + +# Actual values and Model predictions +y_true = [0, 1, 0, 1, 0, 1, 1, 0] +y_pred = [0, 1, 1, 1, 0, 0, 1, 0] + +# 1. Generate the matrix +cm = confusion_matrix(y_true, y_pred) + +# 2. Visualize it +disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=['Negative', 'Positive']) +disp.plot(cmap=plt.cm.Blues) +plt.show() + +``` + +## 4. Multi-Class Confusion Matrices + +The matrix isn't just for binary problems. If you are classifying "Cat," "Dog," and "Bird," your matrix will be 3x3. The diagonal line from top-left to bottom-right represents correct predictions. Any numbers off that diagonal show you which animals the model is confusing. + +```mermaid +graph TB + TITLE["$$\text{Multi-Class Confusion Matrix (3×3)}$$"] + + %% Axes + TITLE --> ACT["$$\text{Actual Class}$$"] + TITLE --> PRED["$$\text{Predicted Class}$$"] + + ACT --> CAT_A["$$\text{Cat}$$"] + ACT --> DOG_A["$$\text{Dog}$$"] + ACT --> BIRD_A["$$\text{Bird}$$"] + + PRED --> CAT_P["$$\text{Cat}$$"] + PRED --> DOG_P["$$\text{Dog}$$"] + PRED --> BIRD_P["$$\text{Bird}$$"] + + %% Diagonal (Correct Predictions) + CAT_A --> CAT_P["$$\text{Cat → Cat}$$
$$\text{Correct}$$"] + DOG_A --> DOG_P["$$\text{Dog → Dog}$$
$$\text{Correct}$$"] + BIRD_A --> BIRD_P["$$\text{Bird → Bird}$$
$$\text{Correct}$$"] + + %% Off-Diagonal (Confusions) + CAT_A --> DOG_P["$$\text{Cat → Dog}$$
$$\text{Confusion}$$"] + CAT_A --> BIRD_P["$$\text{Cat → Bird}$$
$$\text{Confusion}$$"] + + DOG_A --> CAT_P["$$\text{Dog → Cat}$$
$$\text{Confusion}$$"] + DOG_A --> BIRD_P["$$\text{Dog → Bird}$$
$$\text{Confusion}$$"] + + BIRD_A --> CAT_P["$$\text{Bird → Cat}$$
$$\text{Confusion}$$"] + BIRD_A --> DOG_P["$$\text{Bird → Dog}$$
$$\text{Confusion}$$"] + + %% Emphasis + CAT_P -.->|"$$\text{Diagonal}$$"| GOOD["$$\text{Correct Predictions}$$"] + DOG_P -.->|"$$\text{Diagonal}$$"| GOOD + BIRD_P -.->|"$$\text{Diagonal}$$"| GOOD + + DOG_P -.->|"$$\text{Off-Diagonal}$$"| BAD["$$\text{Model Confusion}$$"] + BIRD_P -.->|"$$\text{Off-Diagonal}$$"| BAD + +``` + +## 5. Summary: What can we calculate from here? + +The Confusion Matrix is the "mother" of all classification metrics. From these four numbers, we derive: + +* **Accuracy:** +* **Precision:** +* **Recall:** +* **F1-Score:** The balance between Precision and Recall. + +## References + +* **StatQuest:** [Confusion Matrices Explained](https://www.youtube.com/watch?v=Kdsp6soqA7o) +* **Scikit-Learn:** [Confusion Matrix API](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html) + +--- + +**Now that you can see where the model is making mistakes, let's learn how to turn those mistakes into a single score.** \ No newline at end of file diff --git a/docs/machine-learning/machine-learning-core/model-evaluation/metrics/f1-score.mdx b/docs/machine-learning/machine-learning-core/model-evaluation/metrics/f1-score.mdx index e69de29..7a780a1 100644 --- a/docs/machine-learning/machine-learning-core/model-evaluation/metrics/f1-score.mdx +++ b/docs/machine-learning/machine-learning-core/model-evaluation/metrics/f1-score.mdx @@ -0,0 +1,104 @@ +--- +title: "F1-Score: The Balanced Metric" +sidebar_label: F1-Score +description: "Mastering the harmonic mean of Precision and Recall to evaluate models on imbalanced datasets." +tags: [machine-learning, model-evaluation, metrics, f1-score, classification] +--- + +The **F1-Score** is a single metric that combines [Precision](./precision) and [Recall](./recall) into a single value. It is particularly useful when you have an imbalanced dataset and you need to find an optimal balance between "False Positives" and "False Negatives." + +## 1. The Mathematical Formula + +The F1-Score is the **harmonic mean** of Precision and Recall. Unlike a simple average, the harmonic mean punishes extreme values. If either Precision or Recall is very low, the F1-Score will also be low. + +$$ +F1 = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}} +$$ + + +### Why use the Harmonic Mean? + +If we used a standard arithmetic average, a model with 1.0 Precision and 0.0 Recall would have a "decent" score of 0.5. However, such a model is useless. The harmonic mean ensures that if one metric is 0, the total score is 0. + +## 2. When to Use the F1-Score + +F1-Score is the best choice when: + +1. **Imbalanced Classes:** You have a large number of "Negative" samples and few "Positive" ones (e.g., Fraud detection). +2. **Equal Importance:** You care equally about minimizing False Positives (Precision) and False Negatives (Recall). + +## 3. Visualizing the Balance + +Think of the F1-Score as a "balance scale." If you tilt too far toward catching everyone (Recall), your precision drops. If you tilt too far toward being perfectly accurate (Precision), you miss people. The F1-Score is highest when these two are in equilibrium. + +```mermaid +graph TB + SCALE["$$\text{F1-Score}$$
$$\text{Balance Scale}$$"] + + %% Precision Side + SCALE --> P["$$\text{Precision}$$"] + P --> P1["$$\text{Few False Positives}$$"] + P1 --> P2["$$\text{Strict Threshold}$$"] + P2 --> P3["$$\text{Misses True Positives}$$"] + P3 --> P4["$$\text{Low Recall}$$"] + + %% Recall Side + SCALE --> R["$$\text{Recall}$$"] + R --> R1["$$\text{Few False Negatives}$$"] + R1 --> R2["$$\text{Loose Threshold}$$"] + R2 --> R3["$$\text{Many False Positives}$$"] + R3 --> R4["$$\text{Low Precision}$$"] + + %% Balance Point + P4 -.->|"$$\text{Too Strict}$$"| UNBAL["$$\text{Unbalanced Model}$$"] + R4 -.->|"$$\text{Too Loose}$$"| UNBAL + + P --> BAL["$$\text{Equilibrium}$$"] + R --> BAL + + BAL --> F1["$$\text{F1} = 2 \cdot \frac{P \cdot R}{P + R}$$"] + F1 --> OPT["$$\text{Maximum F1-Score}$$"] + +``` + +## 4. Implementation with Scikit-Learn + +```python +from sklearn.metrics import f1_score + +# Actual target values +y_true = [0, 1, 1, 0, 1, 1, 0] + +# Model predictions +y_pred = [0, 1, 0, 0, 1, 1, 1] + +# Calculate F1-Score +score = f1_score(y_true, y_pred) + +print(f"F1-Score: {score:.2f}") +# Output: F1-Score: 0.75 + +``` + +## 5. Summary Table: Which Metric to Trust? + +| Scenario | Best Metric | Why? | +| --- | --- | --- | +| **Balanced Data** | **Accuracy** | Simple and representative. | +| **Spam Filter** | **Precision** | False Positives (real mail in spam) are very bad. | +| **Cancer Screen** | **Recall** | False Negatives (missing a sick patient) are fatal. | +| **Fraud Detection** | **F1-Score** | Need to catch thieves (Recall) without blocking everyone (Precision). | + +## 6. Beyond Binary: Macro vs. Weighted F1 + +If you have more than two classes (Multi-class classification), you'll see these options: + +* **Macro F1:** Calculates F1 for each class and takes the unweighted average. Treats all classes as equal. +* **Weighted F1:** Calculates F1 for each class but weights them by the number of samples in that class. + +## References + +* **Scikit-Learn:** [F1 Score Documentation](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.f1_score.html) +* **Towards Data Science:** [The F1 Score Paradox](https://towardsdatascience.com/the-f1-score-2236378a31). + +**The F1-Score gives us a snapshot at a single threshold. But how do we evaluate a model's performance across ALL possible thresholds?** \ No newline at end of file diff --git a/docs/machine-learning/machine-learning-core/model-evaluation/metrics/log-loss.mdx b/docs/machine-learning/machine-learning-core/model-evaluation/metrics/log-loss.mdx index e69de29..03742fa 100644 --- a/docs/machine-learning/machine-learning-core/model-evaluation/metrics/log-loss.mdx +++ b/docs/machine-learning/machine-learning-core/model-evaluation/metrics/log-loss.mdx @@ -0,0 +1,125 @@ +--- +title: "Log Loss (Logarithmic Loss): The Probability Penalty" +sidebar_label: Log Loss +description: "Understanding cross-entropy loss and why it is the gold standard for evaluating probability-based classifiers." +tags: [machine-learning, model-evaluation, metrics, log-loss, classification, probability] +--- + +**Log Loss**, also known as **Cross-Entropy Loss**, is a performance metric that evaluates a classification model based on its **predicted probabilities**. Unlike [Accuracy](./accuracy), which only looks at the final label, Log Loss punishes models that are "confidently wrong." + +:::note +**Prerequisites:** Familiarity with basic classification concepts like **predicted probabilities** and **binary labels** (0 and 1). If you're new to these concepts, consider reviewing the [Confusion Matrix](./confusion-matrix) documentation first. +::: + +## 1. The Core Intuition: The Penalty System + +Log Loss measures the "closeness" of a prediction probability to the actual binary label ($0$ or $1$). + +* If the actual label is **1** and the model predicts **0.99**, the Log Loss is very low. +* If the actual label is **1** and the model predicts **0.01**, the Log Loss is extremely high. + +**Crucially:** Log Loss penalizes wrong predictions exponentially. It is better to be "unsure" (0.5) than to be "confidently wrong" (0.01 when the answer is 1). + +## 2. The Mathematical Formula + +For a binary classification problem, the Log Loss is calculated as: + +$$ +\text{Log Loss} = -\frac{1}{N} \sum_{i=1}^{N} [y_i \log(p_i) + (1 - y_i) \log(1 - p_i)] +$$ + +**Where:** + +* **$N$:** Total number of samples. +* **$y_i$:** Actual label (0 or 1). +* **$p_i$:** Predicted probability of the sample belonging to class 1. +* **$\log$:** The natural logarithm (base $e$). + +**Breaking it down:** +* If the actual label $y_i$ is **1**, the formula simplifies to $-\log(p_i)$. The closer $p_i$ is to 1, the lower the loss. +* If the actual label $y_i$ is **0**, the formula simplifies to $-\\log(1 - p_i)$. The closer $p_i$ is to 0, the lower the loss. + + +## 3. Comparison with Accuracy + +Imagine two models predicting a single sample where the true label is **1**. + +| Model | Predicted Probability | Prediction (Threshold 0.5) | Accuracy | Log Loss | +| :--- | :--- | :--- | :--- | :--- | +| **Model A** | **0.95** | Correct | 100% | **Low** (Good) | +| **Model B** | **0.51** | Correct | 100% | **High** (Weak) | + +Even though both models have the same **Accuracy**, Log Loss tells us that **Model A** is superior because it is more certain about the correct answer. + +## 4. Implementation with Scikit-Learn + +To calculate Log Loss, you must use `predict_proba()` to get the raw probabilities. + +```python +from sklearn.metrics import log_loss + +# Actual labels +y_true = [1, 0, 1, 1] + +# Predicted probabilities for the '1' class +y_probs = [0.9, 0.1, 0.8, 0.4] + +# Calculate Log Loss +score = log_loss(y_true, y_probs) + +print(f"Log Loss: {score:.4f}") +# Output: Log Loss: 0.3522 + +``` + +## 5. Pros and Cons + +| Advantages | Disadvantages | +| --- | --- | +| **Probability-Focused:** Captures the nuances of model confidence. | **Non-Intuitive:** A value of "0.21" is harder to explain to a business client than "90% accuracy." | +| **Optimizable:** This is the loss function used to train models like Logistic Regression and Neural Networks. | **Sensitive to Outliers:** A single prediction of 0% probability for a class that turns out to be true will result in a Log Loss of **infinity**. | + +--- + +## 6. Key Takeaway: The "Sureness" Factor + +A "perfect" model has a Log Loss of 0. A baseline model that simply predicts a 50/50 chance for every sample will have a Log Loss of approximately 0.693 ($-\ln(0.5)$). If your model's Log Loss is higher than 0.693, it is performing worse than a random guess! + +```mermaid +graph TB + TITLE["$$\text{Log Loss: The Sureness Factor}$$"] + + TITLE --> SCALE["$$\text{Lower Log Loss Means Higher Confidence}$$"] + + %% Perfect Model + SCALE --> PERFECT["$$\text{Perfect Model}$$"] + PERFECT --> L0["$$\text{Log Loss} = 0$$"] + L0 --> C0["$$\text{Always Correct with Full Confidence}$$"] + + %% Good Model + SCALE --> GOOD["$$\text{Good Model}$$"] + GOOD --> LG["$$\text{Log Loss less than } 0.693$$"] + LG --> CG["$$\text{Mostly Correct and Well-Calibrated}$$"] + + %% Random Guess Baseline + SCALE --> RAND["$$\text{Random Guess Baseline}$$"] + RAND --> L05["$$-\ln(0.5) \approx 0.693$$"] + L05 --> C05["$$\text{Predicts 50/50 for Every Sample}$$"] + + %% Worse Than Random + SCALE --> WORSE["$$\text{Worse Than Random}$$"] + WORSE --> LW["$$\text{Log Loss greater than } 0.693$$"] + LW --> CW["$$\text{Confident but Frequently Wrong}$$"] + + LW -.->|"$$\text{Danger Zone}$$"| WARN["$$\text{Model is Misleading}$$"] + +``` + +## References + +* **Scikit-Learn:** [Log Loss Documentation](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.log_loss.html) +* **Machine Learning Mastery:** [A Gentle Introduction to Cross-Entropy](https://machinelearningmastery.com/cross-entropy-for-machine-learning/) + +--- + +**We have explored almost every way to evaluate a classifier. Now, let's switch gears and look at how we measure errors in numbers and values.** \ No newline at end of file diff --git a/docs/machine-learning/machine-learning-core/model-evaluation/metrics/precision.mdx b/docs/machine-learning/machine-learning-core/model-evaluation/metrics/precision.mdx index e69de29..17ed6aa 100644 --- a/docs/machine-learning/machine-learning-core/model-evaluation/metrics/precision.mdx +++ b/docs/machine-learning/machine-learning-core/model-evaluation/metrics/precision.mdx @@ -0,0 +1,102 @@ +--- +title: "Precision: The Quality Metric for Positive Predictions" +sidebar_label: Precision +description: "Understanding Precision, its mathematical foundation, and why it is vital for minimizing False Positives." +tags: [machine-learning, model-evaluation, metrics, classification, precision] +--- + +**Precision** (also known as Positive Predictive Value) measures the accuracy of the model's positive predictions. It answers the question: *"Of all the times the model predicted 'Positive', how many were actually 'Positive'?"* + +## 1. The Mathematical Formula + +Precision is calculated by taking the number of correctly predicted positive results and dividing it by the total number of positive predictions made by the model. + +$$ +\text{Precision} = \frac{TP}{TP + FP} +$$ + +Where: + +* **TP (True Positives):** Correctly predicted positive samples. +* **FP (False Positives):** The "False Alarms"—cases where the model predicted positive, but it was actually negative. + +## 2. When Precision is the Priority + +You should prioritize Precision when the **cost of a False Positive is high**. In other words, you want to be very sure when you cry "wolf." + +### Real-World Example: Spam Filtering + +* **Positive Class:** An email is Spam. +* **False Positive:** A legitimate email from your boss is marked as "Spam." +* **The Goal:** We want high Precision. It is better to let a few spam emails into the Inbox (low Recall) than to accidentally hide an important work email (low Precision). + +```mermaid +graph LR + MAIL["$$\text{Incoming Emails}$$"] + + MAIL --> LEGIT["$$\text{Legitimate Emails}$$"] + MAIL --> SPAM["$$\text{Spam Emails}$$"] + + %% Classifier Decisions + LEGIT --> FP["$$\text{❌ False Positive}$$
$$\text{Legit → Spam}$$"] + SPAM --> TP["$$\text{✅ True Positive}$$
$$\text{Spam → Spam}$$"] + + %% Inbox / Spam Folder + FP --> SPAMBOX["$$\text{Spam Folder}$$"] + TP --> SPAMBOX + + LEGIT --> INBOX["$$\text{Inbox}$$"] + SPAM --> FN["$$\text{False Negative}$$
$$\text{Spam → Inbox}$$"] + FN --> INBOX + + %% Precision Highlight + TP --> PREC["$$\text{Precision} = \frac{TP}{TP + FP}$$"] + FP --> PREC + + FP -.->|"$$\text{High Cost Error}$$"| ALERT["$$\text{Important Email Missed!}$$"] + +``` + +## 3. The Precision-Recall Trade-off + +There is usually a tug-of-war between Precision and Recall. + +* If you make your model extremely "picky" (only predicting positive when it is 99.9% certain), your **Precision will increase**, but you will miss many actual positive cases (**Recall will decrease**). +* Conversely, if your model is very "sensitive" and flags everything that looks remotely suspicious, your **Recall will increase**, but you will get many false alarms (**Precision will decrease**). + +## 4. Implementation with Scikit-Learn + +```python +from sklearn.metrics import precision_score + +# Actual target values (e.g., 1 = Spam, 0 = Inbox) +y_true = [0, 1, 0, 0, 1, 1, 0] + +# Model predictions +y_pred = [0, 0, 1, 0, 1, 1, 0] + +# Calculate Precision +# The 'pos_label' parameter specifies which class is considered "Positive" +score = precision_score(y_true, y_pred) + +print(f"Precision Score: {score:.2f}") +# Output: Precision Score: 0.67 +# (Out of 3 'Spam' predictions, only 2 were actually Spam) + +``` + +## 5. Pros and Cons + +| Advantages | Disadvantages | +| --- | --- | +| **Minimizes False Alarms:** Crucial for user trust (e.g., avoiding wrong medical diagnoses). | **Ignores Missed Cases:** Doesn't care about the positive cases the model missed completely. | +| **High Specificity:** Focuses purely on the quality of the positive class predictions. | **Can be Manipulated:** A model can have 100% precision by only making one single, very safe prediction. | + +## References + +* **Scikit-Learn Documentation:** [Precision-Recall-F1](https://scikit-learn.org/stable/modules/model_evaluation.html#precision-recall-f-measure-metrics) +* **StatQuest:** [Precision and Recall Clearly Explained](https://www.youtube.com/watch?v=Kdsp6soqA7o) + +--- + +**Precision tells us how "reliable" our positive predictions are. But what about the cases we missed entirely?** \ No newline at end of file diff --git a/docs/machine-learning/machine-learning-core/model-evaluation/metrics/recall.mdx b/docs/machine-learning/machine-learning-core/model-evaluation/metrics/recall.mdx index e69de29..be1b0e1 100644 --- a/docs/machine-learning/machine-learning-core/model-evaluation/metrics/recall.mdx +++ b/docs/machine-learning/machine-learning-core/model-evaluation/metrics/recall.mdx @@ -0,0 +1,110 @@ +--- +title: "Recall: The Sensitivity Metric" +sidebar_label: Recall +description: "Understanding Recall, its mathematical definition, and why it is critical for minimizing False Negatives." +tags: [machine-learning, model-evaluation, metrics, classification, recall] +--- + +**Recall**, also known as **Sensitivity** or **True Positive Rate (TPR)**, measures the model's ability to find all the positive samples in a dataset. It answers the question: *"Of all the actual positive cases that exist, how many did the model correctly identify?"* + +## 1. The Mathematical Formula + +Recall is calculated by dividing the number of correctly predicted positive results by the total number of actual positives (those we caught + those we missed). + +$$ +\text{Recall} = \frac{TP}{TP + FN} +$$ + +Where: + +* **TP (True Positives):** Correctly predicted positive samples. +* **FN (False Negatives):** The "Misses"—cases that were actually positive, but the model incorrectly labeled them as negative. + +## 2. When Recall is the Top Priority + +You should prioritize Recall when the **cost of a False Negative is extremely high**. In these scenarios, it is better to have a few "false alarms" than to miss a single positive case. + +### Real-World Example: Cancer Detection + +Cancer Detection + +* **Positive Class:** Patient has cancer. +* **False Negative:** The patient has cancer, but the model says they are "Healthy." +* **The Consequence:** The patient does not receive treatment, which could be fatal. +* **The Goal:** We want **100% Recall**. We would rather tell a healthy person they need more tests (False Positive) than tell a sick person they are fine (False Negative). + +```mermaid +graph LR + POP["$$\text{Patients}$$"] + + POP --> C["$$\text{Has Cancer (Positive)}$$"] + POP --> H["$$\text{Healthy (Negative)}$$"] + + %% Model Predictions + C --> FN["$$\text{❌ False Negative}$$
$$\text{Cancer → Healthy}$$"] + C --> TP["$$\text{✅ True Positive}$$
$$\text{Cancer → Cancer}$$"] + + H --> FP["$$\text{False Positive}$$
$$\text{Healthy → Cancer}$$"] + H --> TN["$$\text{True Negative}$$
$$\text{Healthy → Healthy}$$"] + + %% Consequences + FN --> RISK["$$\text{🚨 No Treatment Given}$$"] + RISK --> FATAL["$$\text{Potentially Fatal Outcome}$$"] + + FP --> SAFE["$$\text{Extra Tests / Monitoring}$$"] + SAFE --> OK["$$\text{Acceptable Cost}$$"] + + %% Recall Highlight + TP --> REC["$$\text{Recall} = \frac{TP}{TP + FN}$$"] + FN --> REC + + FN -.->|"$$\text{Most Dangerous Error}$$"| FATAL + +``` + +## 3. The Precision-Recall Inverse Relationship + +As you saw in the [Precision module](./precision), there is an inherent trade-off. + +* **To increase Recall:** You can make your model "less strict." If a bank flags *every* transaction as potentially fraudulent, it will have 100% Recall (it caught every thief), but its Precision will be terrible (it blocked every honest customer too). +* **To increase Precision:** You make the model "more strict," which inevitably leads to missing some positive cases, thereby lowering Recall. + +## 4. Implementation with Scikit-Learn + +```python +from sklearn.metrics import recall_score + +# Actual target values (1 = Sick, 0 = Healthy) +y_true = [1, 1, 1, 0, 1, 0, 1] + +# Model predictions +y_pred = [1, 0, 1, 0, 1, 0, 0] + +# Calculate Recall +score = recall_score(y_true, y_pred) + +print(f"Recall Score: {score:.2f}") +# Output: Recall Score: 0.60 +# (We found 3 out of 5 sick people; we missed 2) + +``` + +## 5. Summary Table: Precision vs. Recall + +| Metric | Focus | Goal | Failure Mode | +| --- | --- | --- | --- | +| **Precision** | Quality | "Don't cry wolf." | High Precision misses many real cases. | +| **Recall** | Quantity | "Leave no one behind." | High Recall creates many false alarms. | + +## 6. How to Balance Both? + +If you need a single number that accounts for both the "False Alarms" of Precision and the "Misses" of Recall, you need the **F1-Score**. + +## References + +* **Google Machine Learning Crash Course:** [Recall Metric](https://developers.google.com/machine-learning/crash-course/classification/precision-and-recall) +* **Wikipedia:** [Sensitivity and Specificity](https://en.wikipedia.org/wiki/Sensitivity_and_specificity) + +--- + +**Is your model struggling to choose between Precision and Recall? Let's look at the "middle ground" metric.** \ No newline at end of file diff --git a/docs/machine-learning/machine-learning-core/model-evaluation/metrics/roc-auc.mdx b/docs/machine-learning/machine-learning-core/model-evaluation/metrics/roc-auc.mdx index e69de29..007b1e7 100644 --- a/docs/machine-learning/machine-learning-core/model-evaluation/metrics/roc-auc.mdx +++ b/docs/machine-learning/machine-learning-core/model-evaluation/metrics/roc-auc.mdx @@ -0,0 +1,123 @@ +--- +title: ROC Curve and AUC +sidebar_label: ROC & AUC +description: "Evaluating classifier performance across all thresholds using the Receiver Operating Characteristic and Area Under the Curve." +tags: [machine-learning, model-evaluation, metrics, roc, auc, classification] +--- + +In classification tasks, especially binary classification, it's crucial to evaluate how well a model distinguishes between the positive and negative classes. The **ROC Curve (Receiver Operating Characteristic Curve)** and **AUC (Area Under the Curve)** are powerful tools for this purpose. + +> While metrics like **Accuracy** and **F1-Score** evaluate a model based on a single "cut-off" or threshold (usually 0.5), **ROC** and **AUC** help us evaluate how well the model separates the two classes across **all possible thresholds**. + +:::note +**Prerequisites:** Familiarity with basic classification metrics like **True Positives (TP)**, **False Positives (FP)**, **True Negatives (TN)**, and **False Negatives (FN)**. If you're new to these concepts, consider reviewing the [Confusion Matrix](./confusion-matrix) documentation first. +::: + +## 1. Defining the Terms + +To understand the ROC curve, we need to look at two specific rates: + +1. **True Positive Rate (TPR) / Recall:** $TPR = \frac{TP}{TP + FN}$ + (How many of the actual positives did we catch?) +2. **False Positive Rate (FPR):** $FPR = \frac{FP}{FP + TN}$ + (How many of the actual negatives did we incorrectly flag as positive?) + +## 2. The ROC Curve (Receiver Operating Characteristic) + +The ROC curve is a plot of **TPR (Y-axis)** against **FPR (X-axis)**. + +* **Each point** on the curve represents a TPR/FPR pair corresponding to a particular decision threshold. +* **A "Perfect" Classifier** would have a curve that goes straight up the Y-axis and then across (covering the top-left corner). +* **A Random Classifier** (like flipping a coin) is represented by a 45-degree diagonal line. + +## 3. AUC (Area Under the Curve) + +The **AUC** is the literal area under the ROC curve. It provides an aggregate measure of performance across all possible classification thresholds. + +* **AUC = 1.0:** A perfect model (100% correct predictions). +* **AUC = 0.5:** A useless model (no better than random guessing). +* **AUC = 0.0:** A model that is perfectly wrong (it predicts the exact opposite of the truth). + +**Interpretation:** AUC can be thought of as the probability that the model will rank a randomly chosen positive instance higher than a randomly chosen negative one. + +## 4. Why use ROC-AUC? + +1. **Scale-Invariant:** It measures how well predictions are ranked, rather than their absolute values. +2. **Threshold-Invariant:** It evaluates the model's performance without having to choose a specific threshold. This is great if you haven't decided yet how "picky" the model should be. +3. **Balanced Evaluation:** It is highly effective for comparing different models against each other on the same dataset. + +## 5. Implementation with Scikit-Learn + +To calculate AUC, you usually need the **prediction probabilities** rather than the hard class labels. + +```python +from sklearn.metrics import roc_curve, roc_auc_score +import matplotlib.pyplot as plt + +# 1. Get probability scores from the model +# (Assume model is already trained) +y_probs = model.predict_proba(X_test)[:, 1] + +# 2. Calculate AUC +auc_value = roc_auc_score(y_test, y_probs) +print(f"AUC Score: {auc_value:.4f}") + +# 3. Generate the curve points +fpr, tpr, thresholds = roc_curve(y_test, y_probs) + +# 4. Plotting +plt.plot(fpr, tpr, label=f'AUC = {auc_value:.2f}') +plt.plot([0, 1], [0, 1], 'k--') # Diagonal random line +plt.xlabel('False Positive Rate') +plt.ylabel('True Positive Rate') +plt.title('ROC Curve') +plt.legend() +plt.show() + +``` + +## 6. The Logic of Overlap + +The higher the AUC, the less the "Positive" and "Negative" probability distributions overlap. When the overlap is zero, the model can perfectly distinguish between the two. + +```mermaid +graph TB + TITLE["$$\text{ROC–AUC: Logic of Overlap}$$"] + + %% Distributions + TITLE --> NEG["$$\text{Negative Class}$$
$$P(\hat{y}\mid y=0)$$"] + TITLE --> POS["$$\text{Positive Class}$$
$$P(\hat{y}\mid y=1)$$"] + + %% High Overlap + NEG --> HO["$$\text{High Overlap}$$"] + POS --> HO + HO --> AUC1["$$\text{AUC} \approx 0.5$$"] + AUC1 --> R1["$$\text{Random Guessing}$$"] + + %% Medium Overlap + NEG --> MO["$$\text{Partial Overlap}$$"] + POS --> MO + MO --> AUC2["$$0.7 \le \text{AUC} \le 0.85$$"] + AUC2 --> R2["$$\text{Useful but Imperfect Separation}$$"] + + %% Zero Overlap + NEG --> ZO["$$\text{Zero Overlap}$$"] + POS --> ZO + ZO --> AUC3["$$\text{AUC} = 1.0$$"] + AUC3 --> R3["$$\text{Perfect Classifier}$$"] + + %% Threshold Intuition + R1 -.->|"$$\text{Any Threshold Fails}$$"| TH["$$\text{Decision Threshold}$$"] + R2 -.->|"$$\text{Some Errors}$$"| TH + R3 -.->|"$$\text{Perfect Split}$$"| TH + +``` + +## References + +* **Google Machine Learning Crash Course:** [ROC Curve and AUC](https://developers.google.com/machine-learning/crash-course/classification/roc-and-auc) +* **StatQuest:** [ROC and AUC Clearly Explained](https://www.youtube.com/watch?v=4jRBRDbJemM) + +--- + +**We have mastered classification metrics. But how do we evaluate a model that predicts continuous numbers, like house prices or stock trends?** \ No newline at end of file diff --git a/docs/machine-learning/machine-learning-core/model-evaluation/why-evaluation-matters.mdx b/docs/machine-learning/machine-learning-core/model-evaluation/why-evaluation-matters.mdx index e69de29..10f3e2f 100644 --- a/docs/machine-learning/machine-learning-core/model-evaluation/why-evaluation-matters.mdx +++ b/docs/machine-learning/machine-learning-core/model-evaluation/why-evaluation-matters.mdx @@ -0,0 +1,78 @@ +--- +title: Why Model Evaluation Matters +sidebar_label: Why Evaluation Matters +description: "Understanding the difference between training performance and real-world reliability." +tags: [machine-learning, model-evaluation, metrics, generalization] +--- + +Building a machine learning model is only half the battle. The most dangerous mistake a Data Scientist can make is assuming that a model with **99% accuracy** on the training data will perform just as well in the real world. + +**Model Evaluation** is the process of using different metrics and validation strategies to understand how well your model generalizes to data it has never seen before. + +## 1. The Trap of "Memorization" (Overfitting) + +If you give a student the exact same questions from their textbook on their final exam, they might get a 100% just by memorizing the answers. However, if you give them a new problem and they fail, they haven't actually learned the subject. + +In Machine Learning, this is called **Overfitting**. + +* **Training Error:** How well the model performs on the data it studied. +* **Generalization Error:** How well the model performs on new, unseen data. + +**The Goal:** We want to minimize the Generalization Error, not just the Training Error. + +## 2. The Bias-Variance Tradeoff + +Every model's error can be broken down into two main components: + +### Bias (Underfitting) +The error from erroneous assumptions in the learning algorithm. High bias can cause an algorithm to miss the relevant relations between features and target outputs. +* *Analogy:* Trying to fit a straight line through a curved set of points. + +### Variance (Overfitting) + +The error from sensitivity to small fluctuations in the training set. High variance can cause an algorithm to model the random noise in the training data. +* *Analogy:* Following every single data point so closely that the model becomes "wiggly." + +```mermaid +graph LR + A[Low Bias / High Variance] --- B((Optimal Balance)) + B --- C[High Bias / Low Variance] + + style B fill:#e8f5e9,stroke:#2e7d32,stroke-width:4px,color:#333 + +``` + +## 3. The Evaluation Workflow + +To evaluate a model properly, we never use the same data for training and testing. We typically split our dataset into three parts: + +| Split | Purpose | +| --- | --- | +| **Training Set** | Used to teach the model (The "Textbook"). | +| **Validation Set** | Used to tune hyperparameters and pick the best model version. | +| **Test Set** | The "Final Exam." Used only once at the very end to see real-world performance. | + +## 4. Why Accuracy Isn't Enough + +Imagine a model designed to detect a very rare disease that only affects 1 in 1,000 people. +If the model simply predicts **"Healthy"** for everyone, it will be **99.9% accurate**. + +However, it is a **useless model** because it failed to find the 1 person who was actually sick. This is why we need more advanced metrics like: + +* **Precision & Recall** (For Classification) +* **Mean Absolute Error** (For Regression) +* **F1-Score** (For Imbalanced Data) + +## 5. The Evaluation Roadmap + +In the upcoming chapters, we will dive deep into specific evaluation tools: + +1. **Confusion Matrices:** Seeing exactly where your classifier is getting confused. +2. **ROC & AUC:** Understanding the trade-off between sensitivity and specificity. +3. **Cross-Validation:** Making the most of limited data. +4. **Regression Metrics:** Measuring the "distance" between reality and prediction. + +## References + +* **Google Machine Learning Crash Course:** [Generalization](https://developers.google.com/machine-learning/crash-course/generalization/video-lecture) +* **StatQuest:** [Bias and Variance](https://www.youtube.com/watch?v=EuBBz3bI-aA) \ No newline at end of file diff --git a/static/img/tutorials/ml/cancer-detection.jpg b/static/img/tutorials/ml/cancer-detection.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6f4cba38388c3b2bd9bb192237bc20bc7c5860f4 GIT binary patch literal 101138 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%0DV|LX6oz={g65(9(;87}~R2QLuf+`D@nVy@ie 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

)F_-+*!I9Q(j}b@NT*Z}4PvOU z=mN_4DGEDI>pYcl>D;6DyUZs}ts&{=O%q?Cf5--8q_gw%FqSKmeC5+bt_wTm(pHGO zylXa&8TGZ|Yh&&40_GmdxVQ?O8?I%pF2IA_YaptUy3CjXfQKC#YnolAs8#xxcK>$% z9w33-dk}igF-SNCz?qHq28;%fAML>(>)$Xw{Ph4>=4Tq3ELz@IW(q}pm%Gp!#&KUs z@>G6#qMUM3ysWkYY30CiKj7F^2rL(gI~oHXg}GF@h^9gP{5$1!+amcy5!1>_ej2|A z+D?UzOdkPp?7l{?D_H2!+lDaibseU;4f;1hC_j>&mP%fRICQa7Tp%hA^Qoaj?<{7h z3TjBC_H@serl{+*@&M|ZywNAvDWRQ|@irh5)z8a?$Y~ZQw9Pz;v=3i23qxV>(8Xm5 z(}f@6W`8rUn+2MkalcL99`#~Z@mg?{F4L!1ZH=kN$soQrmEOljdDm-C#c5AOQzG_u zZbrRxwe6#9E648v3c#YJI<`+tryPq2A7{DY>-Il&ooIuF%$nPvBi;&pc&19d^)YUf zD|~yV)jZsdMiQ3yZS$rGJoMnk?r9BywwLWyS+r(-k#%ajW#_tK&eKU)0|rt){{Y)L zKZbL2z!212B@T5MtA{3VYoXFDXt>@oZH$eP*(>%xOxRuFp5ZQ}RjPTSJ6ZzZmyCu+ zxR%uSwsXt&IAza^N;LngS0`l%oEDXTGdTz%2cw%aMC#z!;OW!d;ebA5WF3k^>F3S} z>@U6kZ&6jAX93@pqae)@$Ay*Bsfb`!3dTZ9t* z$g3by=Y;0iG>9jW61OI%If{6`_*M_#pbm@O!ao2#hqW)qifPC4gWq(#wI?ovPP==& zwRIZD_-#q=6#&f#M|@&=fuZx#sijOZLP7UK;5}Rn+{F*c%zdY^sKyz4_U;|%Cvc&e zsD;u;ug;!;~>SM0ZdcEP8PDW z#vW1>Q{IHGWPk+mKbCUSD|Udkg1@c(r*1XRRrr4){Aen_*;N=)bxa`vb>DBv0LUdM fG+)g`EG0k409+ux0JeXcH~