사전 분류
개념

분류

gabury1고친 사람 github-actions[bot]

분류는 입력 하나를 보고 미리 정해 둔 갈래 가운데 어디에 속하는지 골라 줍니다. 메일을 스팸과 정상으로 가르는 일이 분류입니다. 물건이나 자료를 종류별로 나누는 일상의 정리도 분류라고 부릅니다. 이 항목은 주로 머신러닝의 분류를 다루고, 끝에서 일상의 뜻과 가릅니다.

쉽고 빠른 이해

분류는 들어온 것 하나에 「이건 이 갈래」라고 답을 붙이는 일입니다. 메일 한 통을 넣으면 「스팸」이나 「정상」 가운데 하나가 나옵니다.

스팸을 가르는 규칙을 사람이 전부 적기는 어렵습니다. 보내는 쪽이 문구를 계속 바꾸기 때문입니다. 그래서 답이 달린 예시를 많이 보여 줍니다. 프로그램은 그 예시를 보고 가르는 기준을 스스로 세웁니다.

  1. 메일마다 「스팸」이나 「정상」을 달아 예시를 모읍니다
  2. 프로그램이 예시를 보고 가르는 기준을 세웁니다
  3. 새 메일이 오면 그 기준으로 갈래를 고릅니다

대가는 틀린다는 점입니다. 정상 메일을 스팸으로 몰기도 하고 스팸을 놓치기도 합니다. 그리고 갈래는 사람이 미리 정해 둬야 합니다. 목록에 없는 갈래는 고를 수 없습니다.

상세

우체국에는 편지를 가르는 선반이 있습니다. 칸마다 지역 이름이 붙어 있습니다. 담당자는 편지를 한 통씩 집어 봉투를 보고 알맞은 칸에 넣습니다. 처음 보는 사람이 보낸 편지라도 어느 한 칸에는 들어갑니다.

분류는 입력 하나를 받아 미리 정해 둔 갈래 가운데 하나를 고르는 일입니다. 메일을 받아 「스팸」과 「정상」 가운데 하나를 고르는 일이 분류입니다. 사진을 받아 「고양이」·「개」·「새」 가운데 하나를 고르는 일도 분류입니다.

분류가 고르는 갈래 하나하나를 클래스라고 부릅니다. 객체지향의 클래스와는 다른 말입니다. 앞 예의 「스팸」과 「정상」이 클래스입니다. 우체국 선반의 칸 하나가 클래스 하나에 해당합니다. 클래스 목록은 분류를 시작하기 전에 사람이 정해 둡니다.

규칙 대신 예시로 가르는 까닭

스팸 필터를 조건문으로 짠다고 해 봅시다. 제목에 「무료」가 있으면 스팸, 링크가 열 개 넘으면 스팸 같은 규칙을 적게 됩니다. 규칙은 금방 수백 줄이 됩니다. 보내는 쪽이 「무 료」처럼 글자를 띄우면 규칙을 또 늘려야 합니다.

머신러닝의 분류는 규칙 대신 예시를 받습니다. 사람은 메일마다 「스팸」이나 「정상」을 달아 둔 예시를 많이 모읍니다. 프로그램은 그 예시에서 두 클래스를 가르는 기준을 스스로 찾습니다. 규칙을 손으로 적기 어려운 판정일수록 이 방식이 쓸모 있습니다.

예시마다 달아 둔 정답 표시를 레이블이라고 부릅니다. 분류에서 레이블은 그 예시가 속한 클래스 이름입니다.

레이블이 달린 예시로 기준을 세우는 방식을 지도학습이라고 합니다. 분류는 지도학습이 푸는 대표 문제입니다.

입력을 수로 바꾸는 특성

프로그램은 메일 본문을 곧바로 읽지 못합니다. 그래서 입력 하나를 수 몇 개로 옮겨 적습니다. 이렇게 옮겨 적은 값 하나하나를 특성이라고 부릅니다.

메일 세 통을 특성 세 개로 적으면 이렇습니다. 오른쪽 끝 칸이 레이블입니다.

메일 링크 수 「무료」 횟수 주소록에 있는 사람 레이블
1 12 3 아니오 스팸
2 1 0 예 정상
3 0 1 예 정상

표에서 한 줄이 예시 하나입니다. 프로그램이 보는 것은 가운데 세 칸의 값뿐입니다. 어떤 특성을 고르느냐에 따라 가를 수 있는 것이 달라집니다. 스팸과 정상을 가를 단서가 특성에 없으면 어떤 훈련으로도 못 가릅니다.

훈련과 예측

분류는 두 단계를 거칩니다. 먼저 레이블이 달린 예시로 기준을 세웁니다. 이 단계가 훈련입니다. 훈련은 학습이라고도 부릅니다.

훈련이 끝나면 세운 기준을 담은 프로그램이 남습니다. 입력을 받아 클래스를 골라 주는 이 프로그램이 분류기입니다. 머신러닝에서는 훈련으로 얻은 결과물을 두루 모델이라고 합니다. 분류기는 분류를 하는 모델입니다.

다음 단계는 새 입력을 분류기에 넣어 클래스를 받는 일입니다. 이 단계가 예측입니다. 새 입력에는 레이블이 없습니다. 레이블을 모르니까 분류기에 묻는 것입니다.

flowchart TD
    subgraph T["훈련 — 한 번 해 둔다"]
        A["레이블이 달린 예시"] --> B["분류기"]
    end
    subgraph P["예측 — 입력이 올 때마다"]
        C["새 입력"] --> D["분류기에 넣는다"]
        D --> E["클래스 하나"]
    end
    B --> D

그림의 위 칸이 훈련입니다. 아래 칸이 예측입니다. 훈련에서 만든 분류기를 예측 칸에서 가져다 씁니다. 훈련은 한 번 해 두면 됩니다. 예측은 새 입력이 올 때마다 되풀이합니다.

클래스를 가르는 결정 경계

특성이 둘이면 예시 하나를 평면 위의 점 하나로 찍을 수 있습니다. 가로축에 링크 수, 세로축에 「무료」 횟수를 두는 식입니다. 스팸 점과 정상 점은 평면의 서로 다른 쪽에 몰리는 경향이 있습니다.

분류기가 세운 기준은 이 평면을 클래스별 구역으로 나눕니다. 구역과 구역 사이의 선을 결정 경계라고 부릅니다. 새 메일은 점으로 찍혔을 때 경계의 어느 쪽에 떨어지느냐로 클래스가 정해집니다.

결정 경계는 곧은 선일 수도 있고 굽은 선일 수도 있습니다. 어떤 모양의 경계를 그릴 수 있느냐는 분류기를 만드는 알고리즘마다 다릅니다. 특성이 셋 이상이면 눈으로 그릴 수 없지만 나누는 원리는 같습니다.

점수와 임계값

많은 분류기는 클래스를 곧바로 내놓지 않고 점수를 먼저 냅니다. 스팸 필터라면 「이 메일이 스팸일 확률은 0.92」 같은 값입니다. 점수가 어느 값을 넘으면 스팸으로 봅니다. 이 기준값을 임계값이라고 부릅니다.

아래 p 는 메일 네 통의 스팸 점수입니다. 임계값을 0.5 로 두면 두 통이, 0.8 로 올리면 한 통만 스팸이 됩니다. 1 은 스팸, 0 은 정상입니다.

Python
p = [0.92, 0.40, 0.75, 0.10]
[int(s >= 0.5) for s in p]  # [1, 0, 1, 0]
[int(s >= 0.8) for s in p]  # [1, 0, 0, 0]

셋째 메일의 점수는 0.75 입니다. 임계값이 0.5 면 스팸, 0.8 이면 정상으로 갈립니다. 같은 분류기라도 임계값을 어디에 두느냐에 따라 판정이 바뀝니다.

클래스 수에 따른 갈래

클래스가 둘뿐인 분류를 이진 분류라고 합니다. 스팸과 정상, 사기와 정상 거래처럼 「해당한다」와 「아니다」로 가르는 일입니다.

이진 분류에서는 찾으려는 쪽을 양성, 나머지를 음성이라고 부릅니다.

클래스가 셋 이상이면 갈래를 나누는 방식이 둘로 나뉩니다. 입력 하나에 클래스 하나만 붙는지, 여럿이 붙을 수 있는지입니다.

이름 클래스 수 입력 하나에 붙는 클래스 보기
이진 분류 2 하나 스팸인가 아닌가
다중 클래스 분류 3 이상 하나 사진 속 동물은 고양이·개·새 가운데 무엇인가
다중 레이블 분류 3 이상 여럿 글 한 편에 「보안」과 「네트워크」가 둘 다 붙는다

표의 둘째 줄과 셋째 줄은 클래스 수가 같습니다. 가르는 기준은 셋째 칸입니다. 고양이 사진은 개일 수 없지만, 글 한 편은 여러 주제를 함께 다룰 수 있습니다.

분류가 틀리는 두 방식

분류기는 틀립니다. 이진 분류에서 틀림은 두 종류입니다. 정상 메일을 스팸으로 모는 틀림이 거짓 양성입니다. 스팸을 정상으로 흘려보내는 틀림이 거짓 음성입니다.

두 틀림은 치르는 대가가 다릅니다. 거짓 양성이 나면 받아야 할 메일이 스팸함에 묻힙니다. 거짓 음성이 나면 광고 메일 한 통이 받은편지함에 들어옵니다. 앞의 임계값을 올리면 거짓 양성이 줄고 거짓 음성이 늘어납니다.

그래서 분류의 성적은 수 하나로 끝나지 않습니다. 전체 판정 가운데 맞은 것의 비율은 정확도입니다. 스팸이라고 고른 것 가운데 진짜 스팸의 비율은 정밀도입니다. 진짜 스팸 가운데 찾아낸 것의 비율은 재현율입니다.

맞은 판정도 두 종류입니다. 스팸을 스팸으로 고른 것과 정상을 정상으로 고른 것입니다. 맞은 판정 둘과 틀린 판정 둘을 네 칸 표에 세어 두면 혼동 행렬이 됩니다. 앞의 세 지표는 모두 이 네 칸의 수로 계산합니다.

회귀·군집화와 가르는 선

머신러닝이 푸는 문제는 답의 모양으로 나뉩니다. 분류의 답은 정해진 목록 가운데 하나입니다. 답이 연속된 수면 회귀입니다.

문제 답의 모양 레이블 보기
분류 정해진 클래스 가운데 하나 있다 이 집은 한 달 안에 팔릴까
회귀 연속된 수 있다 이 집은 얼마에 팔릴까
군집화 비슷한 것끼리 모은 묶음 없다 집들을 비슷한 것끼리 몇 묶음으로 나누면

회귀와 분류는 같은 집을 두고도 묻는 것이 다릅니다. 가격을 물으면 회귀입니다. 팔릴지를 물으면 분류입니다. 군집화는 클래스 목록을 미리 정하지 않습니다. 묶음은 데이터를 보고 나서 생깁니다. 그 묶음에 이름을 붙이는 일은 사람이 합니다.

분류기를 만드는 알고리즘

분류기를 세우는 방법은 여럿입니다. 로지스틱 회귀 · 결정 트리 · 최근접 이웃 · 나이브 베이즈 · 서포트 벡터 머신 · 신경망이 널리 쓰입니다. 방법마다 그릴 수 있는 결정 경계의 모양과 훈련에 드는 시간이 다릅니다.

로지스틱 회귀는 이름에 「회귀」가 들어 있지만 분류에 씁니다. 점수를 연속된 수로 계산한 뒤 임계값으로 클래스를 고르기 때문입니다. 이름만 보고 회귀 문제용이라고 읽기 쉬운 알고리즘입니다.

자료를 나누는 분류

일상과 다른 분야에서 분류는 더 넓은 뜻으로 쓰입니다. 도서관이 책을 주제별 번호로 나누는 일, 생물을 종·속·과로 묶는 일이 분류입니다. 블로그 글에 카테고리를 다는 일도 분류라고 부릅니다.

이 뜻의 분류는 갈래 체계를 세우는 일까지 포함합니다. 어떤 갈래를 두고 무엇을 그 아래에 둘지 정하는 것이 일의 절반입니다. 이렇게 세운 갈래 체계를 분류 체계라고 부릅니다. 머신러닝의 분류에서는 갈래 체계가 이미 서 있습니다. 분류기는 새 입력 하나를 어느 갈래에 넣을지만 고릅니다.

관련 항목

분류를 푸는 학습 방식

머신러닝 · 지도학습 · 준지도학습 · 딥러닝 · 통계

분류와 나란히 놓이는 머신러닝 문제

회귀 · 군집화 · 이상 탐지 · 객체 탐지 · 순위 학습

클래스 수로 나뉘는 분류의 하위 종류

이진 분류 · 다중 클래스 분류 · 다중 레이블 분류 · 텍스트 분류 · 이미지 분류

분류를 이루는 구성 요소

특성 · 특성 벡터 · 레이블 · 분류기 · 모델 · 결정 경계 · 임계값 · 훈련 · 예측

분류기를 만드는 알고리즘

로지스틱 회귀 · 결정 트리 · 랜덤 포레스트 · 최근접 이웃 · 나이브 베이즈 · 서포트 벡터 머신 · 신경망 · 소프트맥스

분류의 성적을 재는 지표

정확도 · 정밀도 · 재현율 · F1 점수 · 혼동 행렬 · 거짓 양성 · 거짓 음성 · ROC 곡선 · AUC

분류기를 흐리게 만드는 문제

클래스 불균형 · 과적합 · 데이터 누수 · 분포 이동

분류로 푸는 실무 작업

스팸 필터 · 사기 탐지 · 감성 분석 · 이미지 인식 · 의료 영상 판독

분류라는 이름을 함께 쓰는 정리 체계

분류 체계 · 태그 · 카테고리 · 온톨로지 · 메타데이터

다른 이름: classification · 분류 문제