지도 머신 러닝의 수업 불균형


47

이것은 일반적으로 질문이나 방법이나 데이터 세트에만 국한되지 않습니다. 데이터 세트에서 0의 수가 90 %이고 1의 수가 10 % 인 Supervised Machine 학습에서 클래스 불균형 문제를 처리하는 방법 분류기를 최적으로 훈련시키는 방법

내가 따르는 방법 중 하나는 데이터 세트의 균형을 잡고 분류기를 훈련시키고 여러 샘플에 대해 이것을 반복하기 위해 샘플링하는 것입니다.

나는 이것이 무작위라고 생각합니다. 이런 종류의 문제에 접근 할 수있는 틀이 있습니까?

답변:


45

많은 프레임 워크와 접근 방식이 있습니다. 이것은 반복되는 문제입니다.

예 :

  • 언더 샘플링 . 크기가 1과 일치하도록 0 세트의 서브 샘플을 선택하십시오. 좀 더 복잡한 프레임 워크를 사용하지 않는 한 정보의 명백한 손실이 있습니다 (예를 들어, 나는 첫 번째 세트를 상호 배타적 인 작은 하위 세트 9 개로 분할하고 각 세트에서 모델을 학습하고 모델을 앙상블합니다).
  • 오버 샘플링 . 비율이 50 % / 50 %가 될 때까지 인공적인 것들을 생성하십시오. 저의 이전 고용주는 기본적으로 이것을 사용했습니다. 이것에 대한 많은 프레임 워크가 있습니다 ( SMOTE 가 가장 인기가 있다고 생각 하지만 Noisy PCA 와 같은 간단한 트릭을 선호합니다 ).
  • 하나의 수업 학습 . 데이터에 실제 포인트가 몇 개 있고 물리적으로 존재하지 않는 많은 랜덤 노이즈 (데이터 세트에 누출되지 않은 노이즈)가 있다고 가정하십시오. 분류 알고리즘 대신 알고리즘을 사용하여 데이터의 노이즈를 제거하십시오.
  • 비용에 민감한 교육 . 비대칭 비용 함수를 사용하여 교육 과정의 균형을 인위적으로 조정하십시오.

기술적 복잡성 \ 수준의 세부 사항이 증가하는 일부 검토 결과 :

아, 그리고 90 % / 10 %는 불균형이 아닙니다. 카드 거래 사기 데이터 세트는 종종 99.97 % / 0.03 %로 나뉩니다. 이것은 불균형입니다.


방금 언급 한 Noisy PCA는 구현 세부 사항에 따라 오버 샘플링, 정규화 또는 지터로 표시 될 수 있습니다.
Lucas Gallindo

리소스에 감사합니다. 모든 샘플에 '1'이라는 레이블이 붙어있는 독특한 문제가 있습니다. 그러나 실제로이 샘플은 불순물이 최소입니다. 즉, 실제로 '0'으로 추정되지만 '1'로 표시되는 일부 레코드가 있습니다. 이런 종류의 문제는 하나의 클래스 분류에 속한다고 생각합니다. 내 이해가 맞습니까? 그것들을 식별하는 데 사용되는 공통 프레임 워크가 있습니까? 처음에는 클러스터링을 시도했지만 작동하지 않습니다.
NG_21

1
이러한 모든 알고리즘에는 0으로 레이블이 지정된 일부 데이터와 레이블의 정확성에 대해 100 % 센타 이티가있는 데이터 (또는 100 %에 매우 가까운 데이터)가 필요합니다. 모든 데이터가 있지만이 데이터의 적은 비율이 잘못 표시되어 있으며 상황이 다릅니다. 응용 분야에 대한 지식이 없으면 Anomaly Detection을 사용하여 공격 한 다음 이상 항목을 0으로 레이블링합니다. 그런 다음 분류 알고리즘 (One Class Learning)을 사용해보십시오. 응용 분야에 대한 지식이 있으면 무엇보다 먼저 도메인 전문가의 도움을 구할 것입니다.
Lucas Gallindo

13

이것은 학습 방법에 따라 크게 다릅니다. 대부분의 범용 접근 방식에는이를 처리하는 하나 이상의 방법이 있습니다. 일반적인 수정은 소수 클래스에 대해 더 높은 오 분류 페널티를 할당하여 분류자가 클래스를 인식하도록하는 것입니다 (SVM, 로지스틱 회귀, 신경망 등).

언급 한 것처럼 샘플링 변경도 가능합니다. 이 경우 소수 클래스를 오버 샘플링하는 것이 대다수 클래스를 언더 샘플링하는 것보다 일반적으로 더 나은 솔루션입니다.

임의 포리스트와 같은 일부 방법은 수정할 필요가 없습니다.


감사. 몇 가지 예를 통해 설명 된 리소스를 가리킬 수 있습니다. 알고리즘을 처음부터 코딩하지 않고 R / Python에서 이것을 달성하는 방법이 있습니까?
NG_21

1
이 R 패키지의 첫 번째 기능을 확인하십시오 : cran.r-project.org/web/packages/unbalanced/unbalanced.pdf
Lucas Gallindo

7
랜덤 포레스트가 왜 수정이 필요하지 않습니까? 그래도 클래스 웨이트를 할당 할 수 있다고 생각합니다
mac

4

종종 문제는 소수 계층의 빈도가 아니라 절대적인 경우입니다. 피처의 변형과 비교할 때 대상에 충분한 변형이 없으면 알고리즘이 항목을 매우 정확하게 분류 할 수 없음을 의미 할 수 있습니다.

한 가지 잘못된 점은 분류 단계에서 오 분류 페널티를 사용할 수 있으며 매개 변수 추정 단계에서는 사용할 수 없다는 것입니다. 일부 메소드에는 매개 변수의 개념이없고 단지 클래스 레이블 또는 클래스 확률 만 생성합니다.

확률 추정기가 있으면 정보 이론적 근거 또는 비즈니스 가치의 조합을 기준으로 분류 결정을 내릴 수 있습니다.


1

두 가지 트릭을 추가하십시오. 1. CDF를 사용하고 훈련 데이터의 빈도를 세거나 매우 큰 유효성 검사를 사용하십시오 (테스트 세트는 변경되지 않지만 유효성 검사 세트는 훈련 세트와 동일한 분포를 가져야 함). 예측을 정렬하고 얻으십시오. 한 클래스와 다른 클래스에 대한 첫 번째 X % (귀하의 빈도를 계산)와 다른 것 / 2. 가중 샘플, 모델은 가중 샘플 클래스에 대한 경향이 있으며, 샘플 분산 v를 사용할 수 있습니다. 예. 가중치 = 1/2 (1- (vmax-vi) / vmax)

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