You are on page 1of 5

Random Forest

Random Forest là một thuật toán Machine Learning linh hoạt , dễ sử dụng và
thường cho một kết quả tuyệt vời. Nó là một trong những thuật toán được sử dụng
nhiều nhất trong các bài toán phân loại (classification) và hồi quy (regression)

I. Cách hoạt động


Random Forest là một thuật toán supervised learning ( Học có giám sát ). Như tên
gọi của nó , Random Forest sử dụng các cây ( tree ) để làm nề tảng
Random Forest là một tập hợp các Decision Tree ( cây quyết định ) mà mỗi cây
được chọn theo một thuật toán ngẫu nhiên. Nói một cách đơn giản nó xây dựng
nhiều Decision Tree và hợp nhất chúng lại với nhau để có được dự đoán chính xác
và ổn định hơn
Một lợi thế lớn là nó được sử dụng cho cả bài toán phân loại và hồi quy, chiếm đa
số trong các hệ thống Machine Learning hiện tại . Dưới đây là một Random Forest
với hai cây :

Random Forest gần như có cùng thông số với Decision Tree . May mắn thay , chúng
ta không phải kết hợp Decision Tree với trình phân loại bao đóng mà chỉ sử dụng
lớp phân loại của Random Forest . Và cũng dễ dàng giải quyết các bài toán hồi quy
bằng cách sử dụng công cụ hồi quy của Random Forest
Random Forest bổ sung thêm tính ngẫu nhiên trong khi xây dựng cây. Thay vì tìm
kiếm tính năng quan trọng nhất khi chia tách một nút , nó tìm kiếm tính năng tốt
nhất trong một tập hơn con các tính năng ngẫu nhiên . Sự đa dạng và mở rộng này
thường đẫn dến một kết quả tốt hơn.
Do đó trong Random Forest , chỉ có một tập con ngẫu nhiên của các tính năng được
xem xét bằng thuật toán khi phân tách một nút. Thậm chí có thể làm cho cây trở nên
ngẫu nhiên hơn bằng cách sử dụng các ngưỡng ngẫu nhiên cho từng tính năng thay
vì tìm kiếm các ngưỡng tốt nhất có thể ( giống Decisong Tree thông thường )

II. Tính năng quan trọng

Một sự tuyệt vời khác của thuật toán Random Forest là rất dễ dàng kiểm tra tầm
quan trọng của từng tính năng . Scikit-learn cung cấp một công cụ cho việc này. Nó
đo tầm quan trọng bằng cách xem xét bao nhiêu nút cây sử dụng tính năng đó . Tự
tính điểm sau khi thực hiện và chia tỷ lệ kết quả sao cho tổng của tất cả tầm quan
trọng bằng 1

Thông qua tầm quan trọng của tính năng , chúng ta có thể quyết định tính năng nào
cần bỏ do nó không đóng góp gì cho quá trình dự đoán . Điều này thật sự quan trọng
vì quy tắc chung trong Machine Learning là càng có nhiều tính năng thì mô hình sẽ
càng bị ảnh hưởng

Dưới đây là bảng và một biểu đồ cho thấy tầm quan trọng của 13 tính năng đã sử
dụng trong một dự án phân loại được giám sát với bộ dữ liệu nổi tiếng Titanic nổi
tiếng trên kaggle
III. Sự khác biệt giữa Decision Tree và Random Forest

Random Forest là một tập hợp các Decision Tree nhưng có một số khác biệt

Nếu nhập một tập dữ liệu huấn luyện với các tính năng và nhãn ( labels ) vào
Decision Tree , nó sẽ hình thành một số quy tắc , sẽ được sử dụng để đưa ra dự đoán

Ví dụ : Nếu bạn muốn dự đoán liệu một người sẽ nhấp vào quảng cáo trực tuyến
hay không , bạn thu thập quảng cáo mà người đó đã nhấp trong quá khứ và một số
tính năng mô tả quyết định của anh ấy. Nếu bạn đặt các tính năng và nhãn vào cây
quyết định, nó sẽ tạo ra một số quy tắc . Sau đó bạn có thể dự đoán liệu quảng cáo
có được nhấp vào không ? Trong khi đó Random Forest chọn ngẫu nhiên các tính
năng để xây dựng một Decision Tree và tính kết quả trung bình
Một điểm khác biệt nữa là Decision Tree có thể bị ảnh hưởng quá mức và Random
Forest ngăn chặn những lần vị quá mức đó bằng cách tạo tập hợp con ngẫu nhiên
của các tính năng và xây dựng các cây con nhỏ hơn bằng cách sử dụng tập hợp con
này . Sau đó nó kết hợp các cây con này . Lưu ý là điều này không phải lúc nào cũng
hoạt động và nó cũng làm cho việc tính toán trở nên chậm hơn tùy thuộc vào số
lượng cây khi xây dựng

IV. Hyperparameters

Hyperparameters ( siêu tham số ) trong Random Forest được sử dụng để tăng khả
năng dự đoán hoặc làm cho mô hình nhanh hơn . Dưới đây là Hyperparameters của
scikit-learn được xây dựng trong hàm ngẫu nhiên

1. Tăng khả năng dự đoán

Đầu tiên có Hyperparameters n_estimator là số lượng cây mà thuật toán xây


dựng trước khi lấy dự đoán trung bình . Nói chung số lượng cây lớn làm tăng
hiệu suất và làm cho dự đoán ổn định hơn nhưng nó làm chậm tính toán.

Một Hyperparameters quan trọng khác là max_features , đây là số lượng tính


năng tối đa mà Random Forest xem xét để phân chia một nút .

Hyperparameters cuối cùng là min_sample_leaf số lượng tối thiểu của lá để chia


các nốt trong

2. Tăng tốc độ

Hyperparameters n_jobs cho biết máy có bao nhiêu bộ sử lý được phép sử dụng,
nó có giá trị là 1, nó chỉ có thể sử dụng một bộ sử lý. Giá trị -1-1 có nghĩa là
không giới hạn

Hyperparameters Random_state có thể sao chép đầu ra của mô hình . mô hình


sẽ luôn tạo ra kết quả tương tự khi nó có giá trị là Random_state

Hyperparameters oob_score , đây là một phương thức xác thực chéo. Trong mẫu
này khoảng một phần 3 dữ liệu không được sử dụng để huấn luyện và được sử
dụng để đánh giá hiệu suất của nó
V. Ưu và nhược điểm

Một lợi thế của Random Forest là nó có thể được sử dụng cho cả bài toán hồi quy
và phân loại

Random Forest cũng được coi là một thuật toán rất tiện dụng và dễ sử dụng, bởi vì
các siêu tham số mặc định của nó thường tạo ra kết quả dự đoán tốt

Một trong những vấn đề lớn trong Machine Learning là quá mức, nhưng hầu hết
vấn đề này sẽ không xảy ra dễ dàng với trình phân loại Random Forest.

Hạn chế chính của Random Forest là một số lượng lớn cây có thể làm cho thuật
toán bị chậm và không hiệu quả đối với các dự đoán theo thời gian . Nhìn chung,
các thuật toán này được đào tạo nhanh, nhưng khá chậm khi tạo dự đoán. Một dự
đoán chính xác hơn đòi hỏi nhiều cây hơn, dẫn đến mô hình chậm hơn. Trong hầu
hết các ứng dụng trong thế giới thực, thuật toán Random Forest đủ nhanh, chắc
chắn hiệu suất thời gian chạy là quan trọng và các phương pháp khác sẽ được ưu
tiên.

Và tất nhiên Random Forest là một công cụ mô hình dự đoán chứ không phải là
một công cụ mô tả. Điều đó có nghĩa là, nếu bạn đang tìm kiếm một mô tả về các
mối quan hệ trong dữ liệu của bạn, các phương pháp khác sẽ được ưu tiên.

VI. Trường hợp sử dụng

Thuật toán Random Forest được sử dụng trong rất nhiều lĩnh vực khác nhau, như
Ngân hàng, Thị trường chứng khoán, Y học và Thương mại điện tử. Trong Ngân
hàng, ví dụ, nó được sử dụng để phát hiện những khách hàng sẽ sử dụng dịch vụ
của ngân hàng thường xuyên hơn những người khác và trả nợ đúng hạn. Nó cũng
được sử dụng để phát hiện những khách hàng lừa đảo. Trong lĩnh vực chăm sóc sức
khỏe, nó được sử dụng để xác định sự kết hợp chính xác của các thành phần trong
y học và để phân tích lịch sử y tế của bệnh nhân. Và cuối cùng, trong thương mại
điện tử được sử dụng để xác định xem khách hàng có thực sự thích sản phẩm đó hay
không.

You might also like