Add cheat-sheet

This commit is contained in:
2025-12-22 05:09:02 +01:00
parent 8c58623a62
commit 87cbfd06ef

648
cheat-sheet Normal file
View File

@@ -0,0 +1,648 @@
# 📋 CHEAT SHEET - Công Thức Khai Phá Dữ Liệu
## 📊 PHẦN 1: TIỀN XỬ LÝ DỮ LIỆU
### 1.1 Thống Kê Mô Tả
#### **Mean (Trung bình)**
```
x̄ = Σxi / n
```
**Ví dụ:** [4, 5, 6] → x̄ = 15/3 = **5**
#### **Median (Trung vị)**
```
Sắp xếp → Lấy giá trị giữa (hoặc trung bình 2 giá trị giữa)
```
**Ví dụ:** [4, 5, 6] → Median = **5**
**Ví dụ:** [4, 5, 6, 7] → Median = (5+6)/2 = **5.5**
#### **Mode (Yếu vị)**
```
Giá trị xuất hiện nhiều nhất
```
**Ví dụ:** [4, 5, 5, 6] → Mode = **5**
---
### 1.2 Boxplot
#### **Quartiles (Tứ phân vị)**
```
Q1 = Trung vị của nửa dưới
Q2 = Median
Q3 = Trung vị của nửa trên
IQR = Q3 - Q1
```
**Ví dụ:** [1, 2, 3, 4, 5, 6, 7, 8, 9]
- Q1 = Median([1,2,3,4]) = (2+3)/2 = **2.5**
- Q2 = **5**
- Q3 = Median([6,7,8,9]) = (7+8)/2 = **7.5**
- IQR = 7.5 - 2.5 = **5**
#### **Outliers (Giá trị ngoại lai)**
```
Lower fence = Q1 - 1.5 × IQR
Upper fence = Q3 + 1.5 × IQR
Outlier nếu: x < Lower fence hoặc x > Upper fence
```
---
### 1.3 Chuẩn Hóa (Normalization)
#### **Decimal Scaling**
```
x' = x / 10^j
(Chọn j sao cho Max(|x'|) < 1)
```
**Ví dụ:** [45, 67, 91] → j=2
91 → 91/100 = **0.91**
---
#### **Min-Max Normalization**
```
x' = (x - min) / (max - min) × (new_max - new_min) + new_min
```
**Trường hợp đặc biệt [0, 1]:**
```
x' = (x - min) / (max - min)
```
**Ví dụ:** [4, 7, 10] về [0, 1]
- Min=4, Max=10, Range=6
- 7 → (7-4)/6 = **0.5**
**Ví dụ:** [4, 7, 10] về [-1, 1]
```
x' = (x - min) / (max - min) × 2 - 1
7 → (7-4)/6 × 2 - 1 = 0.5 × 2 - 1 = 0
```
---
#### **Z-Score Normalization**
```
x' = (x - μ) / σ
```
**Computational Formula cho σ:**
```
σ = √[Σxi²/n - x̄²]
```
**Ví dụ:** [4, 7, 10]
- x̄ = 21/3 = 7
- Σxi² = 16 + 49 + 100 = 165
- σ = √[165/3 - 7²] = √[55 - 49] = √6 = 2.45
- 7 → (7-7)/2.45 = **0**
---
#### **Modified Z-Score (Robust, dùng MAD thay vì σ)**
Phương pháp này **kháng nhiễu tốt hơn** khi có outliers.
```
x' = 0.6745 × (x - median) / MAD
Trong đó:
MAD = median(|xi - median|)
```
**Quy trình tính:**
**Bước 1:** Tính Median của dữ liệu
```
Sắp xếp → Lấy giá trị giữa
```
**Bước 2:** Tính độ lệch tuyệt đối
```
|xi - median| cho tất cả các điểm
```
**Bước 3:** Tính MAD
```
MAD = Median của các độ lệch tuyệt đối
```
**Bước 4:** Tính Modified Z-Score
```
x' = 0.6745 × (x - median) / MAD
```
**Ví dụ:** [1, 2, 3, 4, 100] (có outlier)
**Bước 1:** Median = 3
**Bước 2:** Độ lệch tuyệt đối
```
|1-3| = 2
|2-3| = 1
|3-3| = 0
|4-3| = 1
|100-3| = 97
→ [2, 1, 0, 1, 97]
```
**Bước 3:** MAD = Median([2, 1, 0, 1, 97])
```
Sắp xếp: [0, 1, 1, 2, 97]
MAD = 1
```
**Bước 4:** Tính Modified Z-Score
```
x=1: 0.6745 × (1-3)/1 = 0.6745 × (-2) = -1.349
x=2: 0.6745 × (2-3)/1 = 0.6745 × (-1) = -0.6745
x=3: 0.6745 × (3-3)/1 = 0
x=4: 0.6745 × (4-3)/1 = 0.6745 × 1 = 0.6745
x=100: 0.6745 × (100-3)/1 = 0.6745 × 97 = 65.43
```
**So sánh Z-Score thường:**
```
x̄ = (1+2+3+4+100)/5 = 22
σ = 43.36
x=100: (100-22)/43.36 = 1.8 ← Bị ảnh hưởng nặng bởi outlier!
```
**Ưu điểm Modified Z-Score:**
- ✅ Không bị ảnh hưởng bởi outliers
- ✅ Dùng Median thay vì Mean
- ✅ Dùng MAD thay vì σ
- ✅ Phát hiện outliers tốt hơn (thường dùng ngưỡng |z'| > 3.5)
---
### 1.4 Làm Trơn (Binning)
#### **Equal-Width Binning**
```
Bin width = (Max - Min) / số bins
```
**Interval Notation:**
```
Bin 1: [min, min+width)
Bin 2: [min+width, min+2×width)
...
Bin cuối: [..., max]
```
**Ví dụ:** [1,2,3,4,5,6,7,8,9] → 3 bins
- Width = (9-1)/3 = 2.67
- Bin 1: [1, 3.67) → 1,2,3
- Bin 2: [3.67, 6.33) → 4,5,6
- Bin 3: [6.33, 9] → 7,8,9
---
#### **Smoothing Methods**
**1. Bin Means**
```
Thay mỗi giá trị = Trung bình của bin
```
**Ví dụ:** Bin [1,2,3] → Mean = 2 → [2,2,2]
**2. Bin Medians**
```
Thay mỗi giá trị = Trung vị của bin
```
**Ví dụ:** Bin [1,2,3] → Median = 2 → [2,2,2]
**3. Bin Boundaries**
```
Thay mỗi giá trị = Min hoặc Max gần nhất
```
**Ví dụ:** Bin [1,2,3] → [1,1,3]
---
### 1.5 Correlation (Tương Quan)
#### **Phương pháp 1: Definitional**
```
r = Σ[(xi - x̄)(yi - ȳ)] / √[Σ(xi - x̄)² × Σ(yi - ȳ)²]
```
#### **Phương pháp 2: Computational (Khuyến nghị)**
```
Cov(X,Y) = Σ(xi·yi)/n - x̄·ȳ
σx = √[Σxi²/n - x̄²]
σy = √[Σyi²/n - ȳ²]
r = Cov(X,Y) / (σx × σy)
```
**Ví dụ:** X=[1,2,3], Y=[2,4,6]
```
Σxi = 6, Σyi = 12
Σxi² = 14, Σyi² = 56, Σ(xi·yi) = 28
x̄ = 2, ȳ = 4
Cov(X,Y) = 28/3 - 2×4 = 9.33 - 8 = 1.33
σx = √[14/3 - 4] = √[4.67 - 4] = 0.82
σy = √[56/3 - 16] = √[18.67 - 16] = 1.63
r = 1.33/(0.82 × 1.63) = 1.0
```
**Giải thích r:**
- r = 1: Tương quan dương hoàn hảo
- r = -1: Tương quan âm hoàn hảo
- r = 0: Không tương quan
- |r| > 0.7: Tương quan mạnh
- 0.3 < |r| < 0.7: Tương quan trung bình
- |r| < 0.3: Tương quan yếu
---
## 🔍 PHẦN 2: THUẬT TOÁN
### 2.1 Apriori Algorithm
#### **Support (Độ hỗ trợ)**
```
Support(X) = Số giao dịch chứa X / Tổng số giao dịch
```
**Ví dụ:**
- 10 giao dịch, {A,B} xuất hiện 3 lần
- Support({A,B}) = 3/10 = **30%**
---
#### **Confidence (Độ tin cậy)**
```
Confidence(X → Y) = Support(X Y) / Support(X)
```
**Ví dụ:**
- Support({A,B}) = 30%
- Support({A}) = 50%
- Confidence(A → B) = 30%/50% = **60%**
---
#### **Lift**
```
Lift(X → Y) = Confidence(X → Y) / Support(Y)
```
**Ví dụ:**
- Confidence(A → B) = 60%
- Support(B) = 40%
- Lift(A → B) = 60%/40% = **1.5**
**Giải thích Lift:**
- Lift > 1: X và Y có quan hệ dương
- Lift = 1: X và Y độc lập
- Lift < 1: X và Y có quan hệ âm
---
#### **Quy trình Apriori**
**Bước 1:** Tìm L₁ (1-itemsets thường xuyên)
```
Đếm từng item → Lọc theo min_support
```
**Bước 2:** Tìm L₂ (2-itemsets thường xuyên)
```
Kết hợp các items từ L₁ → Đếm → Lọc theo min_support
```
**Bước 3:** Lặp lại cho L₃, L₄, ... cho đến khi không còn itemsets nào
**Bước 4:** Sinh luật kết hợp từ frequent itemsets
```
Với mỗi itemset thường xuyên → Sinh tất cả các luật → Lọc theo min_confidence
```
---
### 2.2 ID3 Algorithm (Decision Tree)
#### **Entropy (Độ hỗn loạn)**
```
Entropy(S) = -Σ pi × log₂(pi)
```
**Ví dụ:** S có 9 Yes, 5 No (tổng 14)
```
p_yes = 9/14 = 0.643
p_no = 5/14 = 0.357
Entropy(S) = -(0.643 × log₂(0.643) + 0.357 × log₂(0.357))
= -(0.643 × (-0.637) + 0.357 × (-1.485))
= -(-0.410 - 0.530)
= 0.940
```
---
#### **Information Gain (Lợi ích thông tin)**
```
Gain(S, A) = Entropy(S) - Σ (|Sv|/|S|) × Entropy(Sv)
```
**Ví dụ:** Attribute "Weather" có 3 giá trị (Sunny=5, Rain=4, Cloudy=5)
```
Entropy(S) = 0.940
Sunny: 2 Yes, 3 No → Entropy = 0.971
Rain: 4 Yes, 0 No → Entropy = 0
Cloudy: 3 Yes, 2 No → Entropy = 0.971
Gain = 0.940 - [(5/14)×0.971 + (4/14)×0 + (5/14)×0.971]
= 0.940 - [0.347 + 0 + 0.347]
= 0.940 - 0.694
= 0.246
```
**Chọn attribute có Gain cao nhất làm root node**
---
#### **Quy trình ID3**
**Bước 1:** Tính Entropy(S) của tập dữ liệu
**Bước 2:** Tính Gain cho mỗi attribute
**Bước 3:** Chọn attribute có Gain cao nhất → Root node
**Bước 4:** Chia dữ liệu theo giá trị của attribute đã chọn
**Bước 5:** Lặp lại cho mỗi nhánh cho đến khi:
- Tất cả examples trong node có cùng class → Leaf node
- Không còn attribute nào → Leaf node (chọn class phổ biến nhất)
- Không còn example nào → Leaf node (chọn class phổ biến nhất từ parent)
---
### 2.3 K-means Clustering
#### **Euclidean Distance (Khoảng cách Euclid)**
```
d(p, q) = √[(x₁ - x₂)² + (y₁ - y₂)²]
```
**Ví dụ:** p(2,3), q(5,7)
```
d = √[(2-5)² + (3-7)²]
= √[9 + 16]
= √25
= 5
```
**Cho n chiều:**
```
d(p, q) = √[Σ(pi - qi)²]
```
---
#### **SSE (Sum of Squared Errors)**
```
SSE = Σ distance²(điểm, tâm cluster)
```
**Ví dụ:** Cluster có tâm C(3,3), điểm A(2,3), B(4,5)
```
SSE = [(2-3)² + (3-3)²] + [(4-3)² + (5-3)²]
= [1 + 0] + [1 + 4]
= 1 + 5
= 6
```
---
#### **Cập nhật Centroid**
```
Centroid mới = (Trung bình xi, Trung bình yi)
```
**Ví dụ:** Cluster có điểm (2,3), (4,5), (6,7)
```
Centroid = ((2+4+6)/3, (3+5+7)/3)
= (4, 5)
```
---
#### **Quy trình K-means**
**Bước 1:** Chọn K centroids ban đầu
**Bước 2:** Gán mỗi điểm vào cluster gần nhất
```
Tính khoảng cách từ điểm đến tất cả centroids
→ Chọn centroid có khoảng cách nhỏ nhất
```
**Bước 3:** Cập nhật centroid mới
```
Tính trung bình tọa độ của tất cả điểm trong cluster
```
**Bước 4:** Lặp lại Bước 2-3 cho đến khi:
- Centroids không thay đổi, HOẶC
- Điểm không thay đổi cluster, HOẶC
- Đạt số vòng lặp tối đa
**Bước 5:** Tính SSE cuối cùng
---
## 📐 CÔNG THỨC BỔ SUNG
### Covariance (Hiệp phương sai)
#### **Definitional**
```
Cov(X,Y) = Σ(xi - x̄)(yi - ȳ) / n
```
#### **Computational (Khuyến nghị)**
```
Cov(X,Y) = Σ(xi·yi)/n - x̄·ȳ
Hoặc:
Cov(X,Y) = [Σ(xi·yi) - (Σxi)(Σyi)/n] / n
```
---
### Standard Deviation (Độ lệch chuẩn)
#### **Definitional**
```
σ = √[Σ(xi - x̄)² / n]
```
#### **Computational (Khuyến nghị)**
```
σ = √[Σxi²/n - x̄²]
Hoặc:
σ = √{[Σxi² - (Σxi)²/n] / n}
```
---
### Variance (Phương sai)
```
σ² = Σ(xi - x̄)² / n (Definitional)
σ² = Σxi²/n - x̄² (Computational)
```
---
## 🎯 BẢNG TÓM TẮT
### Các phương pháp chuẩn hóa
| Phương pháp | Công thức | Khi nào dùng |
|-------------|-----------|--------------|
| **Decimal Scaling** | x' = x/10^j | Nhanh, đơn giản |
| **Min-Max** | x' = (x-min)/(max-min)×(b-a)+a | Cần khoảng cụ thể [a,b] |
| **Z-Score** | x' = (x-μ)/σ | Dữ liệu phân phối chuẩn, ít outliers |
| **Modified Z-Score** | x' = 0.6745×(x-median)/MAD | **Có outliers**, cần robust |
**Lưu ý:**
- **Z-Score thường**: Nhạy cảm với outliers (dùng mean & σ)
- **Modified Z-Score**: Kháng nhiễu (dùng median & MAD)
- Phát hiện outliers: |Modified Z-Score| > 3.5
---
### Khi nào dùng Definitional vs Computational?
| Tình huống | Công thức | Lý do |
|-----------|-----------|-------|
| Có bảng chi tiết (xi - x̄) | Definitional | Đã tính sẵn |
| Chỉ có dữ liệu gốc | Computational | Nhanh hơn |
| Dùng máy tính/Excel | Computational | Ít sai số |
| Học lý thuyết | Definitional | Dễ hiểu |
| Thi trắc nghiệm | Computational | Tiết kiệm thời gian |
---
### Mức độ tương quan
| |r| | Mức độ |
|-----|--------|
| < 0.3 | Yếu |
| 0.3 - 0.7 | Trung bình |
| > 0.7 | Mạnh |
---
### Interval Notation
| Ký hiệu | Ý nghĩa | Ví dụ |
|---------|---------|-------|
| [a, b] | Bao gồm a VÀ b | [1, 5] → 1 ≤ x ≤ 5 |
| [a, b) | Bao gồm a, KHÔNG b | [1, 5) → 1 ≤ x < 5 |
| (a, b] | KHÔNG a, bao gồm b | (1, 5] → 1 < x ≤ 5 |
**Binning:**
- Equal-Width: [a, b) cho bins 1 đến n-1, [a, b] cho bin cuối
- Equal-Frequency: [a, b] cho tất cả bins
---
## 🔑 CÔNG THỨC QUAN TRỌNG NHẤT
### Top 12 công thức cần nhớ:
1. **Mean:** x̄ = Σxi / n
2. **Median:** Giá trị giữa sau khi sắp xếp
3. **Min-Max:** x' = (x - min)/(max - min)
4. **Z-Score:** x' = (x - μ)/σ
5. **Modified Z-Score:** x' = 0.6745×(x - median)/MAD
6. **σ (Computational):** √[Σxi²/n - x̄²]
7. **Cov (Computational):** Σ(xi·yi)/n - x̄·ȳ
8. **r (Correlation):** Cov(X,Y)/(σx × σy)
9. **Support:** Count(X)/Total
10. **Confidence:** Support(XY)/Support(X)
11. **Entropy:** -Σ pi × log₂(pi)
12. **Euclidean Distance:** √[Σ(pi - qi)²]
---
## 💡 MẸO GHI NHỚ
**Computational vs Definitional:**
- **Definitional** = Dễ hiểu, nhiều bước
- **Computational** = Nhanh, ít sai số
**Normalization:**
- **Decimal Scaling** = Chia cho 10^j
- **Min-Max** = Đưa về khoảng [a, b]
- **Z-Score** = Chuẩn hóa theo phân phối (mean & σ)
- **Modified Z-Score** = Z-Score robust (median & MAD)
**Z-Score vs Modified Z-Score:**
- **Z-Score** = Dùng Mean & σ → Nhạy outliers
- **Modified Z-Score** = Dùng Median & MAD → Kháng outliers
- **MAD** = Median của |xi - median|
- **0.6745** = Hằng số để MAD tương đương σ khi phân phối chuẩn
**Binning:**
- **Equal-Width** = Chiều rộng đều → Bins có thể rỗng/đông
- **Equal-Frequency** = Số phần tử đều → Chiều rộng không đều
**Apriori:**
- **Support** = Tần suất xuất hiện
- **Confidence** = Khả năng Y xảy ra khi có X
- **Lift > 1** = X và Y liên quan
**ID3:**
- **Entropy cao** = Hỗn loạn (nhiều class khác nhau)
- **Gain cao** = Attribute tốt để phân chia
- Chọn **Gain cao nhất** làm root
**K-means:**
- Gán về **cluster gần nhất**
- Cập nhật centroid = **Trung bình điểm trong cluster**
- **SSE giảm** = Cluster tốt hơn
---
## ✅ CHECKLIST ÔN TẬP
### Trước khi thi, đảm bảo bạn biết:
**Tiền xử lý:**
- [ ] Tính Mean, Median, Mode
- [ ] Vẽ Boxplot, tìm outliers
- [ ] 4 phương pháp chuẩn hóa (Decimal, Min-Max, Z-Score, Modified Z-Score)
- [ ] Binning và smoothing
- [ ] Tính correlation (cả 2 cách: Definitional & Computational)
**Apriori:**
- [ ] Tính Support
- [ ] Tính Confidence
- [ ] Sinh luật kết hợp
- [ ] Biết khi nào dừng
**ID3:**
- [ ] Tính Entropy
- [ ] Tính Information Gain
- [ ] Chọn attribute tốt nhất
- [ ] Vẽ cây quyết định
**K-means:**
- [ ] Tính khoảng cách Euclid
- [ ] Gán điểm vào cluster
- [ ] Cập nhật centroid
- [ ] Tính SSE
---