2017-11-06 7 views
1

R에서 randomForest 패키지를 사용하여 불균형 데이터를 모델링했습니다. 결과는 상대적 빈도 (2249 (88 %), 318 (12 %))를 갖는 결과 (아니오, 예)를 갖는 2 진 변수입니다.randomForestSRC 샘플링 스키마

불균형 때문에 RF는 처음에는 OOB 오류율이 0 %이고 예는 OOB 오류율이 100 % 인 것으로 예측했습니다. 나는 다음과 같은 코드를 사용하여 가능한 모든 318 개의 결과와 314 개의 임의의 결과를 무작위로 추출하여 RF의 샘플링 디자인을 변경했습니다. OOB 오류율은 아니오의 합리적인 44 %와 예의 12 %로 변경되었습니다.

rf1 <- randomForest(binary.outcome ~ ., data = data, 
        strata = data$binary.outcome, 
        sampsize = c(318,318), replace = TRUE, importance = TRUE, 
        proximity = TRUE, mtry = 8, ntree = 2000) 

누구나이 샘플링 디자인을 반복하는 방법을 알고 있지만 randomForestSRC를 알고 있습니까?

내가

rfsrc.1 <- rfsrc(binary.outcome ~ ., data = data, 
       bootstrap = "by.user", samptype = "swor", 
       samp = c(318,318), replace = TRUE, importance = "permute", 
       proximity = TRUE, mtry = 8, ntree = 2000) 

내가 오류 메시지를 얻을 크랑의 PDF 사양에서 밖으로 작동하는 데 문제가 있어요 "의 적용 (SAMP, 2, 합계) : (x는) 긍정적 인 길이를 가지고 있어야 어두워"

내가 원하는 것을 얻기 위해 samp와 bootstrap을 조작하는 방법을 알아낼 수 없습니다.

답변

1

우리의 문서는 아마 명확하게 수

돈을 주셔서 감사합니다. rfsrc() 호출에서 case.wt 옵션을 사용해야합니다. 부트 스트랩, samptype 및 samp는 기본값으로 두십시오. case.wt는 차원 n의 벡터 여야합니다. 여기서 n은 처리 된 데이터 집합의 사례 수와 같습니다. 귀하의 상황에서 n = 2567 누락 된 데이터가 없다고 가정합니다. 소수 종별 사례는 1/318의 가중치를 가져야하며, 대다수의 경우는 1/2249의 가중치를 가져야합니다. 벡터는 내부적으로 표준화되며 모든 부트 스트랩은 각 클래스의 동일한 양을 갖습니다 (의도 인 경우).

Google은 소수 2 등급 문제와 관련된 g 평균이라는 새로운 성능 측정 방법을 개발 중입니다. 그것은 또한

https://github.com/kogalur/randomForestSRC

에 곧 베타 빌드에서 발표 될 예정이다, 우리는 노드에서 해당 클래스의 비율이보다 큰 경우 소수 클래스가 승리 할 수있는 옵션을 임계 값을 구현한다 그 현재 승리를 결정하는 기본 임계 값 50 %가 아니라 데이터 세트의 전체 비율. 귀하의 상황과 관련이 있으므로이 기능을 사용할 수있게되면 알려 드리겠습니다.

+0

감사합니다. Udaya - 내 질문에 대한 답변입니다. 또한 특정 하위 그룹이있는 다른 상황으로도 일반화됩니다. – user2888990