R의 선형 SVM에서 의사 결정 경계를 얻는 방법은 무엇입니까?


9

선형 SVM 모델에 대한 방정식을 줄 수있는 패키지가 필요합니다. 현재 나는 다음 과 같이 e1071을 사용 하고 있습니다 :

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

그러나 e1071::svm()긍정적 클래스와 부정적인 클래스를 선택 하는 방법을 잘 모르겠 으므로 다른 데이터 세트로 인해 문제가 발생할 수 있다고 생각합니다. 누구 든지이 함수가 어떤 클래스가 긍정적이고 어떤 클래스가 부정적인지를 결정하는지 확인할 수 있습니까?

또한 더 좋은 패키지가 있습니까?


1
관련 스레드에서 이에 관한 정보를 제공했습니다 . 선형 SVM 모델의 결정 경계 계산 .
chl

답변:


1

데이터 포인트 x SVM은 의사 결정 가치를 계산합니다 d 다음과 같은 방식으로 :

d <- sum(w * x) + b

만약 d>0 그런 다음 라벨 x 이다 +1그렇지 않으면 1. 다음과 같이 newdata말 하여 데이터 매트릭스 에 대한 레이블 또는 결정 값을 얻을 수도 있습니다.

predict(m, newdata)

또는

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

패키지 e1071에서 SVM을 사용할 때는주의해야합니다. e1071 libsvm 문제를 참조하십시오 . 질문. R에 대한 다른 몇 가지 SVM 패키지는 kernlab, klaR 및 svmpath 입니다. A. Karatzoglou 및 D. Meyer의 R의 벡터 시스템 지원 개요를 참조하십시오 .


2
고마워하지만 내 질문은 w와 b 값을 얻는 방법에 관한 것입니다. 또한 의사 결정 값에 대해서는 e1071이 요인을 전달할 때 교육 데이터에 어떤 레이블이 긍정적이고 부정적인지를 결정 하는지를 묻습니다.
reisner

1
e1071에 익숙하지 않지만 SVM을 알고 있습니다. 클래스가 긍정적인지 부정적인지 여부는 결과에 영향을 미치지 않습니다. 모든 데이터 세트를 가져 와서 클래스 레이블을 교환 할 수 있으며 동일한 매개 변수에 대해 테스트 포인트 분류 측면에서 동일한 결과를 가져와야합니다. 긍정과 부정은 인스턴스가 의사 결정 경계의 오른쪽에 있는지 판별하는 데 사용됩니다.
karenu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.