diff --git a/cheat-sheet b/cheat-sheet new file mode 100644 index 0000000..6897ddb --- /dev/null +++ b/cheat-sheet @@ -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(X∪Y)/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 + +---