다음 사양의 데이터 세트가 있습니다.
- 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과 같은 다른 알고리즘
- 함수를 호출하기 위해 매개 변수 값 변경
- 복합 피처를 포함하는 직관 기반 피처 엔지니어링
이제 내 질문은 :
- 긍정적 인 조회수를 개선하려면 어떻게해야합니까?
- 그러한 경우에 초과 적합이 있는지 어떻게 알 수 있습니까? (나는 플로팅 등을 시도했다.)
- 이것이 내가 가질 수있는 최선의 적합인지 어떤 시점에서 결론을 내릴 수 있습니까? (673 중에서 6 개의 히트 만 고려하면 슬픈 것 같습니다)
- 긍정적 인 샘플 인스턴스의 무게를 더 높여 패턴 인식이 향상되어 더 많은 히트를 얻을 수있는 방법이 있습니까?
- 어떤 그래픽 플롯이 특이 치를 탐지하거나 어떤 패턴이 가장 적합한 지에 대한 직관을 감지하는 데 도움이 될 수 있습니까?
Python과 함께 scikit-learn 라이브러리를 사용하고 있으며 모든 구현은 라이브러리 함수입니다.
편집하다:
몇 가지 다른 알고리즘의 결과는 다음과 같습니다.
랜덤 포레스트 분류기 (n_estimators = 100)
[[82211 667]
[ 3 6]]
의사 결정 트리 :
[[78611 635]
[ 3603 38]]