언밸런스 클래스 — 오탐을 최소화하는 방법?


11

이진 클래스 특성이있는 데이터 집합이 있습니다. +1 클래스 (암 양성)의 623 개의 인스턴스와 -1 클래스 (암 음성)의 101,671 개의 인스턴스가 있습니다.

다양한 알고리즘 (Naive Bayes, Random Forest, AODE, C4.5)을 시도했지만 모두 허용 할 수없는 거짓 음수 비율을 가지고 있습니다. 랜덤 포레스트는 전체 예측 정확도가 가장 높고 (99.5 %)가 음성 비율이 가장 낮지 만 여전히 양성 클래스의 79 %가 누락됩니다 (즉, 악성 종양의 79 %를 감지하지 못함).

이 상황을 어떻게 개선 할 수 있습니까?

감사!


이 문제에 대한 흥미로운 답변을 얻은 이 질문을 살펴볼 수 있습니다 . 안부 인사
Michael Hooreman

답변:


9

클래스 불균형 은 매우 일반적인 문제입니다. 양수 클래스를 오버 샘플링하거나 음수를 언더 샘플링하거나 클래스 가중치를 추가 할 수 있습니다.

이 경우 기억해야 할 또 다른 사항은 정확성이 여기서 유용한 지표가 아니라는 것입니다. AUC 또는 F1 점수를 고려할 수 있습니다 .

의사 결정 임계 값을 변경하는 것은 호소력이있는 것처럼 보일 수 있지만, (이 경우 급격히 비싸지 않은 경우 의료 진단의 경우 FP가 FN만큼 나쁘지는 않지만) 오 탐지가 증가 할 수 있습니다.

클래스 불균형의 경우 옵션에 대한보다 심층적 인 분석이 여기 에 제공 됩니다 .


3

실제로 대답은 항상 true또는 false이지만 클래스 속성을 레이블이 아니라 부동 소수점 숫자 (예 : 1.0 및 0.0 (또는 100 및 0))로 만들 수 있습니다. 즉, 분류 문제 가 아니라 회귀 문제임을 프레임으로 지정할 수 있습니다 .

그런 다음 예측 된 출력도 마찬가지로 해당 스펙트럼의 숫자, 즉 레이블이 아닌 확률 이됩니다. 현재 구현은 기본적으로 임계 값이 0.5 인 회귀 모델과 같습니다.

이러한 출력을 통해 사용자 또는 클라이언트는 허용 가능한 임계 값을 정의 할 수 있습니다 (예 : 0.3). 물론, 오 탐지가 더 많을 수 있지만, 암 탐지와 같은 일부 응용 분야에서는 최적입니다.

오버 샘플링 (포지티브) 또는 언더 샘플링 (네거티브)도이 문제를 해결하는 방법이지만 신중하게 수행해야하며 정확성을 희생 할 수 있으며 데이터 및 교육을 생성 한 후 임계 값을 이동하도록 컨트롤을 여전히 희생합니다.


0

기술로서 언더 샘플링 및 오버 샘플링은 이미 언급되었지만, 일반적으로 사용되는 변형을 가리킬 것이라고 생각했습니다.

SMOTE : 합성 소수 오버 샘플링 기법

이 논문은 2002 년 에 발표되었다 . 초록의 스 니펫은 다음과 같습니다.

이 논문은 소수 (비정상) 클래스를 오버 샘플링하고 다수 (정상) 클래스를 언더 샘플링하는 방법의 조합이 다수 클래스를 언더 샘플링하는 것보다 더 나은 분류기 성능 (ROC 공간에서)을 달성 할 수 있음을 보여줍니다.


다음을 사용하여, 파이썬에서 쉽게 사용할 수 있습니다 패키지 에 포함되어 있는 contrib의 -알아 Scikit의 모듈을 별도로 설치해야합니다.imbalanced-learn

imbalanced-learn은 클래스 간 불균형이 강한 데이터 세트에 일반적으로 사용되는 많은 리샘플링 기술을 제공하는 python 패키지입니다.

이 패키지에는 오버 샘플 / 언더 샘플링과 유틸리티 세트를 결합하여 Keras / Tensorflow로 유입 될 수있는 일련의 데이터를 생성하는 방법이 포함되어 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.