Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách sử dụng cây quyết định để triển khai bộ hồi quy trong Python

Cây quyết định là khối xây dựng cơ bản của thuật toán rừng ngẫu nhiên (random forest). Đây được coi là một trong những thuật toán phổ biến nhất trong học máy và được sử dụng cho mục đích phân loại. Quyết định được đưa ra bởi cây quyết định có thể dùng để giải thích tại sao một dự đoán cụ thể được thực hiện. Điều này nghĩa là quy trình đầu vào và đầu ra sẽ rõ ràng đối với người dùng. Chúng còn được gọi là CART (Classification And Regression Trees - Cây Phân loại và Hồi quy). Có thể hình dung chúng như một cây nhị phân (được nghiên cứu trong cấu trúc dữ liệu và thuật toán).

Mỗi nút trong cây đại diện cho một biến đầu vào đơn lẻ, và các nút lá (còn gọi là nút terminal) chứa biến đầu ra. Các nút lá này được dùng để thực hiện dự đoán. Khi một cây quyết định được tạo ra, ý tưởng cơ bản là không gian đã cho được chia thành nhiều phần. Tất cả các giá trị được đưa ra và các phép chia khác nhau được thử để đạt được chi phí thấp hơn và giá trị dự đoán tốt nhất. Các giá trị này được chọn theo cách tham lam (greedy).

Việc chia tách các nút tiếp diễn cho đến khi độ sâu tối đa của cây được đạt đến. Ý tưởng đằng sau việc sử dụng cây quyết định là chia tập dữ liệu đầu vào thành các tập dữ liệu nhỏ hơn dựa trên giá trị đặc trưng cụ thể cho đến khi mọi biến mục tiêu đều rơi vào một danh mục duy nhất. Phân chia này được thực hiện để đạt được lợi ích thông tin (information gain) tối đa cho mỗi bước.

Mọi cây quyết định đều bắt đầu bằng một gốc (root), và đây là nơi phép chia đầu tiên được thực hiện. Một cách hiệu quả cần được thiết kế để đảm bảo các nút được định nghĩa chính xác.

Đây là nơi giá trị Gini xuất hiện. Gini được coi là một trong những phép đo phổ biến nhất để đo lường sự không đồng đều. Sự không đồng đều đề cập đến lớp mục tiêu (đầu ra) mà mọi tập con trong một nút có thể thuộc về.

Cú pháp dưới đây được sử dụng khi dùng DecisionTreeRegressor:

class sklearn.tree.DecisionTreeRegressor(*, criterion='mse', ...)

Hãy tìm hiểu cách sử dụng DecisionTreeRegressor:

Ví dụ

from sklearn import tree

my_data = [[1, 1], [5, 5], [2, 3], [7, 11]]
target_vals = [0.1, 1.5, 0.75, 1.73]

clf = tree.DecisionTreeRegressor()
print("Bộ hồi quy cây quyết định đã được gọi")
DTreg = clf.fit(my_data, target_vals)
print("Dữ liệu đã được huấn luyện")

pred_val = DTreg.predict([[4, 7]])
print("Dữ liệu dự đoán là:")
print(pred_val)

Đầu ra

Bộ hồi quy cây quyết định đã được gọi
Dữ liệu đã được huấn luyện
Dữ liệu dự đoán là [1.5]

Giải thích

  • Nhập các gói thư viện cần thiết vào môi trường.
  • Định nghĩa vector đặc trưng và giá trị mục tiêu.
  • Gọi DecisionTreeRegressor và huấn luyện dữ liệu cho mô hình.
  • Sử dụng hàm predict để dự đoán giá trị cho các đặc trưng.
  • Hiển thị đầu ra trên console.

Lưu ý: Tiêu chí mặc định cho hồi quy là 'mse' (Mean Squared Error - Sai số bình phương trung bình). Có thể thay đổi thành 'mae' (Mean Absolute Error) hoặc 'friedman_mse' tùy theo bài toán.