2

나는 훈련 데이터 세트에서 클래스 레이블의 대다수가 1 인 (다른 클래스 레이블이 0 인) 입력 테스트 데이터 세트 을 처리해야하고 binary-classification을 수행해야합니다. - 0 또는 1 마지막 열은 class-label이다이 불평형 클래스의 비뚤어 짐 데이터 세트를 처리하는 방법은 무엇입니까?

93.65034,94.50283,94.6677,94.20174,94.93986,95.21071,1 
94.13783,94.61797,94.50526,95.66091,95.99478,95.12608,1 
94.0238,93.95445,94.77115,94.65469,95.08566,94.97906,1 
94.36343,94.32839,95.33167,95.24738,94.57213,95.05634,1 
94.5774,93.92291,94.96261,95.40926,95.97659,95.17691,0 
93.76617,94.27253,94.38002,94.28448,94.19957,94.98924,0 

예 :

는 다음 트레이닝 데이터의 일부이다. 실제 데이터 세트는 10:1 클래스 비율로 매우 비뚤어졌습니다. 약 700 샘플의 0은 class label이고 나머지 6800은 1이 class label입니다.

언급 위를

만 주어진 데이터 세트의 모든 샘플의 몇 가지 있지만, 실제 데이터 세트는 사실에도 불구하고, 약 90% 1class-labelclass-label0 인과 나머지 샘플을 포함 그것은 거의 모든 샘플이 매우 유사하다는 것입니다.

이런 종류의 데이터 세트를 처리하는 데 가장 적합한 분류기는 무엇입니까?

나는 이미 logistic-regressionsvmclass-weight 매개 변수가 "balanced"으로 설정했지만 정확성은 크게 개선되지 않았습니다.

+0

프로그래밍상의 질문이 아니기 때문에 [Cross Validated] (http://stats.stackexchange.com/) – Tchotchke

답변

0

그러나 정확도가 크게 향상되지 않았습니다.

정확도는 이동하지 않습니다 (예 : Accuracy paradox 참조). 10 : 1 비율의 클래스를 사용하면 항상 class-label 0을 예측하여 90 %의 정확도를 쉽게 얻을 수 있습니다.

좋은 시작 지점

은 다음과 같습니다

  • 다른 성능 메트릭을 시도합니다. 예 : 샘플링에서-(오버 표현 클래스에서 를 인스턴스 ( 샘플링을 통해-을)/세 이하 대표 클래스에서 예제를 추가, 삭제, 당신은 많은이 있어야합니다 F1-score

  • Matthews correlation coefficient 데이터 집합은 "재 샘플링" 보기의

  • 다른 지점) 데이터 : anomaly detection 다른 알고리즘이 또 다른 가능성 아니지만 실버 촬영 인 불균형 데이터 세트

  • 위한 좋은 시도이다. 아마 당신은 class_weight (scikit 배우기) 매개 변수에서

    가중치된다 (지금은 scikit-learn을 사용하고 알고)


편집을 (종종 불균형 데이터 세트에서 잘 수행) decision trees로 시작해야 분류자를 훈련하는 데 사용되므로 (balanced은 괜찮음) 정확도는 수행 능력을 아는 데는 좋지 않습니다.

sklearn.metrics 모듈은 여러 손실, 점수 및 유틸리티 기능을 measure classification performance에 구현합니다. 또한 How to compute precision, recall, accuracy and f1-score for the multiclass case with scikit learn?을보십시오.

+0

에서 더 나은 응답을 얻으실 수 있습니다. 실제로 제공된 테스트 데이터 세트에는 클래스가 없습니다. - 레이블, 나는 그들을 예측하고, 온라인 판사의 정확성을 확인해야합니다. 그러므로 나는'sklearn.metrics'가 나를 도울 수 없다고 생각합니다. 그러면 어떻게해야합니까? 주어진 테스트 샘플에 대해'class-label '이 0인지 아닌지 예측할 수있는 방법이 있습니까? @ manlio – Jarvis

0

매개 변수와 다른 임계 값을 확인하기 위해 ROC 곡선과 AUC 곡선을 플로팅 했습니까? 그렇지 않으면 좋은 출발점이되어야합니다.

+0

어떻게 할 수 있습니까? Python으로 코딩하고 있습니다. – Jarvis

+0

@Jarvis sklearn이 가져야합니다. 다음은 링크 중 하나입니다 : http://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html –

관련 문제