강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

ckddn60님의 프로필 이미지
ckddn60

작성한 질문수

빅데이터분석기사 실기대비 (R 활용)

분류모델 구축

rpart나 svm 중 높은 Accuracy값 찾기가 나온다면...

작성

·

229

0

rpart나 svm 중 높은 Accuracy값을 가지는 내용을 작성시.. rpart는 강의 내용처럼 하면되는데 svm은 model1<-train(pre~., data=train, method='rpart') model2<-train(pre~., data=train, method='svm')
에러: Model svm is not in caret's built-in library
위와같이 진행하면 오류가 발생됩니다. 그래서 다시 아래와 같이 진행한 후 model2<-svm(pre~., data=train, type='C-classification') p1<-predict(model1, test, type='prob') p2<-predict(model2, test, type='prob') auc(test$pre, p1[,2]) auc(test$pre, p2[,2]) <= 오류발생됩니다.이유가 궁금합니다. `[.default`(p2, , 1)에서 다음과 같은 에러가 발생했습니다:incorrect number of dimensions > 이런경우 어떻게 해결할지 문의합니다.
 

답변 1

0

companionclub님의 프로필 이미지
companionclub
지식공유자

 

안녕하세요. SVM은 아래 두 가지 이유로 사용을 추천드리지 않습니다.

1) caret package외에 추가 package를 설치해야 함

2) 파라미터 튜닝이 필요함

3) 데이터셋이 적을 경우 과적합이 일어나기 쉬움

 

아마 위의 스크립트를 보면 e1071 package를 설치하신 것으로 보입니다.

그럴경우 

library(e1071)

model3 <- svm(y ~., data = train, type = "C-classification", probability = T)

svm.pred <- predict(model3, test, probability = T)

p4 <- attr(svm.pred, "probabilities")

auc(test$y, p4[,2]) 

 

위의 방법으로 구현이 가능합니다. svm은 별도로 확률에 대한 파라미터를 지정해주어야 합니다.

혹은 caret에서도 지원을 하긴하는데 아래 방법을 활용할 수도 있습니다.

 

library(e1071)

model5 <- train(y~. , data = train, method = 'svmLinear2', probability = T)

p5 <-  predict(model5, test, type = 'prob')

auc(test$y, p5[,2])

 

다만, 말씀드린 이유로 실제 시험 때 추천되는 알고리즘은 아니니 그 점 유념을 부탁드립니다.

감사합니다.

ckddn60님의 프로필 이미지
ckddn60

작성한 질문수

질문하기