mô hình SVM với kernel RBF trong R

Trong ví dụ này, chúng ta sử dụng mô hình SVM với kernel RBF để phân loại hai lớp dữ liệu giả dạng vòng tròn không tuyến tính, thể hiện rõ khả năng xử lý các bài toán có biên quyết định phức tạp của kernel SVM.


🛠 Cài đặt & Thư viện

# install.packages("e1071")
library(e1071)    # Dùng để huấn luyện mô hình SVM
library(ggplot2)  # Dùng để vẽ đồ thị

🎲 Tạo dữ liệu giả lập

set.seed(42)      # Đặt seed để kết quả tái tạo được
n <- 300          # Số điểm dữ liệu
theta <- runif(n, 0, 2*pi)  # Góc ngẫu nhiên
r <- c(rep(0.3, n/2), rep(1, n/2)) + rnorm(n, 0, 0.1)  # Bán kính với nhiễu
x <- r * cos(theta)
y <- r * sin(theta)
class <- factor(c(rep(1, n/2), rep(0, n/2)))  # Hai lớp: 0 và 1

📌 Tạo dữ liệu theo dạng hình tròn đồng tâm (ring-shaped) – một lớp ở gần tâm, lớp kia ở xa hơn.


📦 Tạo dataframe và chia tập train/test

data <- data.frame(x = x, y = y, class = class)
train_index <- sample(1:n, size = 0.7*n)      # 70% dữ liệu để huấn luyện
train_data <- data[train_index, ]
test_data <- data[-train_index, ]

🤖 Huấn luyện mô hình SVM với kernel RBF (Radial Basis Function)

model <- svm(class ~ ., data = train_data, kernel = "radial")

✅ Kernel RBF dùng để xử lý các bài toán phân loại phi tuyến.


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

pred <- predict(model, test_data)
accuracy <- mean(pred == test_data$class)
print(paste("Accuracy:", round(accuracy, 2)))

🎯 So sánh kết quả dự đoán với nhãn thực tế → tính độ chính xác.


📊 Trực quan hóa phân loại của mô hình

ggplot(test_data, aes(x = x, y = y, color = pred)) +
  geom_point(size = 2) +
  ggtitle("SVM với kernel RBF - Phân loại") +
  theme_minimal()

📌 Biểu đồ hiển thị phân loại dựa trên mô hình SVM với màu sắc biểu diễn nhãn được dự đoán.


Chạy code trên Colab

Để 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 !!