2016-11-12 2 views
5

scikit-learn 패키지의 최신 버전에서 BRF (Balanced Random Forest) 구현이 있는지 궁금합니다. BRF는 불균형 한 데이터의 경우에 사용됩니다. 그것은 정상적인 RF로 작동하지만 각 부트 스트랩 반복에 대해 언더 샘플링으로 보급 클래스의 균형을 맞 춥니 다. 예를 들어, 두 개의 클래스 N0 = 100 및 N1 = 30 개의 인스턴스가 주어진다면 무작위 샘플링마다 첫 번째 클래스에서 30 개의 인스턴스와 두 번째 클래스에서 동일한 양의 인스턴스가 그려집니다 (즉, 대체). 균형 잡힌 데이터 세트. 자세한 내용은 please refer to this paper.scikit-learn (python)의 균형 임의의 숲

RandomForestClassifier()에는 'balanced'로 설정할 수있는 'class_weight ='매개 변수가 있지만 부트 스랩 된 학습 샘플의 다운 샘플링과 관련이 있는지 잘 모르겠습니다.

+0

솔루션을 찾았습니까? – oliversm

+0

@oliversm, 불행히도 아닙니다. 나는이 문제를 떠났다. 아마도 scikit learn forum에서 문제를 열어 솔루션을 제안해야합니다. 그게 좋을거야. –

+0

Brieman이 제안한 방법은 이미 Scikit에서 제공하는 것을 사용하여 구현하기 쉽습니다. 간과 된 것 같지만 수치 스럽습니다. – oliversm

답변

4

나는 이것이 10 개월 늦다는 것을 알고 있지만, 당신이 찾고있는 것은 BalancedBaggingClassifier에서 imblearn까지라고 생각합니다.

imblearn.ensemble.BalancedBaggingClassifier(base_estimator=None, 
n_estimators=10, max_samples=1.0, max_features=1.0, bootstrap=True, 
bootstrap_features=False, oob_score=False, warm_start=False, ratio='auto', 
replacement=False, n_jobs=1, random_state=None, verbose=0) 

효과적으로 당신이 할 수있는 무엇을 연속하여 대부분의 클래스 undersample 상단에 추정을 피팅 할 때입니다. scikit-learn에서 임의의 포레스트 또는 기본 추정을 사용할 수 있습니다. 다음은 example입니다.

+1

! 나는이 패키지를 가지고 놀았으며 꽤 흥미 롭다. 나는 당신의 모범을 더 깊이 탐구 할 것이다. –

+0

@ArnoldKlein 예, 매우 유용하지만 문서화에는 여전히 약간의 개선이 필요합니다. – mamafoku