# Lộ trình từ Decision Tree đến Random Forest


Một [cây quyết định (DT)]({{< ref "decision-tree.md" >}}) sâu có [độ chệch thấp nhưng phương sai rất cao]({{< ref "bias-variance-tradeoff.md" >}}): nó học vẹt nhiễu và rất nhạy với dữ liệu huấn luyện. [Bagging]({{< ref "bagging.md" >}}) và [Random Forest (RF)]({{< ref "random-forest.md" >}}) cùng dùng triết lý "sức mạnh số đông" để dập tắt phương sai, nhưng ở hai cấp độ khác nhau.

---

### 1. Bagging: Hội đồng đọc chung tài liệu

Thay vì tin 1 cây, Bagging rút mẫu bootstrap tạo $B$ tập con, trồng cây DT nguyên bản trên mỗi tập rồi lấy trung bình dự đoán:

$$
\operatorname{Var} = \rho \sigma^2 + \frac{1 - \rho}{B}\sigma^2 \xrightarrow{B \to \infty} \rho \sigma^2.
$$

**Điểm nghẽn:** Cây nguyên bản xét đủ $M$ đặc trưng ở mọi nút. Nếu có biến chi phối mạnh, **100% cây đều chọn nó ở gốc**. Các cây quá giống nhau ($\rho$ cao), làm nghẽn mức giảm phương sai.

---

### 2. Random Forest: Can thiệp luật sinh trưởng của cây

Để giảm phương sai sâu hơn, RF phải **bẻ gãy tương quan $\rho$** bằng cách can thiệp trực tiếp vào từng lần rẽ nhánh:

- Tại **mỗi nút**, cây chỉ được bốc thăm ngẫu nhiên **$m \approx \sqrt{M}$ đặc trưng** (ví dụ 100 chỉ lấy 10); số còn lại bị "bịt mắt".
- Xuống nút con kế tiếp, thuật toán lại bốc thăm tập $m$ đặc trưng mới.

Do bốc thăm liên tục, biến áp đảo nhiều khi vắng mặt ở nút gốc, ép cây khai thác các tín hiệu tiềm ẩn khác. Kết quả tạo ra quần thể cây thực sự độc lập, kéo $\rho \to 0$ và triệt tiêu phương sai tối đa.

---

> 💡 **Ẩn dụ trực giác:**  
> Nếu **DT** là cá nhân dễ cảm tính, thì **Bagging** là hội đồng thảo luận chung tài liệu (dễ bị cuốn theo người nổi bật nhất), còn **Random Forest** là hội đồng mà mỗi người chỉ đọc trích đoạn ngẫu nhiên để không ai bị thao túng bởi ai.

