Menu
CoddyTech

Cây quyết định

Bài học 17 trên 19 trong khóa học Giới thiệu về học máy của Coddy.

Cây quyết định là một mô hình phi tuyến được dùng cho cả các bài toán phân loại và hồi quy. Mô hình này mô phỏng cách con người ra quyết định sát hơn các thuật toán khác, nên vừa trực quan vừa mạnh mẽ khi xử lý các tập dữ liệu phức tạp. Về bản chất, cây quyết định chia dữ liệu thành các tập con bằng một loạt quy tắc đơn giản, tương tự như việc đặt một loạt câu hỏi có hoặc không về các đặc trưng của các điểm dữ liệu.
 

Nguồn: Wikipedia

Hãy hình dung cây quyết định như một đồ thị có dạng cây, trong đó:

  • Mỗi nút bên trong biểu thị một phép “kiểm tra” một thuộc tính, chẳng hạn như đồng xu rơi ra mặt ngửa hay mặt sấp, 
  • Mỗi nhánh biểu thị kết quả của phép kiểm tra, và
  • Mỗi nút lá biểu thị một nhãn lớp, tức quyết định được đưa ra sau khi tính toán tất cả thuộc tính.

Các loại cây quyết định:

  • Cây phân loại: Dùng khi kết quả dự đoán là lớp mà dữ liệu thuộc về.
  • Cây hồi quy: Dùng khi kết quả dự đoán có thể biểu diễn bằng một số thực, chẳng hạn như giá của một ngôi nhà.


 

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

challenge icon

Thử thách

Trung bình

Tạo một hàm tên là decide_outcome nhận một danh sách quy tắc theo định dạng sau:

rules = {
	rule1: {"type": "bigger", "value": 5},
	rule2: {"type": "smaller", "value": 7},

}

Hàm cũng nhận quy tắc cần chuyển đến khi kết quả đúng hoặc không đúng:

outcome = {
	"rule1": {True: "rule2", False: "rule3"},
	"rule2": {True: "rule3", False: "rule4"},
	"rule3": {True: None, False: None}
	"rule4": {True: None, False: None}

}
data_point = {
	"rule1": 8,
	"rule2": 10,
}

Đầu ra phải là rule4

  • 8 is bigger than 5 (True) → chuyển đến rule2 theo quy tắc này "rule1": {True: "rule2", False: "rule3"},
  • 10 is smaller than 7 (False) → chuyển đến rule4 theo quy tắc này "rule2": {True: "rule3", False: "rule4"},
  • Không còn cách nào khác để tiếp tục, nên đầu ra là rule4

Luôn bắt đầu từ <strong>rule1</strong>

Tự làm thử

def decide_outcome(rules, outcome, point):
    current_rule = "rule1"
    # Viết code của bạn ở đây

Tất cả bài học trong Giới thiệu về học máy

Tự luyện tập: Trình biên dịch Python online