Làm thế nào để có được ranh giới quyết định từ SVM tuyến tính trong R?


9

Tôi đang cần một gói có thể cho tôi phương trình cho mô hình SVM tuyến tính. Hiện tại tôi đang sử dụng e1071 như vậy:

library(e1071)
m = svm(data, labels, type='C', kernel='linear', cost=cost, probability=FALSE, scale=scale)
w = t(m$coefs) %*% data[m$index,]  #Weight vector
b = -model$rho #Offset

Tuy nhiên, tôi không chắc chắn làm thế nào để e1071::svm()chọn các lớp tích cực và tiêu cực, vì vậy tôi nghĩ rằng điều này có thể làm hỏng với các bộ dữ liệu khác nhau. Bất cứ ai cũng có thể xác nhận làm thế nào chức năng này quyết định lớp nào là tích cực và cái nào là tiêu cực?

Ngoài ra, có một gói tốt hơn cho điều này?


1
Tôi đã cung cấp một số thông tin liên quan đến điều đó trên một luồng liên quan: Tính toán ranh giới quyết định của mô hình SVM tuyến tính .
chl

Câu trả lời:


1

xd

d <- sum(w * x) + b

d>0x+11newdata

predict(m, newdata)

hoặc là

predict(m, newdata, decision.values = TRUE)

Hãy thận trọng khi sử dụng SVM từ gói e1071, xem Sự cố với e1071 libsvm? câu hỏi Một số gói SVM khác cho R là kernlab, klaR và svmpath, xem tổng quan này: Support Vector Machines in R của A. Karatzoglou và D. Meyer.


2
Cảm ơn, nhưng câu hỏi của tôi là về cách tôi có được các giá trị w và b. Ngoài ra, về giá trị quyết định, tôi đang hỏi làm thế nào e1071 quyết định nhãn nào là dương và âm đối với dữ liệu huấn luyện khi bạn vượt qua các yếu tố đó.
tái lập

1
Tôi không quen thuộc với e1071, nhưng tôi biết SVM. Cho dù một lớp được coi là tích cực hay tiêu cực sẽ không ảnh hưởng đến kết quả. Bạn có thể lấy bất kỳ tập dữ liệu nào và trao đổi nhãn lớp và bạn vẫn sẽ nhận được kết quả tương tự về mặt phân loại điểm kiểm tra (cho cùng tham số). Tích cực và tiêu cực được sử dụng để xác định xem trường hợp rơi vào bên phải của ranh giới quyết định.
karothy
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.