2. 분류(Classification) > 2-1. 분류란?

분류란?

분류란?

쉽게 말해 분류Classification는 "이런 특징(피처feature)를 가진 데이터는 어디(타겟target)에 속하겠니?"라는 질문에 대답하는 알고리즘입니다.

어렵게 말하면 머신러닝에서 분류Classification는

  1. 학습train 데이터의 데이터의 피처feature와 타겟target 값을 토대로 머신러닝 모델을 만들고,

  2. 새로운(테스트test) 데이터셋이 주어졌을 때 타겟target 값을 예측합니다.

즉, 지도학습입니다.

타겟 값이 이산(정수)적이면 분류Classification, 만약 연속(실수)이라면 회귀Regression에 해당합니다. 예를 하나 들어볼까요? 수영 선수인 고다람이 이러 저러한 훈련을 진행해 전국 체전 예선에서 쇼트 코스 400m 자유형에서 4분 03초 기록을 세웠습니다. 이때 고다람 선수는 두 번째로 기록이 좋은 본선 B조에 속했습니다. 머신러닝으로 훈련 양feature이 기록에 끼친 영향을 어떻게 분석 할 수 있을까요? 분 초를 다루는 연속형 데이터인 기록 자체는 회귀, 본선에서 어떤 조에 속할지는 분류 분석이 적합할 거예요.

참고로 이번 단원에서 사용할 iris 데이터는 Sepal Length, Sepal Width, Petal Length, Petial Width라는 특성들이 피처feature로 주어지고, 타겟으로 Setosa, Versicolour, Virginica라는 붓꽃iris의 종이 들어가 있습니다. 즉, 꽃과 잎의 특징feature를 통해 어떤 종인지 분류하는 작업을 할 수 있겠네요.

from sklearn.datasets import load_iris

# 특징feature 라벨

feature_names = iris.feature_names

feature_names
>>>
['sepal length (cm)',
 'sepal width (cm)',
 'petal length (cm)',
 'petal width (cm)']
# 타겟 데이터
target_names = iris.target_names

print(target_names)
>>>
['setosa', 'versicolor', 'virginica']

0. 용어 정리

  • 학습train: 분류, 예측 모델을 만드는 과정입니다. 학습을 위한 데이터 셋이 필요합니다.

  • 테스트test: 모델이 실제로 분류, 예측하는지 확인하는 작업입니다. 학습 데이터와 분리된 독립적인 테스트 데이터가 필요합니다.

  • Validation: 보통 train_test_split 모듈 때문에 test와 validation을 혼동하는 경우가 많습니다. validation은 train, test 데이터가 별개로 제공되는 경우 실제 test를 하기 전에 train 데이터 내부에서 유효한지 확인 하기 위한 데이터 셋입니다. 즉, 학습train 데이터 내부에서 떼어져 나온 데이터 셋입니다. 만약 test 데이터 셋이 제공되지 않는다면 train_test_split으로 나눈 validation set이 test 셋 역할을 할 수 있습니다.

  • 피처feature/특성/특징: 지도 학습 데이터에서 분류, 예측에 사용되는 컬럼들을 '피처 or 특징 or 특성'이라고 부릅니다. 저는 뉘앙스를 가장 잘 살려주는 피처feature를 사용할 예정입니다.

  • 타겟target, 레이블label: 타겟 또는 레이블은 분류, 예측의 목적이 되는 값을 의미합니다. 예컨대 학습 시간에 따른 성적을 예측하고 싶다면 학습 시간은 피처, 성적은 타겟이 됩니다. 타겟, 레이블은 같은 표현입니다. 저는 모델이 목적으로 한다는 뉘앙스를 더 잘 표현하는 타겟을 사용하겠습니다.

1. 지도학습? 비지도학습?

분류Classification는 군집화Clustering와 다르게 나누는 대상target이 정해져 있습니다. 군집화는 미지의 대상을 특성을 기반으로 묶습니다. 즉 분류는 target이 존재하고, 군집화는 target이 없습니다.

분류Classfication나 회귀Regression처럼 분류, 예측 값(타겟)이 이미 정해져 있는 분석을 지도학습supervised learning이라고 합니다.

반면 군집화Clustering는 타겟, 레이블이 없는 상태에서 "이렇게 나누면 되지 않을까?"라고 판단하는 비지도 학습unsupervised learning에 해당합니다.

1-1. 지도 학습의 과정

분류Classification이 속한 지도 학습의 매커니즘은 다음과 같습니다.

  1. 데이터 전처리
  2. 훈련train - 테스트test 데이터 분리
  3. 훈련train 데이터 학습 및 모델링
  4. 테스트 데이터에 적용 및 평가
  • 유의 사항: 훈련 데이터가 보편적인 상황을 담보하고 과적합 되지 않았을 때 분류, 예측 모델이 유효합니다.

만약

  1. 훈련 데이터가 너무 작거나
  2. 편향되어 있거나
  3. 과적합 되어 있다면

제대로 된 분류, 예측이 불가능합니다.

훈련 데이터가 작은 예시를 들자면, A학교 3학년 3반train의 학습 시간feature 대비 수능 수학 점수target를 바탕으로 C학교 K학생test의 학습 시간feature 수학 점수target를 예측할 수 있을까요? 아마 그렇게 정확하지는 않을 겁니다.

데이터가 편향되고 과적합 된 경우는 어떨까요? 내신 시험 족보(편향)만 외워서 100점(과적합)이 나왔는데, 수능 점수가 낮은 경우가 해당합니다.

과적합은 학습 데이터를 과하게 학습해 정확도accuracy가 과하게 높아지는 현상입니다.

2. 평가 지표

이런 문제를 가진 학습 데이터와 과적합 된 모델로는 정확한 분류, 예측을 했다고 말하기 어렵습니다.

그래서 분석가는 정확도accuracy 뿐만 아니라 정밀도precision, Recall, F1 Score, ROC-AUC 등의 지표를 같이 고려합니다.

추후 2. 2. 좋은 분류란, 2. 7. 평가metrics 부분에서 더 자세하게 설명 드리겠습니다.

3. 분류 분석 활용분야

  • 질병 진단
  • 주가 예측
  • 텍스트 분류(스팸, 거짓 뉴스 등)
  • 이미지, 음성 인식
  • 추천 알고리즘

위와 같은 경우 분류 분석을 사용할 수 , 데이터화 된 분야라면 어디든 적용 가능합니다.

마지막으로 업데이트 된 날짜:
2022년 10월 30일