스팸 문자 데이터셋과 균형 맞추기
스팸이 무엇인지 모델에게 어떻게 가르칠까요?
재료
문자마다 정답을 붙여 둔 자료를 씁니다
사람이 영어 문자 5,572통에 스팸인지 아닌지를 적어 둔 공개 자료입니다. 이런 자료를 데이터셋, 붙여 둔 정답을 레이블이라고 합니다.
이 자료는 정상 문자를 ham, 스팸 문자를 spam이라고 적습니다.
세어 보면
정상이 스팸보다 훨씬 많습니다
정상 4,825통, 스팸 747통입니다. 합치면 5,572통이고, 스팸은 일곱 통에 한 통꼴입니다.
왜 문제일까
'전부 정상'이라고만 해도 점수가 높습니다
한쪽이 훨씬 많으면 모델은 많은 쪽만 찍어도 대부분 맞힙니다. 정작 잡아야 할 스팸은 하나도 잡지 못합니다.
87과 13은 4,825통과 747통의 비율을 100통으로 줄여 계산한 값입니다.
해법
정상 문자를 스팸만큼만 뽑습니다
정상 4,825통에서 747통만 무작위로 고릅니다. 그 뒤에 스팸 747통을 이어 붙이면 1,494통입니다.
많은 쪽을 줄여 수를 맞추는 방법을 언더샘플링이라고 합니다. 문자가 줄어든 만큼 훈련도 빨리 끝납니다.
정답 적기
정답은 숫자로 바꿔 둡니다
모델은 숫자로 계산합니다. 그래서 정상은 0, 스팸은 1로 적습니다.
글을 토큰 번호로 바꾸는 것과 같은 이유입니다. 다만 여기서는 번호가 0과 1, 둘뿐입니다.
다음 편