Vì sao Random Forest cần phải ngẫu nhiên đến vậy?

Công nghệ26 tháng 8, 2026·10 phút đọc

Bài viết giải mã chi tiết toán học đằng sau thuật toán Random Forest, lý giải vì sao việc lấy mẫu ngẫu nhiên các đặc trưng (feature subsampling) là yếu tố then chốt giúp phá vỡ trần phương sai mà Bagging thuần túy không thể vượt qua. Thông qua công thức phương sai có điều kiện và thí nghiệm đối chứng 400 lần lặp, tác giả chứng minh rằng những cây quyết định 'kém chất lượng' hơn nhưng ít tương quan với nhau lại tạo nên một mô hình tổng hợp mạnh mẽ hơn.

Vì sao Random Forest cần phải ngẫu nhiên đến vậy?

Vì sao Random Forest cần phải ngẫu nhiên đến vậy?

Nếu bạn từng đọc qua bất kỳ tutorial nào về ensemble learning, chắc hẳn câu nói "Random Forest = nhiều cây + lấy trung bình = kết quả tốt hơn" đã trở nên quá quen thuộc. Tuy nhiên, điều này mới chỉ là một phần của câu chuyện. Nếu chỉ đơn thuần là lấy trung bình, thì mô hình đã có tên là "Bagged Trees" chứ không phải Random Forest. Vậy yếu tố "ngẫu nhiên" trong tên gọi thực sự có ý nghĩa gì? Bài viết này sẽ đi sâu vào phương trình toán học giải thích lý do vì sao việc giới hạn ngẫu nhiên số lượng đặc trưng tại mỗi lần chia (split) lại là mấu chốt để vượt qua giới hạn của phương pháp Bagging truyền thống.

Khi Leo Breiman thiết kế Random Forest vào năm 2001, ông đã cố tình thêm một lớp ngẫu nhiên thứ hai: tại mỗi node, mỗi cây quyết định chỉ được phép xem xét một tập con ngẫu nhiên các đặc trưng thay vì tất cả. Vậy tại sao lại cố tình làm cho các cây "kém thấy" hơn? Câu trả lời nằm ở một khái niệm mà dân kỹ thuật hay nhắc đến nhưng ít khi phân tích sâu: sự tương quan (correlation) giữa các cây trong cùng một mô hình.

Ôn lại nhanh: Bias - Variance

Trước khi đi sâu vào rừng cây, hãy cùng điểm lại cách phân rã sai số dự đoán thành ba thành phần chính:

  • Bias (Độ chệch): Mức độ sai lệch trung bình của mô hình. Một mô hình quá đơn giản so với cấu trúc dữ liệu sẽ mắc lỗi một cách có hệ thống (underfitting).
  • Variance (Phương sai): Mức độ dao động của dự đoán khi mô hình được huấn luyện lại trên một tập dữ liệu khác cùng phân phối. Mô hình quá phức tạp sẽ học cả nhiễu của dữ liệu và thay đổi mạnh khi tập huấn luyện xê dịch nhẹ (overfitting).
  • Irreducible Noise (Nhiễu không thể giảm): Phần sai số vốn có của dữ liệu.

Một cây quyết định đơn lẻ không giới hạn nằm ở một thái cực: bias thấp nhưng variance cao. Chúng có thể biểu diễn gần như mọi ranh giới quyết định nhưng lại cực kỳ nhạy cảm với dữ liệu huấn luyện. Đây chính là lý do cây quyết định là nguyên liệu lý tưởng cho Bagging - một kỹ thuật giảm variance bằng cách lấy trung bình nhiều mô hình.

Trung tâm toán học: Công thức phương sai

Giả sử chúng ta có n cây quyết định, mỗi cây là một biến ngẫu nhiên Xᵢ (dự đoán của cây thứ i tại một điểm x cố định). Tính ngẫu nhiên đến từ việc mỗi cây được huấn luyện trên một bootstrap sample khác nhau.

Trong trường hợp lý tưởng nhất, các cây này có cùng phương sai σ² và độc lập hoàn toàn với nhau. Khi đó, phương sai của giá trị trung bình (ensemble) được tính như sau:

Var(X̄) = Var((1/n) Σ Xᵢ) = σ²/n

Khi n → ∞, phương sai của ensemble tiến về 0. Điều này có nghĩa là chỉ cần thêm thật nhiều cây độc lập, chúng ta có thể giảm variance xuống gần như bằng không. Đây cũng là logic tương tự trong vật lý: trung bình của n phép đo nhiễu độc lập sẽ giảm sai số chuẩn theo tỷ lệ σ/√n.

Điểm bất ngờ: Các cây không bao giờ thực sự độc lập

Vấn đề nằm ở giả định "độc lập" - điều hầu như không bao giờ đúng trong thực tế. Các cây trong Random Forest được huấn luyện trên các bootstrap sample từ cùng một tập dữ liệu gốc, sử dụng cùng một bộ đặc trưng, do đó chúng có xu hướng tìm ra các phép chia quan trọng tương tự nhau ở phần đầu cây. Điều này dẫn đến hiệp phương sai Cov(Xᵢ, Xⱼ) ≠ 0.

Khi bỏ giả định độc lập, công thức phương sai tổng quát trở thành:

Var(Σ Xᵢ) = Σᵢ Σⱼ Cov(Xᵢ, Xⱼ)

Chia công thức này thành hai phần: đường chéo (i = j) gồm n số hạng σ² và phần ngoài đường chéo (i ≠ j) gồm n(n-1) số hạng hiệp phương sai.

Giới thiệu hệ số tương quan ρ

Để đơn giản hóa, ta định nghĩa hệ số tương quan trung bình giữa hai cây bất kỳ:

Cov(Xᵢ, Xⱼ) = ρσ²

Thay vào công thức, ta có:

Var(X̄) = ρσ² + (1 - ρ)σ²/n

Kiểm tra nhanh: nếu ρ = 0, công thức trở về σ²/n (trường hợp độc lập). Giờ hãy xem giới hạn khi n tiến đến vô cùng:

lim[n→∞] Var(X̄) = ρσ²

Đây chính là trần phương sai không thể vượt qua.

Bạn có thể thêm hàng triệu cây, nhưng phương sai của ensemble sẽ không bao giờ giảm xuống dưới giá trị ρσ². Con số này hoàn toàn được quyết định bởi mức độ tương quan giữa các cây (ρ) chứ không phải số lượng cây (n). Thêm cây chỉ tác động vào số hạng thứ hai (1 - ρ)σ²/n, còn số hạng đầu tiên thì bất khả xâm phạm.

Vì sao sự tương quan tồn tại và Random Forest giải quyết nó thế nào

Nguyên nhân tương quan đến từ một thực tế: khi dữ liệu có một vài đặc trưng nổi trội, hầu hết các cây sẽ chọn đúng đặc trưng đó làm gốc chia. Điều này khiến các cây có cấu trúc phần đầu giống nhau, dẫn đến việc mắc lỗi tương tự nhau ở cùng một vùng dữ liệu. Bootstrap sampling chỉ xáo trộn các hàng dữ liệu chứ không làm thay đổi đặc trưng nào đang thống trị.

Giải pháp của Random Forest chính là việc giới hạn số lượng đặc trưng được xem xét tại mỗi node (thường là √p trên tổng số p đặc trưng). Khi đặc trưng nổi trội không nằm trong tập con được chọn, cây buộc phải chia theo một đặc trưng khác. Điều này tạo ra sự đa dạng về cấu trúc cây, từ đó làm giảm ρ một cách hiệu quả.

Thí nghiệm kiểm chứng

Để minh họa lý thuyết, tác giả đã thiết kế một thí nghiệm đối chứng với 400 lần lặp độc lập, mỗi lần lấy một tập huấn luyện mới từ một quần thể dữ liệu tổng hợp có 30 đặc trưng (2 đặc trưng nổi trội, 6 đặc trưng có tín hiệu yếu và phần còn lại là nhiễu). Điểm quan trọng trong thiết kế là mỗi trial phải lấy một tập huấn luyện hoàn toàn mới, không chỉ là bootstrap từ một tập cố định, để đo lường đúng hệ số tương quan không điều kiện như định nghĩa của Breiman.

Biểu đồ so sánh phương sai giữa Bagging và Random ForestBiểu đồ so sánh phương sai giữa Bagging và Random Forest

Kết quả đo lường

Kết quả cho thấy hai điều đáng chú ý:

1. Hệ số tương quan giảm 3.2 lần khi sử dụng feature subsampling (từ 0.136 xuống 0.043). Việc "giấu" các đặc trưng nổi trội thực sự phá vỡ cấu trúc dùng chung giữa các cây.

2. Cây đơn lẻ trong Random Forest "kém" hơn rõ rệt (σ² = 17.42 so với 9.89 của Bagging). Điều này dễ hiểu: giới hạn chỉ xem xét ~5-6 đặc trưng mỗi lần chia đôi khi khiến cây phải chọn phép chia không tối ưu.

3. Trần phương sai tiệm cận ρσ² giảm từ 1.34 xuống 0.76, chứng minh rằng cải thiện hiệu suất ensemble không đến từ việc có những cây mạnh hơn mà đến từ việc có những cây có lỗi ít tương quan với nhau.

Bảng số liệu phương sai khi tăng số cây

Số cây (n)Bagging (thực nghiệm)Bagging (lý thuyết)RF (thực nghiệm)RF (lý thuyết)
19.899.8917.4217.42
82.422.412.882.84
181.851.821.681.68
701.491.460.960.99
1201.441.410.850.89

Cột lý thuyết và thực nghiệm bám sát nhau, chứng tỏ công thức xấp xỉ trường trung bình (mean-field) hoạt động chính xác. Điểm đáng chú ý là sự đảo chiều quanh n ≈ 18: Random Forest bắt đầu tệ hơn nhưng vượt qua Bagging khá nhanh và đến n = 120, phương sai chỉ còn khoảng 59% so với Bagging (0.85 vs 1.44).

Điểm tinh tế: Cây tệ hơn nhưng Rừng tốt hơn

Đây là chi tiết gây bất ngờ cho nhiều người dùng lâu năm: một cây trong Random Forest là một predictor tệ hơn một cây trong Bagging, nhưng ensemble cuối cùng lại tốt hơn đáng kể. Điều này không phải là mâu thuẫn mà chính là toàn bộ ý tưởng của thuật toán.

Nó tách bạch hai khái niệm dễ bị nhầm lẫn:

  • Chất lượng cá nhân (Individual quality): Một cây bagged nhìn thấy tất cả 30 đặc trưng nên đưa ra quyết định tốt hơn (σ² thấp hơn).
  • Chất lượng ensemble: Trung bình của nhiều cây RF lại tốt hơn nhờ hệ số ρ thấp hơn hẳn.

Cơ chế đằng sau là: feature subsampling không làm cây tốt hơn, thậm chí còn làm mỗi cây tệ hơn một chút. Nhưng thứ nó mua được là sự độc lập trong các lỗi của các cây khác nhau. Vì công thức phương sai ensemble đặt trọng số quá lớn lên ρ (ρ sống sót khi n → ∞ trong khi σ² đóng góp tiến về 0), một hy sinh nhỏ về chất lượng cá nhân có thể đổi lấy một sự giảm lớn về lỗi dùng chung.

Bài học thực tiễn: max_features không phải là chi tiết nhỏ

Nếu có một tham số trong sklearn.ensemble.RandomForestRegressor được đặt thành 'sqrt' một lần rồi không bao giờ đụng đến nữa, thì đó chính là max_features. Kết quả nghiên cứu này cho thấy việc mặc định đó có thể đang bỏ phí tiềm năng của mô hình.

max_features kiểm soát chính xác đại lượng mà cả bài viết này xoay quanh: số đặc trưng mỗi split được nhìn thấy, từ đó quyết định cuộc đánh đổi giữa σ² và ρ:

  • Quá cao (gần bằng hoặc bằng tất cả đặc trưng, tức là Bagging): Các cây đều hướng về cùng đặc trưng nổi trội, chạm trần phương sai sớm. Tăng thêm cây gần như vô ích.
  • Quá thấp (chỉ 1 đặc trưng mỗi split): Các cây bị hạn chế quá mức, gần như đoán ngẫu nhiên ở mỗi node. Trần ρ tuy thấp hơn nhưng giá trị tuyệt đối của Var(mean) có thể cao hơn vì σ² tăng nhanh hơn mức ρ giảm.
  • Điểm cân bằng nằm giữa, phụ thuộc vào dữ liệu: bao nhiêu đặc trưng thực sự nổi trội so với số đặc trưng có tín hiệu phụ.

Mô hình tinh thần ngắn gọn: max_features không phải là núm vặn ngẫu nhiên để đặt rồi quên — nó là đòn bẩy quyết định vị trí của rừng trên đường đánh đổi σ²–ρ. Hãy tinh chỉnh nó như bất kỳ tham số bias-variance nào khác: bằng cách kiểm tra ảnh hưởng thực tế lên lỗi validation, chứ không mù quáng tin vào mặc định.

Kết luận

Random Forest không chỉ đơn giản là "nhiều cây + trung bình". Sức mạnh thực sự của nó đến từ việc giảm tương quan giữa các cây thông qua feature subsampling. Phương trình Var(X̄) = ρσ² + (1 - ρ)σ²/n không chỉ là một bài tập toán học mà là chìa khóa để hiểu tại sao một tập hợp những cây "kém thông minh" nhưng đa dạng lại có thể đánh bại một tập hợp những cây thông minh nhưng mắc cùng một kiểu lỗi. Trong thế giới của ensemble learning, diversification (đa dạng hóa) thực sự là một loại tài sản có giá trị riêng.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗