Hướng dẫn cơ bản về R - Random Forest

Xin chào các nhà khoa học dữ liệu tương lai! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới của Random Forests bằng ngôn ngữ R. Đừng lo lắng nếu bạn chưa từng viết một dòng mã trước đây - tôi sẽ là người hướng dẫn thân thiện của bạn trong suốt từng bước. Cuối cùng của bài hướng dẫn này, bạn sẽ biết cách trồng chính những rừng số của riêng mình! Hãy cùng bắt đầu nhé?

R - Random Forest

Cài đặt các gói R cần thiết

Trước khi chúng ta có thể bắt đầu trồng những cây số, chúng ta cần đảm bảo rằng chúng ta có đúng công cụ. Trong R, những công cụ này tồn tại dưới dạng các gói. Hãy tưởng tượng các gói là những hộp công cụ đầy những hàm đặc biệt giúp cuộc sống của chúng ta dễ dàng hơn.

Đối với hành trình Random Forest của chúng ta, chúng ta sẽ cần hai gói chính: randomForestcaret. Hãy cùng cài đặt chúng!

# Cài đặt các gói cần thiết
install.packages("randomForest")
install.packages("caret")

# Tải các gói
library(randomForest)
library(caret)

Khi bạn chạy những dòng này, R sẽ tự động tải các gói này từ internet cho bạn. Đó giống như việc đặt hàng công cụ trực tuyến và nhận chúng tận nơi!

Hiểu về Random Forest: Cơ bản

Hãy tưởng tượng bạn lạc trong một khu rừng và bạn cần tìm đường ra. Bạn có thể hỏi nhiều người khác nhau để xin chỉ đường. Một số có thể chính xác, một số có thể sai lầm, nhưng nếu bạn theo đa số ý kiến, bạn có thể tìm được con đường đúng. Đó chính là cách Random Forest hoạt động!

Random Forest là một phương pháp học tập theo nhóm, có nghĩa là nó sử dụng nhiều cây quyết định để làm dự đoán. Nó giống như việc bạn có một ban cố vấn bao gồm nhiều chuyên gia cây quyết định bỏ phiếu cho quyết định tốt nhất.

Các thành phần chính của Random Forest

  1. Cây quyết định: Đây là những "người bỏ phiếu" riêng lẻ trong rừng của chúng ta.
  2. Bootstrapping: Mỗi cây được huấn luyện trên một tập hợp dữ liệu ngẫu nhiên.
  3. Ngẫu nhiên hóa tính năng: Tại mỗi bước chia, chỉ một tập hợp ngẫu nhiên các tính năng được xem xét.
  4. Tích hợp: Dự đoán cuối cùng được thực hiện bằng cách tích hợp các dự đoán của tất cả các cây.

Tạo Random Forest đầu tiên của bạn

Hãy bắt đầu với một ví dụ đơn giản sử dụng tập dữ liệu iris tích hợp sẵn. Tập dữ liệu này chứa các phép đo của các loài hoa iris khác nhau.

# Tải tập dữ liệu iris
data(iris)

# Đặt种子 để đảm bảo khả năng tái tạo
set.seed(123)

# Tạo mô hình Random Forest
rf_model <- randomForest(Species ~ ., data = iris, ntree = 500)

# In mô hình
print(rf_model)

Trong đoạn mã này:

  • Chúng ta tải tập dữ liệu iris.
  • Chúng ta đặt种子 để đảm bảo rằng tất cả chúng ta nhận được cùng một kết quả "ngẫu nhiên".
  • Chúng ta tạo một mô hình Random Forest sử dụng hàm randomForest(). Phần Species ~ . có nghĩa là chúng ta đang cố dự đoán Species từ tất cả các biến khác.
  • Chúng ta chỉ định ntree = 500, có nghĩa là rừng của chúng ta sẽ có 500 cây.

Khi bạn chạy đoạn mã này, bạn sẽ thấy một bản tóm tắt của mô hình Random Forest của bạn. Đó giống như nhận được một bản báo cáo cho rừng của bạn!

Làm dự đoán với Random Forest của bạn

Bây giờ chúng ta đã có rừng của mình, hãy sử dụng nó để làm một số dự đoán!

# Làm dự đoán trên tập dữ liệu iris
predictions <- predict(rf_model, iris)

# Tạo ma trận nhầm lẫn
confusion_matrix <- table(predictions, iris$Species)

# In ma trận nhầm lẫn
print(confusion_matrix)

# Tính độ chính xác
accuracy <- sum(diag(confusion_matrix)) / sum(confusion_matrix)
print(paste("Độ chính xác:", round(accuracy, 4)))

Đoạn mã này:

  • Sử dụng mô hình của chúng ta để làm dự đoán trên tập dữ liệu iris.
  • Tạo ma trận nhầm lẫn để so sánh dự đoán của chúng ta với loài thực tế.
  • Tính và in độ chính xác của mô hình.

Ma trận nhầm lẫn cho thấy số lượng dự đoán chính xác cho mỗi loài. Các phần tử trên đường chéo đại diện cho các dự đoán chính xác.

Quan trọng của các tính năng

Một trong những điều tuyệt vời về Random Forest là chúng có thể cho chúng ta biết哪些 tính năng (biến) quan trọng nhất để làm dự đoán. Hãy cùng kiểm tra!

# Lấy quan trọng của các tính năng
importance <- importance(rf_model)

# Vẽ quan trọng của các tính năng
varImpPlot(rf_model, main = "Quan trọng của các tính năng")

Đoạn mã này sẽ tạo một biểu đồ cho thấy哪些 tính năng đã hữu ích nhất trong việc làm dự đoán. Đó giống như hỏi rừng của bạn哪些 dấu hiệu đường mòn đã giúp nhất trong việc tìm đường!

Kiểm tra sức mạnh của rừng với Xác minh chéo

Để thực sự kiểm tra xem rừng của chúng ta có tốt trong việc định hướng hay không, chúng ta cần xem nó hoạt động như thế nào trên dữ liệu mà nó chưa từng thấy. Chúng ta có thể làm điều này với xác minh chéo.

# Thiết lập xác minh chéo
ctrl <- trainControl(method = "cv", number = 5)

# Huấn luyện mô hình với xác minh chéo
rf_cv <- train(Species ~ ., data = iris, method = "rf", trControl = ctrl)

# In kết quả
print(rf_cv)

Đoạn mã này:

  • Thiết lập 5 lần xác minh chéo.
  • Huấn luyện một mô hình Random Forest mới với xác minh chéo.
  • In kết quả, bao gồm độ chính xác cho mỗi lần xác minh.

Xác minh chéo giống như gửi người hướng dẫn rừng của chúng ta qua các phần khác nhau của rừng để xem họ hoạt động tốt như thế nào trong các điều kiện khác nhau.

Điều chỉnh rừng: Tìm số lượng cây tối ưu

Giống như trong một khu rừng thực tế, việc có quá ít hoặc quá nhiều cây có thể là vấn đề. Hãy cùng tìm số lượng cây tối ưu cho Random Forest của chúng ta.

# Thiết lập một dãy số lượng cây để thử
tree_nums <- c(100, 200, 500, 1000)

# Tạo một vector rỗng để lưu độ chính xác
accuracies <- vector("numeric", length(tree_nums))

# Lặp qua các số lượng cây khác nhau
for (i in 1:length(tree_nums)) {
rf_model <- randomForest(Species ~ ., data = iris, ntree = tree_nums[i])
predictions <- predict(rf_model, iris)
accuracies[i] <- mean(predictions == iris$Species)
}

# Tạo một khung dữ liệu của kết quả
results <- data.frame(Trees = tree_nums, Accuracy = accuracies)

# In kết quả
print(results)

# Vẽ kết quả
plot(tree_nums, accuracies, type = "b",
xlab = "Số lượng cây", ylab = "Độ chính xác",
main = "Độ chính xác so với số lượng cây")

Đoạn mã này:

  • Thử các số lượng cây khác nhau (100, 200, 500, 1000).
  • Tính độ chính xác cho mỗi số lượng cây.
  • Tạo một biểu đồ cho thấy độ chính xác thay đổi như thế nào với số lượng cây.

Kết luận

Chúc mừng! Bạn đã trồng thành công rừng Random Forest đầu tiên của mình trong R. Chúng ta đã bao gồm các bước cơ bản để tạo một Random Forest, làm dự đoán, đánh giá quan trọng của các tính năng, thực hiện xác minh chéo và điều chỉnh rừng.

Nhớ rằng, giống như các khu rừng thực tế, Random Forest hoạt động tốt nhất khi bạn có sự đa dạng và một lượng dữ liệu lớn. Vậy nên, hãy tiếp tục trồng nhiều rừng hơn nữa, nhà khoa học dữ liệu trẻ!

Dưới đây là bảng tóm tắt các phương thức chính mà chúng ta đã sử dụng:

Phương thức Mô tả
randomForest() Tạo một mô hình Random Forest
predict() Làm dự đoán sử dụng mô hình
importance() Tính quan trọng của các tính năng
varImpPlot() Vẽ quan trọng của các tính năng
train() Huấn luyện mô hình với xác minh chéo
trainControl() Thiết lập các tham số xác minh chéo

Chúc bạn may mắn trong việc trồng rừng và hy vọng dự đoán của bạn luôn chính xác!

Credits: Image by storyset