Tính toán ranh giới quyết định của mô hình SVM tuyến tính


19

Với các vectơ hỗ trợ của một SVM tuyến tính, làm thế nào tôi có thể tính toán phương trình của ranh giới quyết định?


w = tổng trên i (ai ti xi). bạn sẽ phải giảm thiểu độ trễ để tìm giá trị của bội số, ai. tôi tự hỏi làm thế nào bạn có các vectơ hỗ trợ? quá trình tương tự cũng sẽ cung cấp cho bạn giá trị của ai.
euphoria83

2
Tôi chưa thể nhận xét nhưng tôi nghĩ trong câu trả lời được chấp nhận không nên đưa ra dòng quyết định và lề là: abline (b / w [2], - w [1] / w [2]) abline ((b + 1) / w [2], - w [1] / w [2], lty = 2) abline ((b-1) / w [2], - w [1] / w [2], lty = 2) kể từ khi abline mất đầu vào như đánh chặn và độ dốc tương ứng? wx-b = 0 có nghĩa là: w1.x1 + w2.x2 = b ngụ ý (vì x2 là abline "y") (b / w [2], -w [1] / w [2]) Xin lỗi điều này là một bài viết cũ nhưng tôi nghĩ tôi muốn hỏi.
Nepze Tyson

Chào mừng đến với trang web, @Nepze Tyson. Đây không phải là một câu trả lời cho câu hỏi của OP. Vui lòng chỉ sử dụng trường "Câu trả lời của bạn" để cung cấp câu trả lời. Nếu bạn có câu hỏi của riêng mình, nhấp vào [ASK QUESTION]đầu trang và hỏi nó ở đó, sau đó chúng tôi có thể giúp bạn đúng cách. Vì bạn là người mới ở đây, bạn có thể muốn đọc trang tham quan của chúng tôi , nơi chứa thông tin cho người dùng mới.
gung - Phục hồi Monica

@Nepze Cảm ơn bạn đã nhận xét nhận thức của bạn và thời gian và sự chú ý bạn đã thực hiện để làm cho nó. Tôi hy vọng nó sẽ dẫn đến một câu trả lời được cải thiện ở đây. Tôi cũng muốn tham gia chào mừng bạn đến với trang web của chúng tôi.
whuber

Câu trả lời:


29

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.

văn bản thay thế

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à:

văn bản thay thế


4
Đẹp, chính xác những gì tôi đang tìm kiếm. Hai dòng: w <- colSums (coef (svp) [[1]] * x [unlist (alphaindex (svp)),]) b <- b (svp) là một ơn trời. Cảm ơn bạn!
dshin

@chi: thật thú vị khi xem câu trả lời của tôi về "cách tính ranh giới quyết định của một SVM": stats.stackexchange.com/questions/164935/

4

Đây là một tổ hợp tuyến tính của các vectơ hỗ trợ trong đó các hệ số được cho bởi các số nhân Lagrange tương ứng với các vectơ hỗ trợ này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.