임의의 숲에서 과적 합을 피하는 방법?


11
  1. 임의의 포리스트에서 과적 합을 피하고 싶습니다. 이와 관련하여 mtry, nodesize 및 maxnodes 등을 사용하려고합니다. 이러한 매개 변수의 값을 선택하도록 도와 주시겠습니까? R을 사용하고 있습니다.

  2. 또한 가능한 경우 임의 포리스트 (R)에서 k- 폴드 크로스 유효성 검사를 사용하는 방법을 알려주십시오.

답변:


7

다른 모델에 비해 랜덤 포레스트는 과적 합 가능성이 적지 만 여전히 피하기 위해 명시 적으로 노력하고 싶은 것입니다. 튜닝 모델 파라미터는 과적 합을 피하는 요소 중 하나 일 뿐이지 만 유일한 것은 아닙니다. 실제로 나는 당신의 훈련 기능이 특히 랜덤 포레스트에서 모델 매개 변수보다 과적 합을 일으킬 가능성이 더 높다고 말할 것입니다. 따라서 열쇠가 실제로 다른 것보다 과적 합을 확인하기 위해 모델을 평가하는 신뢰할 수있는 방법을 가지고 있다고 생각합니다. 이는 두 번째 질문으로 이어집니다.

위에서 언급했듯이 교차 유효성 검사를 실행하면 과적 합을 피할 수 있습니다. CV 결과를 기반으로 가장 적합한 모델을 선택하면 과적 합되지 않은 모델로 이어질 수 있으며 이는 반드시 가방 오류와 같은 경우가 아닙니다. R에서 CV를 실행하는 가장 쉬운 방법은 caret패키지를 사용하는 것입니다. 간단한 예는 다음과 같습니다.

> library(caret)
> 
> data(iris)
> 
> tr <- trainControl(method = "cv", number = 5)
> 
> train(Species ~ .,data=iris,method="rf",trControl= tr)
Random Forest 

150 samples
  4 predictor
  3 classes: 'setosa', 'versicolor', 'virginica' 

No pre-processing
Resampling: Cross-Validated (5 fold) 

Summary of sample sizes: 120, 120, 120, 120, 120 

Resampling results across tuning parameters:

  mtry  Accuracy  Kappa  Accuracy SD  Kappa SD  
  2     0.96      0.94   0.04346135   0.06519202
  3     0.96      0.94   0.04346135   0.06519202
  4     0.96      0.94   0.04346135   0.06519202

Accuracy was used to select the optimal model using  the largest value.
The final value used for the model was mtry = 2. 

답장과 조언에 감사드립니다. randomForest 알고리즘을 사용하여 중요한 변수를 선택하는 것과 비교할 때 기능 선택에 캐럿 패키지를 사용하는 것이 얼마나 다른지 알고 싶습니까?
Arun

게시해야 할 다른 질문처럼 들립니다. 캐럿에서 선택한 알고리즘을 사용하여 재귀 기능 선택과 같은 것을 실행한다는 점에서 차이가 큽니다.
David

@David "포장 오류와 같은 경우가 반드시있는 것은 아닙니다"는 무엇을 의미합니까? 백에서 예상치 못한 것이 과적 합을 피하는 좋은 방법이 아님을 의미합니까?
피에르

5

@ xof6은 모델의 깊이가 높을수록 과적 합되는 경향이 있다는 점에서 정확하지만 유용한 매개 변수를 더 추가하고 싶었습니다. R에 어떤 패키지를 사용하고 있는지 전혀 알지 못하며 R에 익숙하지 않지만 이러한 매개 변수의 대응 요소가 구현되어 있어야한다고 생각합니다.

나무 수-이 숫자가 클수록 숲이 과적 합 될 가능성이 줄어 듭니다. 즉, 각 의사 결정 트리가 교육 데이터의 일부 측면을 학습할수록 더 많은 옵션을 선택할 수 있습니다. 기능 수-이 숫자는 각 개별 트리가 학습하는 기능 수를 나타냅니다. 이 수가 증가함에 따라 나무는 점점 더 복잡해 지므로 테스트 데이터에는 없을 수있는 패턴을 학습하고 있습니다. 올바른 가치를 찾기 위해서는 약간의 실험이 필요하지만 기계 학습도 마찬가지입니다. 우리가 언급했듯이 일반적인 깊이로 실험하십시오!


4

여기 stackexchange에 그에 좋은 링크입니다 /stats/111968/random-forest-how-to-handle-overfitting 그러나 내 일반적인 경험 모델이 더는 경향이있다 더 깊이가가 과적 합하다.


이것은 단일 트리 분류기로 의미가 있습니다. 그러나이 포럼에서 임의의 포리스트가 과적 합으로부터 보호되고 나무가 완전히 자라야한다는 것을 읽었습니다 (즉, 분류를 위해 노드 크기 = 1).
Seanosapien

0

mtry기차 데이터 세트의 오류가 증가 할 때까지 항상 감소한 다음 기차와 데이터 세트의 오류 차이가 줄어들 때까지 노드 크기와 깊이를 줄입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.