Thuật toán phân loại - Rừng ngẫu nhiên

Giới thiệu

Rừng ngẫu nhiên là một thuật toán học có giám sát được sử dụng cho cả phân loại cũng như hồi quy. Tuy nhiên, nó chủ yếu được sử dụng cho các bài toán phân loại. Như chúng ta biết rằng một khu rừng được tạo thành từ cây cối và nhiều cây cối hơn có nghĩa là khu rừng vững chắc hơn. Tương tự, thuật toán rừng ngẫu nhiên tạo ra các cây quyết định trên các mẫu dữ liệu và sau đó lấy dự đoán từ mỗi người trong số chúng và cuối cùng chọn giải pháp tốt nhất bằng cách bỏ phiếu. Đây là một phương pháp tổng hợp tốt hơn một cây quyết định đơn lẻ vì nó làm giảm sự phù hợp quá mức bằng cách lấy trung bình kết quả.

Hoạt động của thuật toán rừng ngẫu nhiên

Chúng ta có thể hiểu hoạt động của thuật toán Rừng ngẫu nhiên với sự trợ giúp của các bước sau:

  • Step 1 - Đầu tiên, hãy bắt đầu với việc chọn các mẫu ngẫu nhiên từ một tập dữ liệu nhất định.

  • Step 2- Tiếp theo, thuật toán này sẽ xây dựng một cây quyết định cho mọi mẫu. Sau đó, nó sẽ nhận được kết quả dự đoán từ mọi cây quyết định.

  • Step 3 - Ở bước này, sẽ thực hiện bình chọn cho mọi kết quả dự đoán.

  • Step 4 - Cuối cùng, chọn kết quả dự đoán được bình chọn nhiều nhất làm kết quả dự đoán cuối cùng.

Sơ đồ sau đây sẽ minh họa hoạt động của nó:

Triển khai bằng Python

Đầu tiên, hãy bắt đầu với việc nhập các gói Python cần thiết -

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

Tiếp theo, tải xuống tập dữ liệu mống mắt từ liên kết web của nó như sau:

path = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"

Tiếp theo, chúng ta cần gán tên cột cho tập dữ liệu như sau:

headernames = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'Class']

Bây giờ, chúng ta cần đọc tập dữ liệu thành khung dữ liệu gấu trúc như sau:

dataset = pd.read_csv(path, names=headernames)
dataset.head()
lá đài dài chiều rộng đài hoa chiều dài cánh hoa chiều rộng cánh hoa Lớp học
0 5.1 3.5 1,4 0,2 Iris-setosa
1 4,9 3.0 1,4 0,2 Iris-setosa
2 4,7 3.2 1,3 0,2 Iris-setosa
3 4,6 3.1 1,5 0,2 Iris-setosa
4 5.0 3.6 1,4 0,2 Iris-setosa

Quá trình tiền xử lý dữ liệu sẽ được thực hiện với sự trợ giúp của các dòng tập lệnh sau:

X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, 4].values

Tiếp theo, chúng tôi sẽ chia dữ liệu thành phân chia huấn luyện và thử nghiệm. Đoạn mã sau sẽ chia tập dữ liệu thành 70% dữ liệu đào tạo và 30% dữ liệu kiểm tra -

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30)

Tiếp theo, đào tạo mô hình với sự trợ giúp của lớp RandomForestClassifier của sklearn như sau:

from sklearn.ensemble import RandomForestClassifier
classifier = RandomForestClassifier(n_estimators=50)
classifier.fit(X_train, y_train)

Cuối cùng, chúng ta cần phải dự đoán. Nó có thể được thực hiện với sự trợ giúp của tập lệnh sau:

y_pred = classifier.predict(X_test)

Tiếp theo, in kết quả như sau:

from sklearn.metrics import classification_report, confusion_matrix, accuracy_score
result = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:")
print(result)
result1 = classification_report(y_test, y_pred)
print("Classification Report:",)
print (result1)
result2 = accuracy_score(y_test,y_pred)
print("Accuracy:",result2)

Đầu ra

Confusion Matrix:
[
   [14 0 0]
   [ 0 18 1]
   [ 0 0 12]
]
Classification Report:
               precision       recall     f1-score       support
Iris-setosa        1.00         1.00        1.00         14
Iris-versicolor    1.00         0.95        0.97         19
Iris-virginica     0.92         1.00        0.96         12
micro avg          0.98         0.98        0.98         45
macro avg          0.97         0.98        0.98         45
weighted avg       0.98         0.98        0.98         45

Accuracy: 0.9777777777777777

Ưu và nhược điểm của Rừng ngẫu nhiên

Ưu điểm

Sau đây là những ưu điểm của thuật toán Rừng ngẫu nhiên -

  • Nó khắc phục vấn đề overfitting bằng cách lấy trung bình hoặc kết hợp các kết quả của các cây quyết định khác nhau.

  • Rừng ngẫu nhiên hoạt động tốt cho một loạt các mục dữ liệu hơn là một cây quyết định đơn lẻ.

  • Rừng ngẫu nhiên có ít phương sai hơn so với cây quyết định duy nhất.

  • Rừng ngẫu nhiên rất linh hoạt và có độ chính xác rất cao.

  • Việc chia tỷ lệ dữ liệu không yêu cầu trong thuật toán rừng ngẫu nhiên. Nó duy trì độ chính xác tốt ngay cả sau khi cung cấp dữ liệu mà không mở rộng quy mô.

  • Việc chia tỷ lệ dữ liệu không yêu cầu trong thuật toán rừng ngẫu nhiên. Nó duy trì độ chính xác tốt ngay cả sau khi cung cấp dữ liệu mà không mở rộng quy mô.

Nhược điểm

Sau đây là những nhược điểm của thuật toán Rừng ngẫu nhiên -

  • Sự phức tạp là nhược điểm chính của các thuật toán Rừng ngẫu nhiên.

  • Việc xây dựng Rừng ngẫu nhiên khó và tốn thời gian hơn nhiều so với cây quyết định.

  • Cần nhiều tài nguyên tính toán hơn để triển khai thuật toán Rừng ngẫu nhiên.

  • Nó kém trực quan hơn trong trường hợp chúng ta có một bộ sưu tập lớn các cây quyết định.

  • Quá trình dự đoán bằng cách sử dụng các khu rừng ngẫu nhiên rất tốn thời gian so với các thuật toán khác.