2013-09-07 3 views
2

이것은 매우 기본적인 질문 인 것 같습니다. 그러나 어디에서나 답을 찾을 수없는 것 같습니다. SVM과 ML에 익숙하지 않고 간단한 연습을하려고하지만 결과가 일치하지 않는 것 같습니다. 저는 R과 함께 e1071을 사용하고 있습니다. 통계 학습 입문 James, Witten, Hastie 및 Tibshirani가 진행했습니다.e1071의 기본 SVM 문제 : 테스트 오류율이 조정 결과와 일치하지 않음

내 질문 : 예측을 사용할 때 분류 오류가없는 것 같지만 조정 기능 결과가 0이 아닌 오류율을 나타내는 이유는 무엇입니까? 내 코드 (나는 세 가지 클래스에서 찾고 있어요는) : 나는 test.pred 볼 때

set.seed(4) 
dat <- data.frame(pop = rnorm(900, c(0,3,6), 1), strat = factor(rep(c(0,1,2), times=300))) 
ind <- sample(1:900) 
train <- dat[ind[1:600],] 
test <- dat[ind[601:900],] 

tune1 <- tune(svm, train.x=train[,1], train.y=train[,2], kernel="radial", ranges=list(cost=10^(-1:2), gamma=c(.5,1,2))) 
svm.tuned <- svm(train[,2]~., data=train, kernel = "radial", cost=10, gamma=1) # I just entered the optimal cost and gamma values returned by tune 
test.pred <- predict(svm.tuned, newdata=data.frame(pop=test[,1],strat=test[,2])) 

그래서 나는 모든 값이 실제 클래스 라벨와 일치하는 것을 알 수있다. 그러나 모델을 튜닝했을 때 에러율은 0.06이었고, 어느 쪽이든 테스트 할 수있는 오류율은 분리 할 수없는 데이터에 대해서는 어리석은 것으로 보입니다. 모든 설명이 도움이 될 것입니다. 고마워요.

답변

4

tune 함수는 10 교차 유효성 검사를 수행합니다.

  • 는 "검증 세트"
  • 9 나머지 선택하고
  • 이 열차 "트레이닝 세트"그들에게 전화를 그들 각각을 선택하고 전화 : 그것은 무작위로 훈련 데이터 (10 개) 부분으로 다음 반복적으로 분할 이 검증에 얼마나 잘 작동 주어진 훈련 세트 매개 변수 및 검사와 SVM은

을 "주름"

  • 이 (10)에 걸쳐 평균 오차를 계산 설정 "곡"기능의 정보는이 평균 오류입니다. 가장 좋은 매개 변수가 선택되면 세트로 모델을 학습합니다. 튜닝에 사용 된 모델보다 정확하게 1/9 커집니다. 결과적으로 특별한 경우 (자주 발생하지는 않음) - "테스트"세트를 완벽하게 예측하는 분류기를 얻습니다. 튜닝 중에 삼각형 모양의 작은 것들 중 일부가 약간의 실수를 한 것입니다 - 이것이 왜 다른 오류에 관한 정보를 얻을 수 있습니다.

    UPDATE

    그것은 당신이 실제로도 모두 입력라벨을에 모델을 훈련하는 것을 .. 지원 벡터를 보유하여

    svm.tuned$SV 
    

    변수 봐 보인다 .

    는 (예상대로, 선형 커널로 ​​할 수없는 완벽하게 분리 된 이러한 데이터) 간단하게 예를

    일부 missclassifications 결과
    svm(train$pop, train$strat, kernel="linear") 
    

    에 대한

    svm(x,y,kernel="...",...) 
    

    을 실행 SVM을 훈련합니다.

    아니면 표기는 프레임 열 스트랫 아닌 인덱스의 이름을 사용해야합니다

    svm.tuned <- svm(strat~., data=train, kernel = "radial", cost=10, gamma=1) 
    

    메모를 사용하여.

    +0

    따라서 이러한 데이터는 분리 할 수 ​​없지만이 모델은 여전히 ​​완벽하게 분류 할 수있었습니다. 그것은 조금 믿기 힘들 것 같습니다. 어쨌든 CV 오류율이 전반적인 교육 오류율보다 항상 더 큰 것처럼 보이는 이유를 정리해 주셔서 감사합니다. – Chaconne

    +2

    분리 할 수 ​​없다는 것은 무엇을 의미합니까? 올바른 매개 변수를 사용하여 가우시안 커널을 사용하고 있습니다 ** 일관된 데이터 세트 ** (일관성 = 다른 레이블과 정확히 같은 두 점이 없습니다). 이것은 무한히 차원적인 특징 공간의 결과입니다. – lejlot

    +0

    정말 고마워요! 이 업데이트로 해결되었습니다. 일관된 데이터 세트를 정의 해 주셔서 감사합니다. 이전에는 그 용어를 듣지 못했습니다. – Chaconne

    관련 문제