Ultralytics YOLO27: Đăng ký vào danh sách chờ.
Cấp phép YOLO
Quay lại Bảng thuật ngữ Ultralytics

Random Forest

Random forest lấy trung bình kết quả từ nhiều cây quyết định, mỗi cây được phát triển trên một mẫu bootstrap với các phép chia đặc trưng ngẫu nhiên, phục vụ phân loại và hồi quy.

Random forest là thuật toán học có giám sát, huấn luyện nhiều cây quyết định trên các biến thể ngẫu nhiên của cùng một tập dữ liệu rồi kết hợp dự đoán của chúng bằng cách bỏ phiếu hoặc lấy trung bình xác suất lớp trong phân loại, và lấy trung bình trong hồi quy. Leo Breiman mô tả phương pháp này trong bài báo năm 2001 Random Forests, phát triển từ kỹ thuật bagging trước đó của ông. Một cây sâu đơn lẻ ghi nhớ các hàng dữ liệu huấn luyện, nên dự đoán của cây thay đổi mạnh khi dữ liệu biến đổi đôi chút. Lấy trung bình hàng trăm cây mắc những lỗi khác nhau giúp triệt tiêu phần lớn phương sai, khiến random forest trở thành một trong những model mặc định đáng tin cậy nhất cho dữ liệu dạng bảng. Random forest không cần chuẩn hóa feature, xử lý được tương tác phi tuyến giữa các feature và lỗi kiểm thử ổn định khi bổ sung thêm cây.

Cách hoạt động của random forest#

Random forest bổ sung hai nguồn ngẫu nhiên vào quá trình huấn luyện cây, vì ensemble chỉ có ích khi các thành viên mắc những lỗi khác nhau, sau đó kết hợp các cây:

  • Gộp mẫu bootstrap (bagging): Mỗi cây được huấn luyện trên một mẫu bootstrap, tức tập hợp các hàng được lấy có hoàn lại từ dữ liệu huấn luyện và có kích thước bằng dữ liệu đó. Một số hàng xuất hiện nhiều lần, còn khoảng 37% số hàng (tỷ lệ 1/e) không được chọn vào một mẫu bất kỳ.
  • Tập con feature ngẫu nhiên: Ở mỗi lần phân nhánh, cây chỉ xem xét một tập con feature được chọn ngẫu nhiên. Bộ phân loại của Scikit-learn mặc định dùng căn bậc hai của số feature; vì vậy, tập dữ liệu có 100 feature sẽ có 10 ứng viên ở mỗi lần phân nhánh, còn bộ hồi quy mặc định xem xét mọi feature. Do đó, một feature chi phối không thể luôn nằm ở vị trí đầu của mọi cây, giúp giảm tương quan giữa các cây.
  • Tổng hợp: Phương pháp gốc của Breiman lấy phiếu đa số từ các cây. Cách triển khai của Scikit-learn thay vào đó lấy trung bình xác suất lớp từ mọi cây; các random forest hồi quy lấy trung bình dự đoán số của các cây.

Các cây được phát triển sâu và không cắt tỉa, nên mỗi cây có bias thấp và variance cao. Lấy trung bình nhiều cây ít tương quan giúp giảm variance mà vẫn giữ bias thấp, tạo ra sự dịch chuyển có lợi trên đánh đổi bias-variance. Vì các cây độc lập, chúng cũng được huấn luyện song song trên các lõi CPU.

Lỗi out-of-bag và độ quan trọng của feature#

Các hàng dữ liệu mà một cây chưa từng thấy đóng vai trò như tập kiểm thử tích hợp sẵn. Điểm out-of-bag (OOB) dự đoán từng hàng huấn luyện chỉ bằng các cây có mẫu bootstrap bỏ qua hàng đó; cách này ước tính accuracy trên dữ liệu chưa thấy mà không cần dành riêng một tập validation. Forest cũng báo cáo độ quan trọng của feature. Độ quan trọng mặc định dựa trên độ hỗn tạp đo mức giảm độ hỗn tạp mà mỗi feature tạo ra qua tất cả các lần phân nhánh và thiên về feature có nhiều giá trị riêng biệt; do đó, độ quan trọng theo hoán vị — mức giảm điểm số sau khi xáo trộn một feature — là lựa chọn đáng tin cậy hơn khi xếp hạng feature.

Ví dụ này so sánh một cây phát triển tối đa với một rừng ngẫu nhiên của scikit-learn trên bộ dữ liệu ung thư vú đi kèm bằng kiểm định chéo 5-fold, sau đó đọc điểm OOB của mô hình rừng ngẫu nhiên:

from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeClassifier

# 569 tumors described by 30 numeric features, labeled malignant or benign
X, y = load_breast_cancer(return_X_y=True)

# One fully grown tree vs. a forest of 300 trees on bootstrap samples
tree = DecisionTreeClassifier(random_state=0)
forest = RandomForestClassifier(n_estimators=300, oob_score=True, random_state=0)

# Compare 5-fold cross-validated accuracy
print(f"Single tree: {cross_val_score(tree, X, y, cv=5).mean():.3f}")
print(f"Forest:      {cross_val_score(forest, X, y, cv=5).mean():.3f}")

# Out-of-bag score: each row is predicted only by trees that never trained on it
forest.fit(X, y)
print(f"OOB score:   {forest.oob_score_:.3f}")

Script in ra 0.917 cho cây đơn, 0.963 cho forest và điểm OOB là 0.965. Forest giảm tỷ lệ lỗi của cây từ 8.3% xuống 3.7%; ước tính OOB chỉ chênh 0.002 so với accuracy qua kiểm định chéo sau một lần chạy huấn luyện.

Ứng dụng thực tế#

  • Rủi ro tín dụng và phát hiện gian lận: Ngân hàng chấm điểm hồ sơ vay và giao dịch từ dữ liệu dạng bảng như thu nhập, thời gian sử dụng tài khoản và kiểu chi tiêu; đầu ra xác suất của forest được dùng để đặt ngưỡng quyết định.
  • Dự đoán rủi ro y tế: Model lâm sàng dự đoán kết quả như tái nhập viện dựa trên hồ sơ bệnh nhân; độ quan trọng theo hoán vị cho biết phép đo nào chi phối từng dự đoán.
  • Phân tích ảnh vệ tinh: Random forest từ lâu đã là lựa chọn phổ biến để lập bản đồ lớp phủ đất, phân loại từng pixel hoặc khu vực dựa trên giá trị dải phổ và chỉ số thực vật.
  • Mô hình hóa sản lượng cây trồng: Detector YOLO26 đếm trái cây hoặc cây trồng trong ảnh chụp ngoài đồng, mỗi đối tượng tương ứng một detection; số lượng của từng lô được kết hợp với số liệu đất và thời tiết thành các cột trong random forest dự đoán sản lượng.
  • Cây quyết định đơn: Cây dễ đọc dưới dạng tập hợp quy tắc if-then, nhưng thay đổi nhỏ trong dữ liệu có thể tạo ra một cây hoàn toàn khác. Forest đánh đổi khả năng dễ đọc đó để giảm variance đáng kể.
  • Gradient boosting: XGBoost, LightGBM và CatBoost lần lượt xây dựng các cây nông; mỗi cây sửa lỗi của những cây trước đó. Sau khi tinh chỉnh, boosting thường đạt điểm cao hơn trên các benchmark dữ liệu dạng bảng, trong khi các cây độc lập của random forest được huấn luyện song song và cho kết quả tốt với cấu hình mặc định.
  • Model nền tảng dạng bảng: Transformer huấn luyện trước dự đoán trên bảng mới chỉ trong một lượt truyền xuôi mà không cần fit model riêng cho từng tập dữ liệu; hiện nay, các model này có thể cạnh tranh với ensemble cây đã tinh chỉnh trên các bảng nhỏ.
  • Cây ngẫu nhiên hóa cực độ: Với mỗi feature ứng viên, Extra Trees chọn một ngưỡng ngẫu nhiên thay vì tìm ngưỡng tốt nhất, rồi giữ lại ngưỡng tốt nhất trong số các cách phân nhánh ngẫu nhiên đó. Theo mặc định, Scikit-learn huấn luyện Extra Trees trên toàn bộ tập dữ liệu mà không lấy mẫu bootstrap; bỏ qua bước tìm ngưỡng giúp chúng fit nhanh hơn random forest có cùng kích thước.

Khám phá các giải pháp

Thị giác máy tính trong thể thao

Thị giác máy tính trong thể thao

Khám phá cách Ultralytics YOLO thúc đẩy thị giác máy tính trong thể thao với khả năng theo dõi cầu thủ và bóng, phân tích hiệu suất, cung cấp thông tin chuyên sâu cho huấn luyện và hỗ trợ phục hồi cho vận động viên.
Tìm hiểu thêm
Thị giác máy tính cho ảnh hàng không

Thị giác máy tính cho ảnh hàng không

Chuyển hình ảnh từ drone và ảnh hàng không thành thông tin chuyên sâu theo thời gian thực cho nông nghiệp, nuôi trồng thủy sản, bảo tồn và phân tích không gian địa lý với Ultralytics YOLO.
Tìm hiểu thêm
Thị giác máy tính trong hàng không vũ trụ

Thị giác máy tính trong hàng không vũ trụ

Ứng dụng computer vision trong ngành hàng không vũ trụ với Ultralytics YOLO cho kiểm tra máy bay, phát hiện dị vật trên đường băng (FOD), vận hành mặt đất tại sân bay và phát hiện lỗi vật liệu composite.
Tìm hiểu thêm
Computer vision trong lĩnh vực an ninh

Computer vision trong lĩnh vực an ninh

Bảo vệ mọi địa điểm bằng model Ultralytics YOLO. Vision AI hỗ trợ giám sát vành đai, phát hiện mối đe dọa, nhận dạng biển số và an toàn nơi làm việc.
Tìm hiểu thêm
Computer vision trong robotics

Computer vision trong robotics

Tăng cường năng lực cho máy móc thông minh bằng model Ultralytics YOLO. Vision AI trong lĩnh vực robotics hỗ trợ điều hướng tự động, nhận thức, theo dõi đối tượng và điều khiển theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong logistics

Thị giác máy tính trong logistics

Tinh giản hoạt động logistics với các model Ultralytics YOLO. Vision AI hỗ trợ kiểm tra kiện hàng, phân loại, theo dõi phương tiện và giám sát an toàn kho hàng theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong bán lẻ

Thị giác máy tính trong bán lẻ

Định hình lại hoạt động bán lẻ với các model Ultralytics YOLO. Vision AI hỗ trợ theo dõi hàng tồn kho, giám sát kệ hàng, quản lý hàng chờ và phân tích khách hàng thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong chăm sóc sức khỏe

Thị giác máy tính trong chăm sóc sức khỏe

Xây dựng các giải pháp chăm sóc sức khỏe với model Ultralytics YOLO. Vision AI trong chăm sóc sức khỏe hỗ trợ xử lý hình ảnh y tế nhanh hơn, chẩn đoán thông minh hơn và theo dõi bệnh nhân.
Tìm hiểu thêm
Thị giác máy tính trong sản xuất

Thị giác máy tính trong sản xuất

Tối ưu hóa sản xuất bằng các model Ultralytics YOLO. Vision AI thúc đẩy kiểm soát chất lượng, phát hiện lỗi, tuân thủ PPE và tự động hóa dây chuyền lắp ráp.
Tìm hiểu thêm
Thị giác máy tính trong ngành ô tô

Thị giác máy tính trong ngành ô tô

Ứng dụng thị giác máy tính trong ngành ô tô với các model Ultralytics YOLO. Vision AI nâng cao an toàn giao thông, hỗ trợ người lái và tự động hóa phương tiện để tạo nên những tuyến đường thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong nông nghiệp

Thị giác máy tính trong nông nghiệp

Ứng dụng AI thị giác vào nông nghiệp thông minh với các model Ultralytics YOLO. Hỗ trợ giám sát cây trồng, theo dõi vật nuôi và canh tác chính xác để nâng cao năng suất một cách thông minh hơn.
Tìm hiểu thêm

Hãy cùng nhau kiến tạo tương lai của AI!

Bắt đầu hành trình hướng đến tương lai của machine learning