2014-03-27 5 views
1

caret 패키지의 저자가 "Applied Predictive Modeling"이라는 책을 검토 중입니다.멀티 코어를 사용하여 캐럿 패키지의 성능이 크게 저하됨

svm에 대한 교육의 첫 번째 예는 64 비트 i7 16GB xubuntu 데스크탑에서 실행하는 데 몇 시간이 걸립니다. [4 시간 후에 포기했습니다.] 이것은 "장난감"데이터 세트 [800 행, 42 변수]이기 때문에 합리적인 시간 내에이를 실행하는 방법이 틀림 없습니다.

library(caret) 
data(GermanCredit) 

library(doMC) 
registerDoMC(8) 

GermanCredit <- GermanCredit[, -nearZeroVar(GermanCredit)] 
GermanCredit$CheckingAccountStatus.lt.0 <- NULL 
GermanCredit$SavingsAccountBonds.lt.100 <- NULL 
GermanCredit$EmploymentDuration.lt.1 <- NULL 
GermanCredit$EmploymentDuration.Unemployed <- NULL 
GermanCredit$Personal.Male.Married.Widowed <- NULL 
GermanCredit$Property.Unknown <- NULL 
GermanCredit$Housing.ForFree <- NULL 

## Split the data into training (80%) and test sets (20%) 
set.seed(100) 
inTrain <- createDataPartition(GermanCredit$Class, p = .8)[[1]] 
GermanCreditTrain <- GermanCredit[ inTrain, ] 
GermanCreditTest <- GermanCredit[-inTrain, ] 

set.seed(1056) 
svmFit = train(Class ~ ., 
      data = GermanCreditTrain, 
      method = "svmRadial") 

질문 :이 코드가 맞으면 어떻게 합리적인 시간 내에 실행할 수 있습니까?

+2

무엇이 문제입니까? – zx8754

+0

작은 데이터 세트의 런타임에 문제가 있다는 사실을보다 명확하게 설명하도록 수정되었습니다. – Henk

+2

그 문제가 없습니다. 내가 그것을 실행할 때 나는'svmFit $ times $를 얻는다. [3]'는 5.36s와 8.602s가된다. 'top'을보고 각 작업자가 실행되는 동안 VSIZE가 무엇인지 확인할 수 있습니까? 멀티 코어를 사용하지 않고 VSIZE = 2547M (캐럿 버전 6.0-24)입니다. – topepo

답변

0

Linux에서 svmRadial의 엄청난 성능 저하가 발생했습니다. 나에 대한 이슈도 멀티 코어 DoMC을 사용하는 것으로 나타났습니다. svmRadial은 단일 코어에서 정상적으로 실행됩니다. kernlab 함수는 내가 본 적이있는이 동작을 나타내는 caret의 유일한 함수입니다. SVM 기능을 작동시키기 위해 전체 스크립트에 대해 멀티 코어를 삭제해야하기 때문에 매우 실망 스럽습니다.

관련 문제