# SMOTE

### 1. SMOTE là gì?

**Synthetic Minority Over-sampling Technique (SMOTE)** là một kỹ thuật **tăng cường dữ liệu (oversampling)** dành cho bài toán **mất cân bằng lớp (imbalanced classification)**.

Ví dụ:

* Dataset dự đoán bệnh tiểu đường
* 90% là “không bệnh”
* 10% là “có bệnh”

Nếu không xử lý, model sẽ thiên về lớp đa số và có thể đạt accuracy cao nhưng **bỏ sót lớp thiểu số** (đây mới là lớp quan trọng).

***

### 2. SMOTE hoạt động như thế nào?

Khác với việc **duplicate dữ liệu minority**, SMOTE tạo **mẫu tổng hợp (synthetic samples)** bằng cách:

1. Chọn một điểm thuộc lớp thiểu số
2. Tìm k-nearest neighbors (cùng lớp thiểu số)
3. Tạo điểm mới nằm **trên đoạn thẳng nối giữa 2 điểm**

Công thức:

xnew=xi+λ(xnn−xi)x\_{new} = x\_i + \lambda (x\_{nn} - x\_i)xnew​=xi​+λ(xnn​−xi​)

Trong đó:

* xix\_ixi​: điểm minority ban đầu
* xnnx\_{nn}xnn​: hàng xóm gần nhất
* λ∈(0,1)\lambda \in (0,1)λ∈(0,1): số ngẫu nhiên

→ Điểm mới nằm **giữa hai điểm thật**, không phải bản sao.

***

### 3. Tại sao dùng SMOTE?

SMOTE giúp:

#### 1️⃣ Cân bằng dữ liệu

Giảm bias của model về lớp majority.

#### 2️⃣ Cải thiện Recall / F1

Đặc biệt quan trọng trong:

* Fraud detection
* Medical diagnosis
* Malware detection

#### 3️⃣ Giảm overfitting so với random oversampling

Vì không chỉ copy dữ liệu.

***

### 4. Ví dụ trực quan

Dataset ban đầu:

```
Majority: 900 samples
Minority: 100 samples
```

Sau SMOTE:

```
Majority: 900
Minority: 900 (synthetic + original)
```

→ Dataset cân bằng.

***

### 5. Hạn chế của SMOTE

⚠️ Có thể tạo mẫu ở vùng **overlap giữa 2 lớp**\
⚠️ Không phù hợp với dữ liệu categorical thuần túy\
⚠️ Có thể tăng nhiễu nếu minority quá rải rác

***

## 6. Các phương pháp tương tự SMOTE

***

### 🔹 1. Random Oversampling

Đơn giản nhất:

* Chỉ duplicate minority

Ưu điểm: đơn giản\
Nhược điểm: dễ overfit

***

### 🔹 2. Random Undersampling

Giảm majority class xuống

Ưu điểm: nhanh\
Nhược điểm: mất thông tin

***

### 🔹 3. Borderline-SMOTE

**Borderline-SMOTE**

Chỉ tạo mẫu ở vùng **biên quyết định (decision boundary)**\
→ Tập trung vào vùng khó phân loại

***

### 🔹 4. ADASYN

**Adaptive Synthetic Sampling**

Cải tiến của SMOTE:

* Tạo nhiều mẫu hơn ở vùng khó học
* Ít mẫu hơn ở vùng dễ

Adaptive theo độ khó.

***

### 🔹 5. SMOTE-ENN

**SMOTE-ENN**

Kết hợp:

* SMOTE (oversample)
* ENN (Edited Nearest Neighbor → xóa nhiễu)

Giúp sạch dữ liệu hơn.

***

### 🔹 6. SMOTE-Tomek

**SMOTE-Tomek**

Sau khi oversample bằng SMOTE,\
→ loại bỏ các cặp Tomek links (các điểm quá gần nhau giữa 2 lớp)

***

### 🔹 7. GAN-based Oversampling

Sử dụng:

* **Generative Adversarial Network**

Tạo dữ liệu synthetic bằng deep learning\
Mạnh nhưng phức tạp.

***

## 7. Khi nào nên dùng SMOTE?

Phù hợp khi:

* Dataset nhỏ đến trung bình
* Dữ liệu numeric
* Minority class quan trọng
* Muốn cải thiện recall

***

## 8. Với hướng nghiên cứu (ML + diabetes + fairness)

SMOTE có thể dùng trong:

* Dataset Kaggle Diabetes
* BRFSS 2021
* Healthcare prediction

Nhưng cần lưu ý:

📌 Chỉ apply SMOTE trên **training set**\
📌 Không apply trên test set\
📌 Đánh giá bằng:

* F1
* ROC-AUC
* PR-AUC
* Fairness metrics


---

# 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/tham-khao/glossary/s/smote.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.
