2016-10-28 3 views
0

R에서 제공하는 Carseats 데이터 세트의 잔차를 교정하려고합니다. 임의의 포레스트로 시작하여 lamda = 0.1 인 지원 벡터 기계로 잔차를 수정 한 다음 사용하여 잔차를 수정합니다. 람다 = 0.1 인 KNN. 각 단계에서 5 배 CV를 사용하여 임의의 포레스트에 대한 매개 변수 mtry (3,5,10), svm의 감마 (0.01, .1,1,10) 및 k (1,5,10, 20). 나는 이것에 아주 새롭, 나는 문제를 시도했다, 그러나 나는 나가이 권리의 무엇이든을 한 경우에 정직하게 모른다. 여기에 내가 무엇을 가지고 있습니다 :R : 잔차 수정

set.seed (1) 

##Random forest 
#mtry=3 
rf3 <- randomForest(Sales ~ ., 
data = Carseats, mtry = 3, ntree = 500, 
    importance = TRUE) 

#mtry=5 
rf5 <- randomForest(Sales ~ ., 
data = Carseats, mtry = 5, ntree = 500, 
    importance = TRUE) 

#mtry=10 
rf10 <- randomForest(Sales ~ ., 
data = Carseats, mtry = 10, ntree = 500, 
    importance = TRUE) 

#cross validation to pick best mtry -- am getting an error 
library(tree) 
cv.carseats = rfcv(trainx=Carseats[,-11], trainy=Carseats[,-11],cv.fold=5) 
cv.carseats 

##SVM 
library(e1071) 
f = svm(Sales~.,data=Carseats) 

#gamma = 0.01 
svm(Sales~., data=Carseats, type = NULL, kernel = "polynomial", degree = 3, 
gamma = if (is.vector(x)) .01 
else 1/ncol(x), 
coef0 = 0, cost = 1) 

#gamma = 0.1 
svm(Sales~., data=Carseats, type = NULL, kernel = "polynomial", degree = 3, 
gamma = if (is.vector(x)) 0.1 
else 1/ncol(x), 
coef0 = 0, cost = 1) 

#gamma = 1 
svm(Sales~., data=Carseats, type = NULL, kernel = "polynomial", degree = 3, 
gamma = if (is.vector(x)) 1 
else 1/ncol(x), 
coef0 = 0, cost = 1) 

#gamma = 10 
svm(Sales~., data=Carseats, type = NULL, kernel = "polynomial", degree = 3, 
gamma = if (is.vector(x)) 10 
else 1/ncol(x), 
coef0 = 0, cost = 1) 

#cross validation to pick best gamma 
tune.out=tune(svm,Sales~.,data=Carseats,kernel ="polynomial", 
ranges =list(cost=c(0.01,0.1,1,10))) 

모든 의견을 감사드립니다!

답변

0

우선 문제는 코딩 문제보다는 실험적인 디자인 인 것처럼 스택 오버플로가 아닌 교차 유효성 검사에 속합니다.

둘째, 다양한 모델을 사용하여 기계 학습을 수행하려는 경우 caret을 확인하는 것이 좋습니다. 교차 검증 및 다른 많은 매개 변수 옵션을 사용하여 모델을 교육하고 테스트하기 위해 많은 인프라가 내장되어 있으므로 실험 설계에 많은 시간을 절약 할 수 있습니다. 이것은 아마도 당신이 가진 대부분의 문제를 해결할 것입니다.

셋째, 나는 SVM 및 KNN 모델에 대해 "lamda = 0.1"을 사용할 때 무슨 말을하는지 알지 못합니다. 이 두 모델 모두 lambda을 매개 변수로 사용하지 않으므로 어떤 작업을 수행하는지 잘 모릅니다. 이것이 내가 익숙하지 않은 것일 수도 있지만, 그렇게된다면, 설명이나 하나에 대한 링크를 정당화하는 것은 충분히 드문 일입니다.

마지막으로 하나의 모델을 사용하여 다른 모델의 잔차를 모델링하는 것은 흔한 일은 아니지만 나머지 모델을 세 번째 모델로 모델링하는 것은 약간의 기계에서 Inception을 배우게됩니다. 거의 확실하게 데이터를 너무 많이 맞추기 시작할 것입니다. 첫 번째 임의의 포리 스트 모델의 결과가 만족스럽지 않다면 잔여 물을 맞추려하지 말고 Adaboost과 같은 Boosted Decision Tree을 사용하는 것이 좋습니다 (참고 : 다른 모델에서도 부스팅이 가능함). 그냥 가장 일반적인). 이러한 모델은 의사 결정 트리와 같은 기능을하지만 더 많은 나무가 만들어지면 다른 나무에 잘못 분류 된 표본에서 더 강하게 샘플링하여 일반적으로 어려운 표본에 초점을 맞춤으로써보다 강력한 분류자를 만듭니다. 이 때문에 그들은 과도하게 걸리기 쉽지만, 대부분의 구현에는이를 피하는 도구가 포함됩니다.

+0

고맙습니다. 교차 인증을받지 못했습니다. – mapleleaf

관련 문제