더북(TheBook)

6.5.5 불균형한 클래스 다루기

이 장에서 불균형한 클래스에 대해 여러 번 언급했지만 실제로 이런 경우에 적절한 처리 방법을 설명하지 않았습니다. 클래스 불균형은 실전 데이터를 다룰 때 매우 자주 나타나는 문제입니다. 한 개 또는 여러 개의 클래스 샘플이 데이터셋에 너무 많을 때입니다. 이런 문제가 일어날 수 있는 분야는 스팸 필터링, 부정 감지, 질병 차단 등입니다.

이 장에서 사용한 위스콘신 유방암 데이터셋이 90%는 건강한 환자라고 가정해 보겠습니다. 지도 학습 알고리즘을 사용하지 않고 모든 샘플에 대해 다수의 클래스(양성 종양)를 예측하기만 해도 테스트 데이터셋에서 90% 정확도를 달성할 수 있습니다. 이런 데이터셋에서 90% 정도의 테스트 정확도를 달성한 모델은 데이터셋에 있는 특성에서 어떤 유용한 것을 학습하지 못한 것입니다.

이 절에서 불균형한 데이터셋을 다룰 때 도움이 되는 몇 가지 기법을 알아보겠습니다. 이 문제에 대한 기법을 설명하기 전에 212개의 악성 종양(클래스 1)과 357개의 양성 종양(클래스 0)을 가진 유방암 데이터셋에서 불균형한 데이터셋을 만들어 보죠.

>>> X_imb = np.vstack((X[y==0], X[y==1][:40]))
>>> y_imb = np.hstack((y[y==0], y[y==1][:40]))
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.