RandomForest-sklearn의 분류 임계 값


9

1) sklearn의 RandomForest에서 분류 임계 값을 변경하려면 어떻게해야합니까 (기본적으로 0.5라고 생각합니까)?

2) 어떻게 sklearn에서 언더 샘플링을 할 수 있습니까?

3) RandomForest 분류기의 결과는 다음과 같습니다. [[1635 1297] [520 3624]]

         precision    recall  f1-score   support

class 0       0.76      0.56      0.64      2932
class 1       0.74      0.87      0.80      4144

평균 / 총 0.75 0.74 0.73 7076

먼저 데이터의 균형이 맞지 않습니다 (클래스 0에서 30 %, 클래스 1에서 70 %). 따라서 클래스 1에 대해 분류자가 편향 될 가능성이 더 크다고 생각합니다. 즉, 클래스 0에서 클래스 1로 일부를 이동한다는 의미입니다 (클래스 0의 경우 1297 개의 오 분류가 있지만 클래스 1의 경우 520 개의 미분류가 있음). 이 문제를 어떻게 해결할 수 있습니까? 다운 샘플링이 도움이 될 수 있습니까? 또는 분류 임계 값을 변경합니까?

업데이트 : 클래스 0은 인구의 40 %를 차지하고 클래스 1은 60 %입니다. 그러나 클래스 0에서 클래스 1 (1297) 로의 드리프트는 높지만이 값을 낮추기를 원합니다.

답변:


7

내부 임의 포리스트 의 predict메서드를 호출하는 predict_proba메서드가 사용자 지정 임계 값보다 높은 경우에만 클래스 1을 출력 하는 클래스에서 임의 포리스트를 실제로 래핑 할 수 있습니다 .

또는 sample_weight소수 클래스의 샘플에 더 높은 값 을 전달하여 학습 알고리즘을 편향시킬 수 있습니다 .


감사. 미성년자 체중 증가에 대해 생각하고있었습니다. 그러나 RandomForest 분류기 (SGDclassifier가 있음)에서 아무것도 볼 수 없습니다.
Big Data Lover

fit 메소드 sample_weight는 매우 유연하고 시뮬레이션 할 수있는 매개 변수 (매개 변수 당 하나의 가중치)를 허용합니다 ( class_weight대상 클래스 당 하나의 가중치).
ogrisel

감사. clf = clf.fit (X, Y, sample_weight = preprocessing.balance_weights (y) 사용하면 ValueError : 피연산자가 셰이프와 함께 브로드 캐스트 할 수 없습니다 y는 이진 0/1
Big Data Lover

모양은 y무엇입니까? 왜 다른 있나요 Yy?
ogrisel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.