불균형 데이터에 대한 이진 분류 모델


14

다음 사양의 데이터 세트가 있습니다.

  • 2,821 개의 양성으로 193,176 개의 샘플로 훈련 데이터 세트
  • 673 개의 양성으로 82,887 개의 샘플로 테스트 데이터 세트
  • 10 가지 기능이 있습니다.

이진 분류 (0 또는 1)를 수행하고 싶습니다. 내가 겪고있는 문제는 데이터가 매우 불균형하다는 것입니다. 일부 기능 엔지니어링과 함께 데이터를 정규화하고 확장 한 후 몇 가지 다른 알고리즘을 사용하면 다음과 같은 결과를 얻을 수 있습니다.

mean square error : 0.00804710026904
Confusion matrix : [[82214   667]
                   [    0     6]]

즉, 6 번의 정확한 긍정적 인 타격입니다. 이것은 로지스틱 회귀를 사용하고 있습니다. 여기에 내가 시도한 다양한 것들이 있습니다.

  • RandomForest, DecisionTree, SVM과 같은 다른 알고리즘
  • 함수를 호출하기 위해 매개 변수 값 변경
  • 복합 피처를 포함하는 직관 기반 피처 엔지니어링

이제 내 질문은 :

  1. 긍정적 인 조회수를 개선하려면 어떻게해야합니까?
  2. 그러한 경우에 초과 적합이 있는지 어떻게 알 수 있습니까? (나는 플로팅 등을 시도했다.)
  3. 이것이 내가 가질 수있는 최선의 적합인지 어떤 시점에서 결론을 내릴 수 있습니까? (673 중에서 6 개의 히트 만 고려하면 슬픈 것 같습니다)
  4. 긍정적 인 샘플 인스턴스의 무게를 더 높여 패턴 인식이 향상되어 더 많은 히트를 얻을 수있는 방법이 있습니까?
  5. 어떤 그래픽 플롯이 특이 치를 탐지하거나 어떤 패턴이 가장 적합한 지에 대한 직관을 감지하는 데 도움이 될 수 있습니까?

Python과 함께 scikit-learn 라이브러리를 사용하고 있으며 모든 구현은 라이브러리 함수입니다.

편집하다:

몇 가지 다른 알고리즘의 결과는 다음과 같습니다.

랜덤 포레스트 분류기 (n_estimators = 100)

[[82211   667]
[    3     6]]

의사 결정 트리 :

[[78611   635]
[ 3603    38]]

답변:


11
  1. 이진 분류를 수행하고 있으므로 분류 임계 값을 조정 해 보셨습니까? 알고리즘이 다소 둔감 한 것처럼 보이기 때문에 알고리즘을 낮추고 개선이 있는지 확인하려고합니다.

  2. 당신은 항상 사용할 수있는 학습 곡선 모델이 overfitting 여부를 결정하기 위해, 또는 교육 및 유효성 검사 오류 대 한 모델 파라미터의 플롯을. 귀하의 경우에는 적합하지 않은 것 같지만 직관입니다.

  3. 글쎄, 궁극적으로 데이터 세트와 시도한 다른 모델에 따라 다릅니다. 이 시점에서 추가 테스트 없이는 명확한 답을 찾을 수 없습니다.

  4. 주제에 대한 전문가라고 주장하지 않고 따라 할 수있는 여러 가지 기술이 있습니다 (힌트 : Google의 첫 번째 링크 ). 제 생각에 먼저 비용 함수를 신중하게 선택하여 실제로 찾고 있습니다.

  5. 패턴 직관의 의미가 무엇인지 잘 모르겠다면 정교하게 설명 할 수 있습니까?

그건 그렇고, 다른 알고리즘으로 시도한 결과는 무엇입니까? 그들은 다른가?


1
로지스틱 회귀에 대한 임계 값을 조정하는 것이 트릭이었습니다. 출처 목록에 감사드립니다.
tejaskhot 2016 년

로지스틱 회귀 임계 값을 조정하는 방법에 대한 코드 스 니펫을 붙여 넣을 수 있습니까?
Blenz 2016 년

0

데이터가 왜곡되어 있기 때문에 데이터를 오버 샘플링 한 후에 모델 학습을 시도 할 수도 있습니다.

SMOTE와 ADASYN 은 데이터를 오버 샘플링하는 데 사용할 수있는 기술 중 일부입니다.

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