Các yếu tố của học thống kê , từ Hastie và cộng sự, có một chương hoàn chỉnh về phân loại vectơ hỗ trợ và các SVM (trong trường hợp của bạn, bắt đầu trang 418 trên phiên bản 2). Một hướng dẫn tốt khác là Support Vector Machines in R , David Meyer.
Trừ khi tôi hiểu nhầm câu hỏi của bạn, ranh giới quyết định (hoặc siêu phẳng) được xác định bởi (với và thuật ngữ chặn) hoặc như @ebony đã nói một sự kết hợp tuyến tính của các vectơ hỗ trợ. Biên độ sau đó là, theo sau Hastie et al. ký hiệu.xTβ+β0=0∥β∥=1β02/∥β∥
Từ sự giúp đỡ trực tuyến của ksvm()
trong kernlab gói R, nhưng cũng thấy kernlab - An trọn gói S4 cho Kernel Methods in R , đây là một ví dụ đồ chơi:
set.seed(101)
x <- rbind(matrix(rnorm(120),,2),matrix(rnorm(120,mean=3),,2))
y <- matrix(c(rep(1,60),rep(-1,60)))
svp <- ksvm(x,y,type="C-svc")
plot(svp,data=x)
Lưu ý rằng để rõ ràng, chúng tôi không xem xét các mẫu thử nghiệm và đào tạo. Kết quả được hiển thị bên dưới, trong đó màu bóng giúp hiển thị các giá trị quyết định được trang bị; các giá trị xung quanh 0 nằm trên ranh giới quyết định.
Gọi attributes(svp)
cho bạn các thuộc tính mà bạn có thể truy cập, ví dụ:
alpha(svp) # support vectors whose indices may be
# found with alphaindex(svp)
b(svp) # (negative) intercept
Vì vậy, để hiển thị ranh giới quyết định, với lề tương ứng, hãy thử các cách sau (trong không gian được định cỡ lại), phần lớn được lấy cảm hứng từ một hướng dẫn về SVM được thực hiện trước đây bởi Jean-Philippe Vert :
plot(scale(x), col=y+2, pch=y+2, xlab="", ylab="")
w <- colSums(coef(svp)[[1]] * x[unlist(alphaindex(svp)),])
b <- b(svp)
abline(b/w[1],-w[2]/w[1])
abline((b+1)/w[1],-w[2]/w[1],lty=2)
abline((b-1)/w[1],-w[2]/w[1],lty=2)
Và đây là: