# 3️⃣ Đánh giá mô hình (Evaluation cơ bản)

### 1. Vì sao cần đánh giá mô hình?

Một mô hình:

* Có thể **fit rất tốt dữ liệu huấn luyện**
* Nhưng **dự đoán kém** trên dữ liệu mới

👉 Nếu không đánh giá đúng cách:

* Ta **tự lừa mình**
* Tưởng mô hình tốt nhưng thực tế không dùng được

***

### 2. Chia dữ liệu: Train / Validation / Test

Cách chia cơ bản nhất:

```
Dữ liệu
 ├─ Train (≈ 70%)
 ├─ Validation (≈ 15%)
 └─ Test (≈ 15%)
```

#### Ý nghĩa từng phần:

* **Train**: mô hình học (update weight)
* **Validation**: theo dõi trong lúc học
* **Test**: đánh giá cuối cùng (chỉ dùng 1 lần)

👉 **Không dùng test để chỉnh mô hình**

***

### 3. Loss vs Accuracy (nhắc lại trong thực hành)

#### 🔹 Loss

* Dùng để **huấn luyện**
* Giảm dần theo epoch là dấu hiệu tốt

#### 🔹 Accuracy

* Dùng để **đánh giá**
* Dễ hiểu với người dùng

👉 Trong code:

* **Optimize bằng loss**
* **Báo cáo bằng accuracy**

***

### 4. Overfitting là gì? (hiểu trực giác)

**Overfitting** xảy ra khi:

* Loss (train) ↓ rất thấp
* Nhưng:
  * Loss (validation/test) **không giảm**
  * Hoặc tăng lên

Trực giác:

> *Mô hình học quá kỹ dữ liệu cũ → nhớ bài → không hiểu bản chất*

***

### 5. Dấu hiệu Overfitting (nhìn là biết)

#### Trường hợp thường gặp:

* Train loss: ↓↓↓
* Validation loss: ↓ rồi ↑

👉 Đây là dấu hiệu **kinh điển** của overfitting.

***

### 6. Underfitting (nhắc ngắn)

**Underfitting**:

* Train loss cao
* Validation loss cũng cao

Nguyên nhân:

* Mô hình quá đơn giản
* Chưa học được gì đáng kể

👉 Overfitting = học quá nhiều\
👉 Underfitting = học chưa đủ

***

### 7. Cách xử lý Overfitting (ở mức cơ bản)

⛔ Chưa đi vào kỹ thuật nâng cao\
Chỉ cần nhớ **các hướng chính**:

* Dùng **ít epoch hơn**
* Dùng **mô hình đơn giản hơn**
* Có **validation set**
* Dữ liệu nhiều hơn (nếu có)

👉 Những kỹ thuật như:

* Regularization
* Dropout
* Early stopping\
  → sẽ nói **sau**, không phải ở đây

***

### 8. Ví dụ đánh giá rất đơn giản (ý tưởng)

```python
with torch.no_grad():
    y_pred = model(X_val)
    predicted = (y_pred > 0.5).float()
    accuracy = (predicted == y_val).float().mean()
```

👉 Không cần tối ưu code\
👉 Chỉ cần hiểu:

* **Đánh giá ≠ huấn luyện**

***

### 9. Vì sao 6.3 cực kỳ quan trọng cho Case Study?

Trong **case Diabetes** sắp tới:

* Nếu bạn không có:
  * Validation
  * Test
  * So sánh loss / accuracy

👉 Kết quả **không có giá trị học thuật**

6.3 chính là:

* Nền để:
  * So sánh ML vs DL
  * Gắn XAI
  * Viết Discussion

***

### 10. Tóm tắt 6.3 (để chốt Group 6)

> **Huấn luyện tốt chưa đủ – mô hình phải tổng quát tốt**

Câu nhớ nhanh:

```
Train để học.
Validation để kiểm soát.
Test để tin.
```

***

### ✅ KẾT THÚC GROUP 6 – HANDS-ON

Sau Group 6, bạn đã:

* Đọc được code PyTorch
* Xây được mô hình DL đơn giản
* Biết đánh giá & phát hiện overfitting

👉 **Đã đủ điều kiện bước sang Case Study**


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://deeplearningcoban.gitbook.io/deeplearningcoban.com/thuc-hanh-deep-learning-co-ban-hands-on/danh-gia-mo-hinh-evaluation-co-ban.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
