지도 학습의 대표적인 예시로 **분류(Classification)**가 있음.
데이터들이 다양한 특징과 함께 특정 label을 가지고 있을 때 특징들을 보고, label을 예측하는 것
ex ) 스팸 메일 / 일반 메일
분류 알고리즘을 공부할 때 마다, 항상 나오는 MNIST 데이터셋
얼마나 자주 사용되면, 사이킷런 dataset 패키지에 데이터셋을 바로 다운 받을 수 있는 패키지도 존재함
그럼 도대체 MNIST 데이터셋이 뭐지 ??
<aside> 💡
고등학생과 미국 인구 조사국 직원들이 손으로 쓴 70,000개의 작은 숫자 이미지 데이터셋
</aside>
이런 데이터셋이 왜 분류 알고리즘을 학습하는 데 적합한걸까 ?
→ 0 ~ 9 라는 카테고리(label)를 가진 하나의 데이터들이 사람마다 너무 다양한 특징을 가지기 때문에
그렇다면 이제 막 기계학습에 대해서 공부하기 시작했는데 벌써 이미지 처리를 배워야 한다는 건가 ?
→ 당연히 아님 !!
<aside> 💡
0 | 0 | 0 | 0 | 0 | 0 | 0 |
---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 1 | 1 | 0 |
0 | 0 | 0 | 0 | 1 | 0 | 0 |
0 | 0 | 0 | 1 | 1 | 0 | 0 |
0 | 0 | 0 | 1 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 |
</aside> |
이게 무슨 말인지 잘 이해가 안가는데.. 예시를 들어 이해해보자
일반적인 분류 데이터셋 (비만인 사람 분류하기)
성별 | 키 | 몸무게 | 비만 여부 | |
---|---|---|---|---|
1번 데이터 | 남 | 170 | 100 | O |
2번 데이터 | 여 | 160 | 50 | X |
… | ||||
99번 데이터 | 남 | 180 | 80 | X |
MNIST 데이터셋 (숫자 분류하기)
(1,1) 픽셀 | (1,2) 픽셀 | … | (28, 27) 픽셀 | (28, 28) 픽셀 | 숫자 label | |
---|---|---|---|---|---|---|
1번 데이터 | 0 | 0 | 1 | 0 | 5 | |
2번 데이터 | 1 | 1 | 0 | 0 | 3 | |
… | ||||||
70000번 데이터 | 0 | 1 | 1 | 0 | 9 |
이제 이렇게 생긴 데이터셋을 train set / test set으로 나누고 모델을 학습시키기 시작
엥 카테고리는 0 ~ 9까지 10개 있다고 했는데, 왜 이진 분류를 하는거지 ?
우선, 데이터 형태 다시 확인하기
근데 이진 분류를 해볼거니까, 데이터셋의 형태를 먼저 변형
이후 사용할 모델 선정
사이킷런에서 제공하는 SGDClassifier 모델을 사용 (확률적 경사 하강법은 나중에 공부..)
<aside> 💡
</aside>
모델 학습이 끝났으면, 모델이 어느정도의 퍼포먼스를 보여주는지 성능 측정을 해야 함
하지만, 단순 정확도는 내 모델이 어떤 경우에 더 강인한지 판단하기에 적합하지 않음.