องค์ประกอบของการเรียนรู้ทางสถิติจาก Hastie et al., มีบทที่สมบูรณ์เกี่ยวกับการสนับสนุนลักษณนามเวกเตอร์และ SVMs (ในกรณีของคุณเริ่มต้นหน้า 418 ในฉบับที่ 2) อีกบทช่วยสอนที่ดีคือการสนับสนุน Vector Machines ใน Rโดย David Meyer
หากฉันเข้าใจผิดคำถามของคุณขอบเขตการตัดสินใจ (หรือไฮเปอร์เพลน) ถูกกำหนดโดย (ด้วยและคำว่าดัก) หรือตามที่ @ebony กล่าว การรวมกันเชิงเส้นของเวกเตอร์การสนับสนุน มาร์จิ้นจะเท่ากับตาม Hastie และคณะ ข้อความxTβ+ β0= 0∥ บีตา∥ = 1β02 / ∥ บีตา∥
จากความช่วยเหลือออนไลน์ksvm()
ในแพ็คเกจ kernlab R แต่ดูkernlab - แพคเกจ S4 สำหรับวิธีเคอร์เนลใน Rนี่คือตัวอย่างของเล่น:
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)
โปรดทราบว่าเพื่อความชัดเจนเราจะไม่พิจารณาตัวอย่างรถไฟและทดสอบ ผลลัพธ์แสดงไว้ด้านล่างซึ่งการแรเงาสีช่วยให้เห็นภาพค่าการตัดสินใจ ค่าประมาณ 0 อยู่ในขอบเขตการตัดสินใจ
การโทรattributes(svp)
ให้คุณสมบัติที่คุณสามารถเข้าถึงได้เช่น
alpha(svp) # support vectors whose indices may be
# found with alphaindex(svp)
b(svp) # (negative) intercept
ดังนั้นเพื่อแสดงขอบเขตการตัดสินใจโดยมีระยะห่างที่สอดคล้องกันให้ลองทำตาม (ในพื้นที่ที่มีการปรับลดขนาด) ซึ่งได้รับแรงบันดาลใจส่วนใหญ่จากการสอนเกี่ยวกับ SVM ซึ่ง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)
และนี่คือ: