xây dựng cây quyết định trong R với gói rpart trên bộ dữ liệu Iris

Trong ví dụ này, chúng ta sẽ sử dụng Decision Tree (cây quyết định) để phân loại loài hoa từ bộ dữ liệu nổi tiếng iris. Dưới đây là phần giải thích chi tiết các bước


📦 Cài đặt và tải thư viện cần thiết

# install.packages("rpart")
# install.packages("rpart.plot")
library(rpart)       # Xây dựng cây quyết định
library(rpart.plot)  # Trực quan hóa cây quyết định

🌸 Tải dữ liệu mẫu Iris

data(iris)

📌 Dữ liệu gồm 150 mẫu của 3 loài hoa: setosa, versicolor, và virginica với 4 đặc trưng (chiều dài/rộng của cánh và lá).


🔄 Chia dữ liệu thành tập huấn luyện và kiểm tra

set.seed(42)
sample_index <- sample(1:nrow(iris), 0.7 * nrow(iris))
train_data <- iris[sample_index, ]
test_data <- iris[-sample_index, ]

📊 Dùng 70% dữ liệu để huấn luyện, 30% để kiểm tra. set.seed() giúp kết quả không thay đổi mỗi lần chạy.


🌳 Huấn luyện mô hình cây quyết định

model <- rpart(Species ~ ., data = train_data, method = "class")

🔍 Dự đoán biến phụ thuộc Species dựa vào tất cả các đặc trưng còn lại (.). method = "class" là để phân loại.


🎯 Dự đoán và đánh giá độ chính xác

pred <- predict(model, test_data, type = "class")
accuracy <- sum(pred == test_data$Species) / nrow(test_data)
print(paste("Độ chính xác trên tập test:", round(accuracy, 2)))

📈 So sánh dự đoán với giá trị thực để tính accuracy (tỷ lệ dự đoán đúng).


🖼️ Vẽ sơ đồ cây quyết định

rpart.plot(model)

🌿 Vẽ cây giúp trực quan hóa logic ra quyết định: tại mỗi nút, mô hình kiểm tra giá trị của một đặc trưng để phân nhánh.


kết quả

Chạy code trên Colab

Giải thích kết quả:


🌸 Ý nghĩa của từng nút trong cây

  1. Nút gốc (root):
    Petal.Length < 2.4
    → Đây là bước phân chia đầu tiên. Nếu chiều dài cánh hoa < 2.4cm thì hoa là Setosa, và độ chính xác là 100%.
  2. Nhánh ‘No’ (Petal.Length ≥ 2.4):
    Tiếp tục phân chia bằng Petal.Width < 1.7:
    • Nếu Petal.Width < 1.7 → phân loại là Versicolor
      → Xác suất: Versicolor 92%, Virginica 8%, Setosa 0%
    • Nếu Petal.Width ≥ 1.7 → phân loại là Virginica
      → Xác suất: Virginica 97%, Versicolor 3%, Setosa 0%

📐 Ý nghĩa tỷ lệ phần trăm và xác suất

  • Mỗi nút lá hiển thị xác suất mô hình dự đoán một loài cụ thể trong số các mẫu dữ liệu rơi vào nút đó.
  • Ví dụ:
    • Nhánh có Petal.Length < 2.4 → toàn bộ 36% mẫu → là Setosa 100%
    • Nhánh Petal.Width < 1.7 → chứa 35% mẫu → mô hình dự đoán chủ yếu là Versicolor
    • Nhánh Petal.Width ≥ 1.7 → chứa 29% mẫu → dự đoán chủ yếu là Virginica

🔍 Tóm tắt cách cây quyết định hoạt động

Điều kiện kiểm traNếu đúng (“Yes”)Nếu sai (“No”)
Petal.Length < 2.4🌼 Setosa (100%)Kiểm tra tiếp Petal.Width
Petal.Width < 1.7🌼 Versicolor (92%)🌼 Virginica (97%)

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

error: Content is protected !!