R randomForest에서 교체를 통한 샘플링


11

randomForest 구현은 대체로 샘플링 할 때도 관측치 수를 넘어서 샘플링을 허용하지 않습니다. 왜 이런거야?

잘 작동합니다.

rf <- randomForest(Species ~ ., iris, sampsize=c(1, 1, 1), replace=TRUE)
rf <- randomForest(Species ~ ., iris, sampsize=3, replace=TRUE)

내가하고 싶은 것 :

rf <- randomForest(Species ~ ., iris, sampsize=c(51, 1, 1), replace=TRUE)
Error in randomForest.default(m, y, ...) : 
  sampsize can not be larger than class frequency

계층화 된 샘플이없는 유사한 오류 :

rf <- randomForest(Species ~ ., iris, sampsize=151, replace=TRUE)
Error in randomForest.default(m, y, ...) : sampsize too large

두 경우 모두 replace = TRUE가 주어질 때 부트 스트랩 샘플을 가져 오는 방법을 기대했기 때문에이 한계를 기대하지 않았습니다.

저의 목표는 비교적 희귀 한 클래스에서 충분히 큰 샘플을 추출하기 위해 이것을 계층화 된 샘플링 옵션과 함께 사용하는 것입니다.


실제 이유가 무엇인지 확실하지 않지만 부트 스트랩 샘플은 일반적으로 원래 샘플과 크기가 동일 하므로이 동작은 부트 스트랩 샘플을 요구한다고 주장하는 것과 완벽하게 일치합니다.
joran

1
글쎄, 그것은 문서의 선택이 아니라 내 말의 선택이었다. 그러나 당신의 요점은 잘 이해되었다. 그래도 배포판의 균형을 다시 잡으려고 할 때 불편한 점이 있는데 이것이 왜 적용에 도움이되는 제한이되는지 이유를 모르겠습니다.
cohoz December

답변:


5

이것은 대답하지 않지만이 문제를 해결하기 위해 훈련 데이터에서 희귀 한 클래스의 데이터를 복제하고 결과의 계층화 된 샘플을 가져올 수 있습니다.

"자연적인"오버 샘플링과 비교하여이 접근 방식의 두 가지 단점 :

  • 가방 밖 견적은 더 이상 의미가 없습니다
  • 객체를 저장하고 임의의 샘플을 채취하려면 더 많은 리소스가 필요합니다

그러나 원하는 클래스 비율로 숲을 만들 수 있습니다.


4

나는 똑같은 질문을 가지고 있으며 randomForest 에 대한 변경 로그 에서 이것을 발견했습니다 .

4.1-0의 변경 사항 :

  • randomForest ()에서, sampsize가 주어지면, 샘플링은 클래스별로 계층화되는 것 외에도 교체없이 수행됩니다. 따라서 sampsize는 클래스 주파수보다 클 수 없습니다.

replace = TRUE를 수동으로 설정해도이를 무시하지 않는 것 같습니다.


2
replace 매개 변수가 단순히 무시되는 경우가 있지만 나중에 해당 changelog에서 변경 될 수 있습니다. 4.5-12의 변경 사항 : * 'sampsize'와 함께 샘플링을 허용하는 randomForest에 'strata'인수를 추가했습니다 (또는 strata 변수 (클래스 변수 이외의 것일 수 있음)에 따라 대체하지 않음). 현재 분류에서만 작동합니다.
cohoz

예를 들어, 동일한 오류가 다음을 통해 생성됩니다.rf <- randomForest(Species ~ ., iris, sampsize=c(51, 1, 1), strata=iris$Species, replace=TRUE)
cohoz

또한 현재 버전 (4.6-7)의 일부 테스트 사례는 샘플을 교체하여 채취했음을 나타내므로 설명이 아닙니다.
cohoz

1
randomForest를 실행하기 전에 오버 샘플링을 마쳤습니다. 이 방법론에 문제가있을 수 있지만 결과를 테스트 할 때 작동하는 것 같습니다.
hgcrpd

1
아니요, 이것이 내가 사용하는 해결 방법이며 원하는 것을 정확하게 수행합니다. 특히 상대적으로 드문 클래스의 유스 케이스의 경우 훈련 세트에서 해당 클래스의 데이터를 복제하고 계층화 된 샘플을 가져 오기 전에 제대로 작동하며 추가 메모리 / CPU 측면에서 "비용"이 너무 높지 않습니다. 비록 그것이 실제로는 아니지만 "답변"을
쓸만한
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.