2016-12-31 4 views
0

파이썬을 사용하여 바이너리 대상 클래스가있는 불균형 데이터 세트에서 임의의 포리스트를 실행합니다. 리콜과 정확성을 높이기 위해 기본 확률 임계 값 0.5를 다른 값으로 변경하고 싶습니다. 지금까지이 작업을 수행하는 데 사용할 수있는 정의 된 메서드 또는 클래스를 찾을 수 없습니다. 누구든지 조언을 부탁 할 수 있을까요? 아니면 코드를 직접 작성해야합니까? 건배임의의 포리스트에서 내 자신의 확률 임계 값을 설정하는 방법은 무엇입니까?

+0

실행중인 라이브러리는 무엇입니까? 파이썬에는 "임의의 포레스트"가 없습니다. –

+0

@AmiTavory sklearn.ensemble에서 가져온 RandomForestClassifier ' – LUSAQX

+1

을 사용하면'p = clf.predict_proba (X)'를 사용하여 확률을 얻은 다음'Y = p> custom_value' – tihom

답변

1

scikit-learn의 RandomForestClassifier에는 클래스를 샘플에 할당 할 고정 된 임계 값이 없습니다. RandomForestClassifier.predict의 소스 코드에서 볼 수 있듯이 가장 가능성있는 클래스를 반환합니다. 물론 @thiom이 제안한 접근법을 사용할 수는 있지만 정밀도와 리콜을 향상시킬 수 있다고 상상할 수는 없습니다.

예를 들어, 선택한 임계 값이 0.7이고 클래스 확률이 0.6 및 0.4 인 경우 어떤 클래스를 할당합니까? 전혀?

대안으로 RandomForestClassifier의 class_weight 옵션을 사용하여 불충분 한 클래스에 더 많은 가중치를 부여 할 수 있습니다.

+0

동의합니다. 예측 확률을 변경하는 것은 불균형 클래스에 대한 정밀도/리콜을 향상시키는 강력한 방법이 아닙니다. Rene의 제안처럼 클래스 가중치로 연주하거나 샘플링 빈도를 변경하는 것과 같은 모델 교육 전략을 업데이트해야합니다. – tihom

관련 문제