2017-10-12 2 views
-1

저는 이진 분류를 위해 NN을 훈련 시키려고하지만 다중 클래스 접근법을 사용하므로 Class (C) = 2입니다. 열차 및 시험 데이터 세트의 정확도는 ~ 96 %입니다. 그러나 수동 검사를 통해 Tensorflow는 모든 예에서 항상 0을 선택합니다.Tensorflow는 항상 0을 예측합니다

이 문제를 디버깅하는 방법과 내가 잘못하고있는 것에 대해 알고 싶습니다. 도움 주셔서 대단히 감사합니다. 감사.

(I 너무 모호되고 당신은 좋은 해결책을 파악하기 위해 충분한 정보를 제공하고 있지 않다 있으면 알려 주시기 바랍니다. 감사합니다.)

+2

[MCVE (https://stackoverflow.com/help/mcve)를 보시고 그에 맞게 질문을 편집하십시오. –

+1

우리는 MCVE 코드가 필요할 것입니다 (위의 주석 참조). 간단한 대답을 확인하십시오 : 클래스 0이 데이터의 96 %를 차지합니까? 이 경우에는 문제가 없으며 항상 0을 예측하는 것을 배웠으며 좋은 응답의 96 %를 산출합니다. 그렇지 않으면 데이터에 대해 약간의 코드와 지식이 필요합니다. – gdelab

답변

0

하면 96 %의 정확도를 가지고 모든 예측은 0 인 경우 귀하의 데이터 세트는 아마 불균형합니다. 균형을 잡고 양수 및 음수의 샘플 수를 같게해야합니다. 클래스에 대한 가중치를 추가하여 적은 수의 샘플로 더 많은 클래스에 불이익을 줄 수 있습니다.

+0

이 답변과 @gdelab의 답변이 맞습니다. 나는 데이터 세트를 살펴 보았고 실제로 당신이 두 가지로 제안한 바입니다. 이 문제를 해결하는 방법에 대한 제안 사항이 있으십니까? (안타깝게도 답을 얻는 데 충분한 평판이 없습니다.) –

+0

신경망의 경우 간단한 해결 방법이 없으며 모델에 가중치를 추가하거나 데이터 집합을 수정할 수 있습니다. 내 솔루션은 데이터 집합을 리샘플링하는 것이므로 각 클래스의 50/50을 차지하도록 주류를 언더 샘플링하거나 소수 클래스를 오버 샘플링 할 수 있습니다. 파이썬에서 여러 가지 솔루션을 제공하는 라이브러리를 제공합니다 : https://github.com/scikit-learn-contrib/imbalanced-learn –

관련 문제