사전 비지도학습
개념

비지도학습

gabury1고친 사람 github-actions[bot]

비지도학습은 정답 없이 데이터만 보고 그 안에 숨은 무리와 규칙을 찾아냅니다. 쇼핑몰 고객 기록을 넣으면 비슷하게 사는 고객끼리 몇 무리로 묶어 줍니다. 무리마다 무슨 뜻인지는 사람이 나중에 읽어 냅니다.

쉽고 빠른 이해

비지도학습은 답이 붙지 않은 데이터를 받아 비슷한 것끼리 묶어 줍니다. 고객 만 명의 구매 기록을 넣으면 「자주 오지만 조금씩 사는 무리」와 「드물게 와서 많이 사는 무리」처럼 나뉜 결과가 나옵니다.

데이터마다 정답을 달려면 사람 손이 많이 듭니다. 무엇을 찾아야 할지조차 모를 때도 있습니다. 비지도학습은 정답 없이 데이터만으로 시작할 수 있습니다.

  1. 데이터 하나하나를 수 몇 개로 바꿉니다
  2. 수가 가까운 것끼리 모으거나, 수 여러 개를 몇 개로 줄입니다
  3. 나온 결과를 사람이 보고 뜻을 붙입니다

대가는 채점이 어렵다는 점입니다. 맞춰 볼 정답이 없어서 결과가 잘 나왔는지 숫자 하나로 말하기 어렵습니다. 몇 무리로 나눌지도 대개 사람이 정해야 합니다.

묻고 싶은 질문이 정해져 있고 그 정답이 이미 데이터에 달려 있다면 사정이 다릅니다. 그때는 정답으로 곧바로 답을 배우는 지도학습이 더 맞습니다.

상세

외국 마트에서 이름을 읽을 수 없는 과일을 한 바구니 샀다고 해 봅시다. 이름은 몰라도 색과 크기와 껍질을 보고 비슷한 것끼리 접시에 나눠 담을 수 있습니다. 접시마다 무슨 과일인지는 나중에 알아봅니다.

비지도학습(unsupervised learning)은 정답이 없는 데이터에서 구조를 찾는 머신러닝 방식입니다. 머신러닝은 판정 규칙을 사람이 적어 넣는 대신 데이터에서 뽑아내는 방식을 말합니다. 고객들의 구매 기록만 건네고 「이 고객은 어느 부류」라는 답은 주지 않는 경우가 비지도학습입니다.

구조는 데이터 안에 숨어 있는 짜임새입니다. 비슷한 것끼리 모여 있는 무리, 여러 값이 함께 오르내리는 경향, 다른 것들과 동떨어진 값이 구조입니다. 비지도학습은 이런 짜임새를 사람이 미리 알려 주지 않아도 데이터에서 드러냅니다.

정의에서 정답이라고 부른 것은 레이블입니다. 레이블은 예시 하나하나에 사람이 달아 둔 답 표시입니다. 메일에 붙인 「스팸」과 「정상」, 사진에 붙인 「고양이」가 레이블입니다. 비지도학습은 이 레이블 없이 데이터만 받습니다.

지도학습과 가르는 기준

비지도학습의 짝은 지도학습입니다. 지도학습은 레이블이 달린 예시를 받아 입력과 답 사이의 관계를 배웁니다. 이름의 「지도」는 교사가 답을 알려 주며 가르친다는 뜻입니다. 비지도학습에는 답을 알려 주는 교사가 없습니다.

두 방식은 받는 데이터와 내놓는 결과가 다릅니다. 같은 고객 기록을 두 방식에 넣어 보면 받는 데이터부터 채점하는 법까지 네 군데가 갈립니다.

지도학습 비지도학습
받는 데이터 고객 기록과 「다음 달에 떠남·남음」 레이블 고객 기록만
묻는 것 이 고객은 떠날까 고객들은 어떤 부류로 나뉘나
내놓는 것 새 고객 하나에 대한 답 데이터 전체에서 찾은 무리나 줄인 특성
채점하는 법 따로 떼어 둔 정답과 맞춰 본다 맞춰 볼 정답이 없다

표의 마지막 줄이 가장 큰 차이입니다. 지도학습은 정답과 견주어 몇 개를 맞혔는지 셀 수 있습니다. 비지도학습은 찾은 무리가 맞는지 판정할 기준이 데이터 안에 없습니다.

데이터를 점으로 놓고 재는 거리

비지도학습은 데이터 하나를 수 몇 개로 바꿔 놓고 시작합니다. 이 수 하나하나를 특성이라고 부릅니다. 고객이라면 한 달 방문 횟수와 한 달 구매액이 특성이 될 수 있습니다.

특성이 둘이면 고객 한 명을 평면 위의 점 하나로 찍을 수 있습니다. 점 사이가 가까우면 두 고객이 비슷하다는 뜻입니다. 비지도학습의 많은 방법이 이 거리를 재는 데서 출발합니다.

아래 코드는 고객 셋을 (방문 횟수, 구매액) 두 수로 적고 둘씩 거리를 잽니다. 구매액은 만 원 단위입니다. dist 는 두 점 사이의 곧은 거리를 계산하는 함수입니다.

Python
from math import dist
a = (2, 3)
b = (3, 4)
c = (20, 50)
dist(a, b)  # 1.41
dist(a, c)  # 50.33

a 와 b 는 1.41 만큼 떨어져 있습니다. a 와 c 는 50 넘게 떨어져 있습니다. 그러면 a 와 b 를 한 무리로, c 를 다른 무리로 나누게 됩니다. 레이블 없이 수만 보고 무리가 생겼습니다.

특성마다 단위가 다르면 거리가 한쪽으로 쏠립니다. 구매액을 만 원이 아니라 원 단위로 적으면 방문 횟수의 차이는 거리에 거의 안 드러납니다. 그래서 특성마다 값의 범위를 맞춰 두는 특성 스케일링을 먼저 하는 경우가 많습니다.

비지도학습이 찾는 세 가지 구조

비지도학습으로 하는 일은 무엇을 찾느냐에 따라 나뉩니다. 대표적인 작업은 셋입니다. 아래 표에 각 작업이 찾는 것과 보기를 나란히 놓았습니다.

작업 찾는 것 보기
군집화 비슷한 데이터끼리 모인 무리 고객을 구매 습관이 비슷한 몇 무리로 나눈다
차원 축소 많은 특성을 대신할 적은 수의 새 특성 특성 수백 개를 둘로 줄여 화면에 점으로 찍는다
이상 탐지 다른 것들과 동떨어진 데이터 평소와 다른 결제 한 건을 골라낸다

군집화는 데이터를 무리로 나누는 일입니다. 앞 소절에서 a·b 와 c 를 가른 것이 군집화입니다. 문서를 내용이 비슷한 것끼리 묶는 문서 군집화는 같은 일을 글에 대고 하는 것입니다.

차원 축소는 특성의 수를 줄이는 일입니다. 특성 하나를 축 하나로 보면, 특성이 수백 개인 데이터는 축이 수백 개인 공간의 점입니다. 이 축 하나를 차원 하나라고 부릅니다. 그래서 특성을 줄이는 일을 차원 축소라고 합니다.

줄일 때는 함께 오르내리는 특성들을 축 하나로 합칩니다. 자주 오는 고객일수록 구매액도 크다면 방문 횟수와 구매액은 함께 오르내립니다. 이 둘을 「얼마나 활발히 사는가」라는 축 하나로 합쳐도 고객 사이의 차이는 대부분 남습니다. 주성분 분석이 이렇게 합치는 대표 방법입니다.

이상 탐지는 무리에서 멀리 떨어진 점을 찾는 일입니다. 대부분의 결제가 모여 있는 곳에서 동떨어진 결제 한 건이 이상치입니다. 사기 거래를 미리 레이블로 모으기 어려울 때 레이블 없이 이 방식으로 찾습니다.

결과에 뜻을 붙이는 사람

비지도학습이 내놓는 무리에는 이름이 없습니다. 「1번 무리」·「2번 무리」처럼 번호만 붙어 나옵니다. 1번 무리가 「주말에 몰아서 사는 고객」이라는 해석은 사람이 무리 안의 데이터를 들여다보고 붙입니다.

flowchart TD
    subgraph S["지도학습"]
        S1["사람이 레이블을 단다"] --> S2["학습"]
        S2 --> S3["새 입력의 답"]
    end
    subgraph U["비지도학습"]
        U1["레이블 없는 데이터"] --> U2["학습"]
        U2 --> U3["번호만 붙은 무리"]
        U3 --> U4["사람이 뜻을 붙인다"]
    end
    S3 ~~~ U1

위 칸은 학습 전에 사람이 레이블을 답니다. 아래 칸은 학습 뒤에 사람이 결과를 읽습니다. 사람이 일하는 단계가 앞에서 뒤로 옮겨 갑니다.

결과를 판정하기 어려운 까닭

지도학습은 따로 떼어 둔 정답과 예측을 맞춰 보면 성적이 나옵니다. 비지도학습에는 그런 정답이 없습니다. 고객을 세 무리로 나눈 결과와 네 무리로 나눈 결과 가운데 어느 쪽이 맞는지 데이터는 말해 주지 않습니다.

그래서 판정은 간접적으로 합니다. 한 무리 안의 점끼리 얼마나 모여 있는지 수로 재는 방법이 있습니다. 다른 무리와 얼마나 떨어져 있는지도 함께 잽니다. 실루엣 계수가 그런 수입니다. 결과를 일에 써 보고 쓸모를 보는 방법도 있습니다. 무리마다 다른 쿠폰을 보내 반응을 견주는 식입니다.

무리를 몇 개로 나눌지도 대개 사람이 정합니다. 널리 쓰는 군집화 방법인 k-평균은 이름의 k 가 무리의 수입니다. k 는 돌리기 전에 사람이 정해 줍니다. 같은 데이터라도 k 를 바꾸면 다른 무리가 나옵니다.

비지도학습을 쓰는 때

비지도학습은 레이블을 모으기 어려울 때 씁니다. 로그 수억 줄에 사람이 하나하나 답을 다는 일은 현실적이지 않습니다. 반면 레이블 없는 데이터는 이미 쌓여 있는 경우가 많습니다.

찾을 것이 무엇인지 모를 때도 씁니다. 고객이 몇 부류로 나뉘는지 모르면 「이 고객은 어느 부류인가」라는 질문부터 세울 수 없습니다. 비지도학습으로 데이터를 먼저 훑어 부류를 드러낸 뒤에 질문을 세웁니다.

다른 학습의 앞 단계로도 씁니다. 차원 축소로 특성 수를 줄여 두면 뒤따르는 지도학습이 다룰 값이 줄어듭니다. 비슷한 데이터를 가까운 수로 옮겨 적는 임베딩도 레이블 없이 만드는 경우가 많습니다.

묻고 싶은 질문과 그 답이 담긴 레이블이 이미 있으면 사정이 다릅니다. 「이 메일이 스팸인가」를 알고 싶고 스팸 레이블이 있다면, 지도학습은 그 질문에 곧바로 답하도록 배웁니다. 비지도학습으로 가면 무리를 찾고 해석하는 단계를 한 번 더 거칩니다.

레이블의 양으로 가르는 이웃 방식

학습 방식은 레이블을 얼마나 쓰느냐로 줄 세울 수 있습니다. 비지도학습은 레이블을 하나도 안 쓰는 끝에 섭니다.

방식 받는 신호
지도학습 모든 예시에 달린 레이블
준지도학습 레이블 달린 예시 조금과 레이블 없는 예시 많이
자기지도학습 데이터에서 스스로 만든 문제와 답. 문장의 낱말 하나를 가리고 맞히는 식
비지도학습 레이블 없음

자기지도학습은 사람이 단 레이블을 쓰지 않습니다. 그래서 비지도학습의 한 갈래로 묶기도 합니다. 다만 비지도학습과 달리, 가린 낱말이라는 답을 데이터가 스스로 내줍니다.

강화학습은 이 줄 밖에 섭니다. 레이블 대신 행동의 결과로 받는 보상에서 배웁니다.

관련 항목

비지도학습이 속하는 상위 분류

머신러닝 · 인공지능 · 데이터 마이닝 · 통계

레이블을 쓰는 정도로 맞세워지는 학습 방식

지도학습 · 준지도학습 · 자기지도학습 · 강화학습 · 능동 학습

비지도학습으로 푸는 작업

군집화 · 군집 분석 · 차원 축소 · 이상 탐지 · 연관 규칙 · 밀도 추정 · 문서 군집화 · 토픽 모델링

비지도학습에 쓰는 알고리즘

k-평균 · 계층적 군집화 · DBSCAN · 가우시안 혼합 모델 · 주성분 분석 · t-SNE · UMAP · 오토인코더

비지도학습을 이루는 구성 요소

특성 · 특성 벡터 · 레이블 · 거리 함수 · 유클리드 거리 · 코사인 유사도 · 특성 스케일링 · 임베딩 · 모델

군집 결과를 재는 지표

실루엣 계수 · 관성 · 엘보 방법 · 데이비스-볼딘 지수

비지도학습을 쓰는 실무 작업

고객 세분화 · 추천 시스템 · 사기 탐지 · 로그 분석 · 데이터 시각화

헷갈리는 이웃

분류 · 클러스터 · 이상치 · 회귀

다른 이름: unsupervised learning · 비지도 학습