무엇을 근거로 배우는가
기계학습의 세 갈래를 고르는 기준으로 봅니다.
기계학습 모델은 문제 정의 → 데이터 수집 → 데이터 전처리 → 유형·알고리즘 선정 → 모델 생성 → 성능 평가의 순서로 만듭니다. 여기서 다룰 것은 네 번째 단계입니다. 모아 둔 데이터를 앞에 놓고 「이 문제는 어떤 방식으로 학습시켜야 하고, 어떤 알고리즘에 맡겨야 하는가」를 정하는 단계입니다. 먼저 무엇을 근거로 학습하는가를 기준으로 세 갈래를 세워 두고 시작하겠습니다.
레이블(label)이란 각 데이터에 미리 붙여 둔 정답 값을 말합니다. 강아지 사진에 「강아지」라고 적어 둔 것, 붓꽃 한 송이의 측정값 옆에 품종을 적어 둔 것이 레이블입니다. 아래 세 갈래는 이 레이블이 있느냐 없느냐에서 나뉘기 시작합니다.
지도학습 (supervised learning)
레이블이 함께 붙어 있는 데이터로 학습해, 새로 들어온 데이터의 레이블을 맞히는 방법입니다. 맞혔는지 틀렸는지를 채점할 정답이 손에 있다는 것이 이 갈래의 조건입니다.
비지도학습 (unsupervised learning)
레이블이 붙어 있지 않은 데이터에서 데이터끼리 얼마나 비슷한가를 근거로 숨어 있는 구조를 찾아내는 방법입니다. 채점할 정답이 없으므로 「맞혔다」가 아니라 「이렇게 뭉쳐 있더라」가 결과가 됩니다.
강화학습 (reinforcement learning)
정답 대신 행동의 결과로 받는 보상과 벌점을 근거로, 보상을 크게 만드는 행동 방식을 시행착오를 거치며 익히는 방법입니다. 데이터를 한 번에 받아 두는 것이 아니라 환경과 주고받으며 스스로 만들어 낸다는 점이 앞의 둘과 다릅니다.
세 갈래는 성능으로 경쟁하는 사이가 아닙니다. 풀려는 문제가 다르고, 손에 쥔 데이터가 다릅니다. 레이블이 없는 데이터를 두고 「지도학습이 더 정확하니까」라고 말할 수는 없습니다. 여기서는 지도학습(회귀·분류)과 비지도학습(군집)을 자세히 보고, 강화학습은 이름과 목표만 확인하고 넘어갑니다.
동영상 앱의 시청 기록에는 누가 어떤 성향의 시청자인지 적혀 있지 않습니다. 이 기록만으로 곧바로 할 수 있는 학습은 지도학습과 비지도학습 가운데 어느 쪽일까요?
회귀와 분류는 무엇이 다를까?
지도학습은 맞히려는 값의 생김새에 따라 다시 두 갈래로 나뉩니다.
레이블이 붙어 있다면 지도학습입니다. 그다음 물음은 하나입니다. 맞히려는 값이 눈금이 촘촘한 숫자인가, 정해진 몇 갈래 중 하나인가? 기온·가격·판매량처럼 연속적인 숫자를 맞히는 문제를 회귀(regression), 합격/불합격, 매/펭귄/돌고래처럼 정해진 갈래(범주) 중 하나를 맞히는 문제를 분류(classification)라고 합니다.
회귀 — 점들을 지나는 선
새 데이터의 가로 위치를 선에 대어 세로 값을 읽어 냅니다. 답은 선 위 어디에나 놓일 수 있는 숫자입니다.
분류 — 점들을 나누는 선
새 데이터가 선의 어느 쪽에 놓이는지만 봅니다. 답은 미리 정해 둔 갈래 이름 중 하나입니다.
「둘 다 선을 긋는다」로 한데 묶지 마세요
두 그림 모두 선이 하나씩 있지만, 그 선이 하는 일이 정반대입니다. 회귀의 선은 값을 읽어 내는 자이고, 분류의 선은 갈래를 나누는 울타리입니다. 세로축이 뜻하는 것도 다릅니다. 회귀에서는 세로축이 곧 맞히려는 값이지만, 분류에서는 세로축도 그저 또 하나의 속성일 뿐이고 갈래는 점의 색과 모양으로 나타나 있습니다. 회귀 그림에서 점 하나를 위아래로 옮기면 답이 달라지지만, 분류 그림에서는 선을 넘지 않는 한 답이 그대로입니다.
| 회귀 | 분류 | |
|---|---|---|
| 맞히려는 값 | 눈금이 촘촘한 연속적인 숫자 | 미리 정해 둔 몇 갈래 중 하나 |
| 답의 예 | 내일 최고 기온 24.3도, 다음 주 대여 건수 398건 | 스팸 / 정상, 매 / 펭귄 / 돌고래 / 곰 |
| 답이 조금 빗나가면 | 「24.3도라 했는데 25.0도였다」 — 얼마나 빗나갔는지 측정할 수 있다 | 「스팸이라 했는데 정상이었다」 — 맞았거나 틀렸거나 둘 중 하나다 |
「이 사과의 무게는 몇 그램일까?」와 「이 사과는 특/상/보통 중 어느 등급일까?」는 각각 회귀와 분류 중 무엇일까요? 위 표의 「맞히려는 값」 줄을 기준으로 판단해 보세요.
회귀는 어떻게 값을 맞힐까?
가장 기본이 되는 선형 회귀로 직선 하나가 답을 내놓는 원리를 봅시다.
회귀 모델의 정의
회귀 모델 (Regression Model)
기계학습 중 지도학습의 한 가지 방법으로, 맞힐 값이 적혀 있는 훈련 데이터를 학습한 후 새로 입력한 데이터에 대해 숫자로 된 답을 내놓는 모델입니다. 근거로 삼는 값과 맞히려는 값의 관계를 어떤 모양으로 볼 것인지에 따라 여러 방법이 있는데, 그중 관계를 직선으로 보는 가장 기본이 되는 방법이 선형 회귀(linear regression)입니다. 여기서는 이것을 봅니다.
회귀 모델의 동작 흐름
훈련 데이터
맞힐 값이 적혀 있음
학습
w와 b 정하기
성능 확인
오차 측정하기
예측
새로운 데이터
직선 하나로 답을 읽는 원리
어느 자전거 대여소에서 그날의 최고 기온과 그날의 대여 건수를 함께 기록해 두었다고 합시다. 기온은 우리가 근거로 삼는 값이니 독립 변수, 대여 건수는 그 근거로 맞히려는 값이니 종속 변수입니다.
| 최고 기온(°C) | 대여 건수 |
|---|---|
| 12 | 210 |
| 16 | 290 |
| 20 | 360 |
| 24 | 450 |
| 28 | 520 |
수업에서 원리를 확인하기 위해 지어낸 값입니다.
직선 하나를 식으로 적으면
Y = wX + b
X는 근거로 삼는 값(기온), Y는 맞히려는 값(대여 건수)입니다. w는 직선의 기울기로, X가 1만큼 달라질 때 Y가 얼마나 달라지는지를 나타냅니다. 가중치라고도 부릅니다. b는 직선의 높이를 맞춰 주는 숫자로, 세로축과 만나는 지점이라 y절편이라고 부릅니다. 선형 회귀가 하는 일은 이 두 숫자 w와 b를 데이터에 가장 잘 맞게 정하는 것입니다.
위 기록에서 얻은 직선은 대여 건수 = 19 × 기온 − 20 정도가 됩니다. 오차가 가장 작은 직선을 정확히 구하면 19.5 × 기온 − 24이지만, 여기서는 계산하기 쉽게 어림한 식을 씁니다. 최고 기온이 22도로 예보된 날이라면 19 × 22 − 20 = 398건쯤을 예상할 수 있습니다.
b를 「기본값」으로 읽지 마세요
위 식의 b는 −20입니다. 그렇다고 「기온이 0도인 날에는 대여가 −20건」이라는 뜻이 아닙니다. 대여 건수가 음수일 수는 없으니까요. b는 선의 높이를 맞춰 주는 숫자일 뿐이고, 0도라는 값은 우리가 기록한 12도~28도 바깥입니다. 데이터가 없는 구간까지 선을 늘여서 읽으면 이렇게 말이 되지 않는 답이 나옵니다.
기울기 19도 마찬가지로 조심해서 읽습니다. 「기온을 1도 올리면 대여가 19건 늘어난다」가 아니라, 「최고 기온이 1도 더 높았던 날은 대여 건수가 평균 19건쯤 더 많았다」는 뜻입니다. 우리가 기온을 조작한 것이 아니라 관찰해 적어 둔 것뿐이기 때문입니다.
선은 모든 점을 정확히 지나지 않습니다
표의 24도짜리 날은 실제로 450건인데, 식에 넣으면 436건이 나옵니다. 이 차이 14건을 오차(error)라고 합니다. 대여 건수는 기온 말고도 요일, 비, 행사 같은 여러 사정에 따라 달라지는데 직선 하나는 그 모두를 담을 수 없기 때문입니다. 선형 회귀는 모든 점의 오차를 통틀어 가장 작게 만드는 w와 b를 찾아 나갑니다. 한 가지 방법은 아무 직선이나 그어 놓고, 오차를 측정하고, 오차가 줄어드는 쪽으로 w와 b를 조금씩 옮기기를 반복하는 것입니다.
회귀 모델의 종류 — 선형 회귀의 두 가지
단순 선형 회귀
근거로 삼는 독립 변수가 하나일 때입니다. 위 예처럼 기온만 보고 대여 건수를 맞힙니다. 관계를 그림 한 장으로 그려 볼 수 있어 눈으로 확인하기 쉽습니다.
선형 회귀 시뮬레이터로 실습하기다중 선형 회귀
근거로 삼는 독립 변수가 둘 이상일 때입니다. 기온에 더해 요일과 강수량까지 함께 보는 식입니다. 독립 변수 하나마다 기울기가 하나씩 붙어, 각 변수가 답에 얼마나 몫을 하는지 함께 정해집니다.
다중 선형 회귀 시뮬레이터로 실습하기Y = wX + b에서 w와 b는 각각 직선의 무엇을 정하나요? 그리고 이 두 숫자를 정할 때 무엇을 작게 만들려고 하나요?
분류 모델이란 무엇일까?
기계학습에서 데이터를 정해진 레이블로 나누는 분류 모델을 알아봅시다.
분류 모델의 정의
분류 모델 (Classification Model)
기계학습 중 지도학습의 한 가지 방법으로, 레이블이 있는 훈련 데이터를 학습한 후
새로 입력한 데이터가 학습했던 데이터 중에서 어느 레이블에 속하는지를 찾는 모델입니다.
분류 모델의 결괏값은 학습했던 데이터의 레이블 중 하나가 됩니다.
분류 모델의 동작 흐름
훈련 데이터
레이블 있음
학습
분류 모델 생성
성능 확인
테스트 데이터
분류
새로운 데이터
분류 모델의 종류
k-최근접 이웃 (k-NN)
새로운 데이터가 들어왔을 때, k개의 가까운 이웃을 보고 어떤 카테고리로 분류할지 결정합니다.
k=5이면 가장 가까운 5개 이웃 중 다수의 레이블로 분류
로지스틱 회귀
여러 독립 변수를 결합하여 사건의 발생 가능성(확률)을 예측하는 데 사용합니다.
종속 변수가 범주형(주로 두 갈래)일 때 적합
의사결정트리
스무고개 게임처럼 질문을 한 번에 하나씩 던지며 예/아니요로 가지를 나누어 데이터를 분류합니다.
데이터를 가장 잘 구분하는 질문을 맨 위(루트 노드)에 배치
서포트 벡터 머신 (SVM)
두 갈래를 나누는 선 중에서 양쪽에서 가장 멀리 떨어진 선을 골라 경계로 삼습니다.
경계에서 가장 가까운 데이터까지의 여유 폭을 가장 넓게
분류에는 인공 신경망도 쓰입니다. 입력과 출력 사이에 여러 층을 두고 학습하는 방법인데, 여기서는 이름만 알아 둡시다.
분류 모델 가상 예시 — 감기 분류 모델
환절기에 사람마다 나타나는 증상 데이터(기침, 콧물, 오한, 체온)를 수집하여 감기 환자인지 정상인지 분류하는 모델을 만들 수 있습니다.
훈련 데이터
기침, 콧물, 오한, 체온 증상 데이터
분류 모델
감기 70% / 정상 30% 예측
분류 결과
감기 환자 / 정상인
특·상·보통 등급이 적힌 사과 사진 1,000장으로 분류 모델을 학습시켰습니다. 처음 보는 사과 한 알을 넣으면 모델의 답은 어떤 모양일까요? 학습 때 없던 「최상」 등급이 답으로 나올 수 있을까요?
분류 알고리즘은 저마다 어떻게 나눌까?
같은 분류 문제라도 알고리즘마다 「나누는 방법」이 다릅니다.
로지스틱 회귀 — 확률로 답한 뒤 문턱에서 나눈다
이름에 「회귀」가 들어 있지만 분류에 쓰는 알고리즘입니다. 앞에서 본 선형 회귀는 답이 얼마든지 커지거나 작아질 수 있어서, 답이 0 아니면 1이어야 하는 문제에는 그대로 쓸 수 없습니다. 그래서 로지스틱 회귀는 계산 결과를 0과 1 사이의 값으로 눌러 주는 함수에 한 번 통과시킵니다. 그러면 답이 「이 갈래일 확률」처럼 읽히고, 보통 0.5를 문턱으로 삼아 그보다 크면 한쪽, 작으면 다른 쪽으로 나눕니다.
예를 들어 어떤 메일에 대해 0.82가 나왔다면 「스팸」 쪽으로 분류합니다. 확률까지 함께 알려 준다는 것이 이 알고리즘의 쓸모입니다. 0.51과 0.99는 같은 「스팸」이지만 확신의 정도가 다르니, 애매한 것만 사람이 다시 살펴보는 식으로 쓸 수 있습니다.
두 갈래 중 하나를 고르는 문제에 잘 맞습니다. 갈래가 셋 이상이거나 두 무리 사이의 경계가 직선으로 그어지지 않는 모양이면 그대로는 잘 맞지 않아, 다른 방법을 함께 살펴봐야 합니다.
k-최근접 이웃 — 가까운 이웃에게 물어본다
새로운 데이터가 들어오면 규칙을 따로 계산해 두지 않고, 그 주위를 직접 둘러봅니다. 거리가 가장 가까운 k개의 이웃을 찾아, 그 이웃들이 가장 많이 속한 갈래로 새 데이터를 분류합니다. 데이터를 미리 압축한 규칙으로 바꿔 두는 대신, 있는 그대로 두었다가 필요할 때마다 비교해 본다는 점이 다른 알고리즘과 다릅니다.
k-NN 알고리즘의 분류 절차
①
분류하고 싶은 데이터와 기존 데이터 사이의 거리 계산
②
가까운 순서대로 나열
③
가장 가까운 k개 중 레이블별 빈도 세기
④
최다 빈도 레이블 값 반환
거리 계산에는 피타고라스 정리가 사용됩니다. 두 점 (1,2)와 (5,5) 사이의 거리는 √((5-1)² + (5-2)²) = √25 = 5입니다.
k를 몇으로 두느냐에 따라 답이 달라집니다
똑같은 데이터라도 k=1일 때와 k=3일 때 결과가 달라질 수 있습니다. k가 작으면 바로 옆 데이터 하나에 답이 좌우되어, 그 하나가 잘못 적힌 값이면 그대로 끌려갑니다. 반대로 k가 너무 크면 멀리 있는 데이터까지 투표에 끼어들어 동네의 특징이 뭉개집니다.
그러니 「k가 클수록 좋다」도, 「작을수록 좋다」도 아닙니다. 여러 k를 넣어 보고 새 데이터에 가장 잘 통하는 값을 고르는 것이 보통의 방법입니다.
서포트 벡터 머신 — 가장 여유 있는 경계를 고른다
두 무리를 나누는 직선은 하나가 아닙니다. 지금 있는 데이터만 놓고 보면 무수히 많은 직선이 두 무리를 똑같이 깔끔하게 나눕니다. 그렇다면 그중 어느 것을 골라야 아직 보지 못한 새 데이터까지 잘 나눌까요? 서포트 벡터 머신은 「양쪽 무리에서 가장 멀찍이 떨어진 선」을 답으로 삼습니다.
서포트 벡터
경계에 가장 가까이 있는 데이터들입니다. 여유 폭을 결정하는 것이 바로 이 데이터들이라 「경계를 떠받친다」는 뜻의 이름이 붙었습니다. 멀리 떨어진 데이터는 경계를 정하는 데 끼어들지 않습니다.
마진(margin)
경계선과 서포트 벡터 사이의 여유 폭입니다. 이 폭이 넓을수록 새 데이터가 조금 다른 자리에 놓여도 같은 쪽으로 판정될 가능성이 큽니다.
대신 계산량이 많아 데이터가 아주 많으면 시간이 오래 걸리고, 속성이 여럿일 때 그 경계가 왜 그렇게 그어졌는지 말로 설명하기 어렵습니다. 설명이 중요한 문제라면 다른 알고리즘을 함께 비교해 봐야 합니다.
로지스틱 회귀와 k-최근접 이웃은 새 데이터의 갈래를 정할 때 각각 무엇을 보나요?
트리는 어떻게 나눌까?
질문을 이어 던져 갈래를 좁혀 가는 방법을 봅시다.
의사결정트리의 구조와 분류 절차
의사결정트리는 입력값을 이용해 스무고개 게임처럼 한 번에 하나씩 질문을 던지며 정답을 찾아가는 방식으로 데이터를 분류합니다. 질문의 순서(분할 기준)는 트리의 성능에 큰 영향을 미치므로, 데이터를 가장 잘 구분하는 속성을 첫 번째 질문(루트 노드)으로 정해야 합니다. 만약 덜 중요한 속성을 먼저 질문하면 트리가 데이터를 효과적으로 구분하지 못하게 됩니다.
매·펭귄·돌고래·곰을 분류하는 의사결정트리의 예
트리가 완성되면 새로 입력된 데이터를 맨 위 질문부터 「예/아니요」에 따라 아래로 내려가며 분류합니다. 예를 들어 「날개가 있나요?」에 예, 「날 수 있나요?」에 예라고 답하면 매라는 잎 노드(leaf node)에 도달합니다.
장점 — 해석 가능성
각 분기점이 명확한 질문으로 이루어져 있어 매우 직관적이고 시각적으로 이해하기 쉽습니다. 왜 특정 결론에 도달했는지 쉽게 설명할 수 있습니다.
한계 — 과적합
가지를 너무 많이 만들면 훈련 데이터에만 지나치게 잘 맞춰져 새로운 데이터에서는 잘 작동하지 않는 과적합(overfitting)이 발생할 수 있습니다. 가지치기(pruning, 이미 만든 트리에서 쓸모가 적은 가지를 잘라 단순하게 만드는 일. 탐색의 가지치기와는 이름만 같다)나 트리 깊이 제한으로 완화합니다.
탐구활동 — 의사결정트리에서 최종 분류 결과 작성하기
위 트리를 따라가며, 다음 조건에 맞는 동물이 무엇으로 분류되는지 적어 봅시다.
| 조건 | 분류 결과 |
|---|---|
| 날개가 없고, 지느러미가 있다. | |
| 날개가 있고, 날 수 있다. | |
| 날개가 있지만, 날지 못한다. |
① 날개 없음 + 지느러미 있음 → 돌고래
② 날개 있음 + 날 수 있음 → 매
③ 날개 있음 + 날지 못함 → 펭귄
거리를 계산하는 알고리즘에는 값의 범위를 먼저 맞춰야 합니다
정규화·표준화(값의 범위를 같은 자로 맞추는 일)가 왜 필요한지 여기서 답이 나옵니다. k-최근접 이웃과 서포트 벡터 머신은 데이터 사이의 거리를 계산해서 판단합니다. 통학 거리(0~5000 m)와 하루 공부 시간(0~6시간)을 그대로 쓰면 값의 폭이 훨씬 넓은 통학 거리 쪽이 거리를 거의 혼자 결정해 버립니다. 자를 같게 맞춰 주지 않으면 알고리즘이 엉뚱한 이웃을 고르게 됩니다.
반대로 의사결정트리는 「이 값보다 큰가, 작은가」만 비교하므로 값의 범위에 거의 영향을 받지 않습니다. 선형 회귀도 단위가 달라지면 기울기가 그만큼 달라져 스스로 맞춰집니다. 정규화는 언제나 해야 하는 절차가 아니라, 거리를 계산하는 알고리즘에 필요한 준비인 셈입니다.
네 알고리즘 가운데 데이터 사이의 거리를 계산하는 것은 어느 것들인가요? 그리고 그 알고리즘에는 왜 값의 범위를 맞추는 일이 먼저 필요할까요?
정답이 없으면 무엇을 할 수 있을까?
레이블이 붙어 있지 않은 데이터에서 덩어리를 찾아내는 군집화를 봅시다.
군집 모델의 정의
군집화 (Clustering)
기계학습 중 비지도학습의 한 가지 방법으로, 레이블이 붙어 있지 않은 데이터를 서로 비슷한 것끼리 묶어 몇 개의 덩어리로 나누는 일입니다. 묶여 나온 덩어리 하나하나를 군집(cluster)이라고 부릅니다.
군집 모델의 동작 흐름
데이터
레이블 없음
묶기
비슷한 것끼리
비교하기
여러 번 실행해 보기
해석
사람이 이름 붙이기
분류의 흐름과 비교해 보세요. 맨 앞에 레이블이 없고, 맨 뒤에 사람이 해석하는 단계가 붙는다는 것이 다릅니다.
분류와 군집은 무엇이 다를까
예를 들어 학교 매점의 한 학기 결제 기록만 있다고 합시다. 누가 어떤 손님인지 적혀 있지 않아도, 「아침에 자주 오는 무리」, 「점심에 몰리는 무리」, 「방과 후에만 오는 무리」처럼 비슷한 기록끼리 뭉쳐 있는 모습은 찾아낼 수 있습니다. 이렇게 찾아낸 덩어리를 보고 「이 무리는 이런 손님이구나」라고 이름을 붙이는 것은 사람의 몫입니다.
분류와 군집은 「나눈다」는 말만 같습니다
분류는 나눌 칸의 이름과 개수가 미리 정해져 있고, 정답이 적힌 데이터로 「어느 칸에 넣어야 하는지」를 배웁니다. 군집은 칸이 미리 없습니다. 데이터를 묶고 난 뒤에야 덩어리가 생기고, 그 덩어리가 무엇을 뜻하는지는 사람이 살펴보고 해석합니다. 그래서 군집의 목적은 「어느 칸에 속하는지 맞히는 것」이 아니라 몰랐던 구조를 알아내어 쓸모 있게 쓰는 것입니다.
군집 모델의 종류 — k-평균 알고리즘
이름부터 풀어 봅시다. k는 몇 개의 덩어리로 나눌지 우리가 미리 정해 주는 개수이고, 평균은 각 덩어리의 중심점을 옮길 때 쓰는 계산입니다. 알고리즘도 이 두 낱말대로 움직입니다.
나눌 개수 k를 정하고, 중심점 k개를 아무 자리에나 찍어 둡니다.
데이터마다 가장 가까운 중심점을 찾아 그 덩어리에 넣습니다.
덩어리마다 속한 데이터들의 평균 위치를 구해 중심점을 그리로 옮깁니다.
중심점이 더 이상 움직이지 않을 때까지 2와 3을 반복합니다.
한 번 실행해서 나온 답이 유일한 답은 아닙니다
1단계에서 중심점을 아무 자리에나 랜덤으로 찍는다고 했습니다. 어디에 찍었느냐에 따라 최종 덩어리(클러스터)가 달라질 수 있습니다. 그래서 보통 여러 번 실행해 보고 결과를 비교합니다.
k를 몇으로 둘지도 우리가 정해야 합니다. k가 너무 작으면 성격이 다른 것까지 한 덩어리로 묶이고, 너무 크면 굳이 나눌 필요가 없는 것까지 쪼개집니다. 그리고 k-평균은 거리를 계산하는 알고리즘이므로, 앞에서 본 것처럼 값의 범위를 먼저 정규화하여 맞춰 주어야 합니다.
「스팸 메일을 걸러 내기」와 「매점 손님을 비슷한 무리로 나누기」 중, 나눌 칸이 미리 정해져 있는 쪽은 어느 것인가요?
무엇부터 물어보아야 할까?
알고리즘은 외워서 고르는 것이 아니라 물어서 좁혀 가는 것입니다.
지금까지 여러 알고리즘의 이름이 나왔습니다. 문제를 앞에 두고 이 이름들을 하나씩 떠올려서는 고를 수 없습니다. 순서를 정해 두고 두 가지만 먼저 물으면 후보가 크게 줄어듭니다.
첫 번째 물음 — 정답이 붙어 있는가?
데이터마다 맞혀야 할 답이 이미 적혀 있다면 지도학습, 적혀 있지 않다면 비지도학습입니다. 이 물음 하나로 후보가 크게 줄어듭니다. 레이블이 없는데 「분류를 해 보자」고 하면, 무엇을 기준으로 맞았다고 할지부터 정할 수가 없습니다.
두 번째 물음 — 맞히려는 값이 무엇인가?
지도학습으로 정해졌다면, 맞히려는 값이 촘촘한 숫자인지 정해진 몇 갈래인지를 봅니다. 앞에서 회귀와 분류를 구분한 그 기준 그대로입니다. 여기까지 오면 남는 후보는 서너 개뿐이고, 그다음은 데이터의 사정을 보고 고르면 됩니다.
「X-ray 사진과 종양의 크기로 종양이 악성인지 양성인지 판단하기」는 위 흐름도에서 어느 상자에 도착하나요? 두 물음에 차례로 답해 보세요.
남은 후보 중에서 무엇을 고를까?
알고리즘마다 잘 맞는 상황과 따라오는 대가가 다릅니다.
| 알고리즘 | 이럴 때 고른다 | 함께 따라오는 조건 |
|---|---|---|
| 단순 선형 회귀 | 근거로 삼을 속성이 하나이고, 그 속성과 맞히려는 값이 대체로 직선을 이룰 때 | 관계가 휘어 있으면 직선 하나로는 잘 맞지 않는다 |
| 다중 선형 회귀 | 근거로 삼을 속성이 둘 이상이고, 각 속성이 답에 얼마나 몫을 하는지도 보고 싶을 때 | 속성이 늘수록 각 기울기를 해석하기 까다로워진다 |
| 로지스틱 회귀 | 두 갈래 중 하나로 나누고, 그 갈래에 속할 확률까지 함께 알고 싶을 때 | 갈래가 셋 이상이거나 경계가 직선이 아니면 그대로는 잘 맞지 않는다 |
| k-최근접 이웃 | 데이터 규모가 크지 않고, 갈래가 위치로 뚜렷이 구분되는 간단한 문제일 때 | 값의 범위를 맞춰야 하고, 데이터가 많아지면 매번 거리를 계산하느라 느려진다 |
| 서포트 벡터 머신 | 속성이 많은 데이터에서 새 데이터에도 잘 통하는 경계가 필요할 때 | 계산량이 많고, 경계가 왜 그렇게 그어졌는지 설명하기 어렵다 |
| 의사결정트리 | 결과만이 아니라 왜 그렇게 나뉘었는지 설명할 수 있어야 할 때 | 가지를 너무 늘리면 훈련 데이터에만 맞는 과적합이 생긴다 |
| k-평균 | 레이블이 없고, 몇 덩어리로 나눌지 정하거나 짐작할 수 있을 때 | 거리를 계산하므로 수치형 값이어야 하고, 처음 중심점 위치에 따라 결과가 달라질 수 있다 |
「가장 좋은 알고리즘」은 표에 없습니다
「함께 따라오는 조건」 칸을 눈여겨보세요. 어느 알고리즘에나 따라오는 대가가 적혀 있습니다. 설명하기 쉬운 쪽을 고르면 정확도를 조금 내주는 경우가 많고, 경계를 잘 긋는 쪽을 고르면 설명이 어려워집니다. 그래서 알고리즘을 고른 다음에는 왜 그것을 골랐는지 말할 수 있어야 합니다. 이유를 댈 수 없다면 두 물음부터 다시 따라가 봅니다.
탐구활동 — 문제에 맞는 유형과 알고리즘 고르기
다음 문제들을 앞의 두 물음에 차례로 넣어 보고, 유형과 알고리즘을 정한 뒤 그렇게 고른 이유를 적어 봅시다. 알고리즘 이름보다 이유 칸을 먼저 채워도 됩니다.
| 해결할 문제 | 유형 | 알고리즘 | 고른 이유 |
|---|---|---|---|
| 기온·강수량·일사량으로 다음 주 딸기 수확량이 몇 킬로그램일지 알아보기 | |||
| 지방 함량·색·조직 상태를 측정해 고기의 등급을 매기고, 그 판정 근거를 사람에게 설명하기 | |||
| 학교 도서관 대출 기록만 가지고 이용 습관이 비슷한 학생들을 몇 무리로 나누어 보기 | |||
| 이전 응시 기록으로 자격 시험에 합격할 가능성이 얼마나 되는지 확률로 알려 주기 |
다 적었으면 옆 친구와 비교해 봅시다. 같은 문제에 다른 알고리즘을 적었다면 누가 틀린 것이 아니라, 서로 다른 조건을 중요하게 본 것일 수 있습니다. 어떤 조건을 앞에 두었는지 서로 들어 봅시다.
동아리 추천 프로그램이 학생마다 그 동아리를 권한 까닭을 하나하나 설명해야 해서 의사결정트리를 골랐습니다. 이 선택으로 무엇을 얻었고, 대신 무엇을 조심해야 할까요?
오렌지(Orange) 실습 — 정형 데이터를 분류해 볼까?
붓꽃 데이터와 오렌지 프로그램으로 k-NN 분류 모델을 체험해 봅시다.
오렌지(Orange) 프로그램 실습 — 붓꽃(Iris) 데이터 분류
6단계로 붓꽃의 세 가지 품종을 k-NN 모델로 분류하는 과정을 실습합니다.
붓꽃 데이터셋 (Iris Dataset)
붓꽃 데이터는 꽃잎과 꽃받침 부위를 측정한 값과 품종을 속성으로 가지는 정형 데이터입니다. 전체 150개 데이터 중 약 70%를 훈련 데이터로 학습하고 30%를 테스트합니다.
| 속성 | 유형 | 역할 | 예시 값 |
|---|---|---|---|
Id |
범주형(번호) | meta | 1, 2, 3 … |
sepal length (꽃받침 길이) |
연속형 | feature | 5.1, 4.9 … |
sepal width (꽃받침 너비) |
연속형 | feature | 3.5, 3.0 … |
petal length (꽃잎 길이) |
연속형 | feature | 1.4, 1.3 … |
petal width (꽃잎 너비) |
연속형 | feature | 0.2, 0.4 … |
species (품종) |
범주형 | target | setosa / versicolor / virginica |
feature(독립 변수)는 판단의 근거로 삼는 속성, target(종속 변수)은 그 근거로 맞히려는 속성을 뜻합니다. 꽃이 커서 그 품종이 된 것이 아니라, 우리가 크기를 근거로 품종을 맞히기로 정한 것입니다.
훈련 데이터 준비
오렌지 프로그램에서 File 위젯을 더블 클릭하여 다운로드한 붓꽃 데이터
iris.csv 파일을 업로드합니다.
File 위젯 → iris.csv 업로드 완료 시 150개 행과 Id를 포함한 6개 열 확인
데이터 시각화
File 위젯에 Scatter Plot(산점도) 위젯을 연결하여 데이터의 분포를 확인합니다. 어떤 속성 조합이 붓꽃의 종류를 구분하기 좋은지, 품종을 구별하는 데 가장 도움이 되는 속성이 무엇인지 탐색합니다.
꽃잎 길이와 꽃잎 너비를 조합했을 때 세 품종의 분포가 가장 명확하게 구분됩니다.
데이터 속성 역할 설정
File 위젯을 더블 클릭하면 데이터 속성의 유형과 역할을 설정할 수 있습니다. 붓꽃의 세 가지 품종 중 하나로 분류하는 문제이므로 아래와 같이 설정합니다.
독립 변수
꽃잎 길이·너비
꽃받침 길이·너비
종속 변수
Species (품종)
유형: categorical
참고 정보
Id (일련번호)
분류에 사용 안 함
붓꽃 데이터에서 꽃잎·꽃받침의 길이와 너비는 속성과 레이블 중 어느 쪽인가요?
오렌지(Orange) 실습 — 모델을 만들고 결과를 확인하기
준비한 데이터에 분류 모델을 붙여 결과를 읽어 봅시다.
분류 모델 설정 — k-NN 적용
[Model] 목록에서 kNN 위젯을 선택하고 iris.csv 파일과 연결합니다. 데이터를 훈련용과 테스트용으로 나누려면 File 위젯 뒤에 Data Sampler 위젯을 두고, 뽑은 70%는 kNN 위젯에, 남은 30%는 Predictions 위젯에 연결합니다. 분류 결과를 확인하기 위해 kNN 위젯도 Predictions 위젯에 연결합니다.
File 위젯
iris.csv
kNN 위젯
분류 모델 학습
kNN 위젯을 더블 클릭하면 k값(이웃의 수)을 변경할 수 있으며, k값에 따라 분류 결과가 달라집니다.
Predictions 위젯 결과: 테스트 데이터 45개 중 43개를 맞혀 약 95.6% 정확도(CA: 0.956)로 분류 성공
새 데이터 준비
길에서 발견한 붓꽃의 각 부위를 측정한 값을 새 데이터로 사용합니다. 스프레드시트 프로그램에 측정값을 입력하고 csv 파일로 저장합니다. 이때, 품종(species) 속성은 제거하고 저장합니다.
새 데이터 예시 (3개 행)
| Id | sepal length | sepal width | petal length | petal width |
|---|---|---|---|---|
| 151 | 5.3 | 3.6 | 1.3 | 0.3 |
| 152 | 4.8 | 3.1 | 1.7 | 0.3 |
| 153 | 5.0 | 3.7 | 1.3 | 0.4 |
새 데이터로 분류 결과 확인
새 데이터를 오렌지에서 불러와 Predictions 위젯에 연결합니다. 학습을 마친 k-NN 모델과 새 데이터를 동시에 연결하면 새로운 붓꽃이 어떤 품종인지 예측합니다.
분류 결과
3개의 새 데이터 모두 Iris-setosa로 분류되었습니다.
레이블이 있는 붓꽃 데이터로 학습한 모델이 새로운 붓꽃의 품종을 예측했습니다. 이 예측이 맞았는지는 실제 품종을 따로 확인해야 알 수 있습니다.
로지스틱 회귀 위젯을 함께 연결하면 두 모델의 분류 결과를 나란히 비교할 수 있습니다. 이 데이터에서는 로지스틱 회귀 쪽 정확도가 조금 더 높게 나오기도 하는데, 그렇다고 로지스틱 회귀가 언제나 더 나은 알고리즘인 것은 아닙니다. 데이터가 바뀌면 순서도 바뀝니다. 여러 모델을 함께 걸어 보고 비교하는 것 자체가 이 실습의 목적입니다.
붓꽃 대신 펭귄 세 종의 부리 길이·날개 길이·몸무게를 적은 표로 같은 실습을 한다면, File 위젯에서 어떤 속성을 target으로 두어야 할까요?
오렌지(Orange) 실습 — 비정형 데이터를 분류해 볼까?
과일 이미지 데이터를 로지스틱 회귀 모델로 분류해 봅시다.
오렌지(Orange) 프로그램 실습 — 과일 이미지 분류
과일 이미지 데이터를 로지스틱 회귀로 분류합니다.
훈련 데이터 준비 — 이미지 임베딩
다섯 가지 과일 이미지 데이터를 Import Images 위젯에 업로드한 후, Image Embedding 위젯을 연결하여 이미지 데이터를 숫자 배열로 변환합니다. 이것이 기계학습에 사용할 훈련 데이터를 준비하는 단계입니다.
Import Images
5종 과일 이미지 업로드
Image Embedding
이미지 → 2,048개 숫자 배열(Inception v3 임베더를 고른 경우)
분류 모델 선택 — 로지스틱 회귀
[Model] 목록에서 Logistic Regression(로지스틱 회귀) 위젯을 선택하여 Image Embedding 위젯과 연결합니다. 로지스틱 회귀 모델은 변환된 이미지 데이터를 학습합니다.
이미지 임베딩으로 변환된 데이터는 2,048개의 수치형 속성(연속형)을 가집니다. 과일 종류는 범주형 데이터이므로 분류 모델을 씁니다. 로지스틱 회귀는 본래 두 갈래를 나누는 방법이지만, 오렌지의 로지스틱 회귀 위젯은 갈래가 셋 이상이어도 쓸 수 있게 확장되어 있습니다.
테스트 데이터 준비
과일 이미지 데이터셋의 Test 폴더에서 몇 개의 이미지를 임의로 뽑아 「테스트 데이터」 폴더를 만든 뒤, 새 Import Images 위젯에 업로드합니다. 마찬가지로 Image Embedding 위젯을 연결하여 숫자 배열로 변환합니다.
훈련 데이터와 구분하기 위해 Import Images 위젯을 마우스 오른쪽 클릭 후 이름을 Test Images로 변경하면 편리합니다.
테스트 데이터로 분류 결과 확인
[Evaluate] 목록에서 Predictions 위젯을 선택하여 Logistic Regression 위젯과 테스트 데이터의 Image Embedding 위젯을 연결합니다.
비정형 데이터 분류 전체 워크플로우
Import Images
훈련 이미지
Image Embedding
숫자 배열 변환
Logistic Regression
분류 모델 학습
Predictions
결과 확인
분류 결과
6개의 테스트 과일 이미지를 100% 정확하게 분류했습니다. 다만 여섯 장뿐이라, 이 결과만으로 어떤 사진이든 다 맞힌다고 할 수는 없습니다.
이처럼 분류 모델은 입력받은 데이터를 기반으로 새로운 데이터를 예측하여 분류 결과를 출력합니다.
이미지를 분류하기 전에 임베딩 단계를 먼저 거치는 까닭은 무엇일까요? 위 실습 설명에서 그 이유를 찾아보세요.
분류 모델은 어디에 적용될까?
우리 일상 곳곳에서 분류 모델이 활용되고 있습니다.
스팸 메일 분류
이메일에서 스팸 메일과 정상 메일을 두 갈래 중 하나로 나누는 이항 분류로 자동 분류합니다.
자율 주행 자동차
주변의 물체를 인식하여 자동차, 사람, 신호등 등을 자동으로 분류합니다.
질병 진단
환자들의 누적 증상 데이터로 감기, 당뇨병, 심장병 등의 가능성을 분류해 의사의 진단을 돕습니다.
감정 인식
사진 속 표정에서 특성을 추출하여 분노·경멸·혐오·공포·행복 등으로 분류합니다.
영화 리뷰
리뷰 텍스트를 분석하여 감정이 긍정(positive)/부정(negative)인지 자동 분류합니다.
과일 등급 분류
AI 과일 선별기가 카메라로 과일 이미지를 인식하여 종류 및 등급을 구분합니다.
생활 속의 분류 문제
얼굴 인식
지문 인식
꽃 종류 분류
뉴스 자동 분류
택배 물류 센터가 상자를 찍은 사진으로 「파손」과 「정상」을 나눕니다. 이 분류에서 모델에 들어가는 입력은 무엇이고, 레이블은 무엇일까요?
스스로 해결하기 — 탐구활동
내가 찾은 사례는 어떤 기준으로 데이터를 나누고 있을까?
분류 모델이 적용된 사례를 비주얼 씽킹으로 표현해 봅시다.
활동 과제
일상생활 속에서 인공지능의 분류 모델이 적용된 사례를 찾아
비주얼 씽킹(Visual Thinking)으로 표현해 봅시다.
작성 방법
제목: 인공지능의 분류 모델이 적용되어 우리의 삶이 어떻게 변하였는지의 관점에서 제목을 자유롭게 적습니다.
사례: 동그라미 안에 인공지능의 분류 모델이 적용되는 사례를 간단한 글과 그림으로 표현합니다.
설명: 동그라미 바깥에 분류 모델이 적용되는 사례를 글로 작성합니다.
| 항목 | 내용 기록 |
|---|---|
| 제목 | |
| 분류 모델 사례 ① | |
| 분류 모델 사례 ② |
인공지능이 스마트하게 분류하는 세상
자율 주행 자동차 — 카메라로 주변의 사람, 자동차, 신호등을 인식하여 자동으로 분류하고 안전하게 운전한다.
카메라 앨범 분류 — 스마트폰이 사진 속 인물, 장소, 동물 등을 인식하여 자동으로 앨범을 정리해 준다.
확인 퀴즈
배운 내용을 확인해 봅시다.
다음 중 분류 모델에 대한 설명으로 옳은 것은?
k-NN 알고리즘에 대한 설명으로 옳은 것은?
오렌지 프로그램에서 과일 이미지 비정형 데이터를 분류하기 위해 사용한 모델은?
의사결정트리에 대한 설명으로 옳지 않은 것은?
회귀와 분류를 구분하는 기준으로 옳은 것은?
쇼핑몰의 구매 기록만 있고 고객 유형이 적혀 있지 않을 때, 비슷한 고객끼리 묶어 보려고 합니다. 알맞은 것은?
알고리즘을 고르는 일에 대한 설명으로 옳지 않은 것은?
핵심 정리
유형과 알고리즘은 두 가지를 차례로 물어 좁힙니다. 먼저 데이터에 레이블(정답)이 붙어 있는가를 물어 지도학습과 비지도학습을 구분합니다. 지도학습이라면 맞히려는 값이 촘촘한 숫자인가, 정해진 몇 갈래인가를 물어 회귀와 분류를 구분합니다. 여기까지 오면 후보가 서너 개로 줄고, 그다음은 데이터의 사정과 각 알고리즘이 요구하는 조건을 비교해 고릅니다. 어느 알고리즘도 언제나 가장 좋지는 않으므로, 고른 이유를 말할 수 있어야 합니다.
세 갈래의 구별점
- 지도학습 — 레이블이 붙은 데이터로 규칙을 찾는다
- 비지도학습 — 데이터끼리의 비슷함으로 숨은 구조를 찾는다
- 강화학습 — 보상과 벌점을 근거로 행동 방식을 익힌다
회귀 · 분류 · 군집
- 회귀 — 촘촘한 숫자를 맞힌다. 선은 값을 읽어 내는 자
- 분류 — 정해진 갈래 중 하나를 맞힌다. 선은 갈래를 나누는 울타리
- 군집 — 칸이 미리 없다. 묶고 난 뒤 사람이 해석한다
알고리즘과 조건
- 선형 회귀 — 관계를 직선 하나로. 기울기와 절편을 정한다
- 로지스틱 회귀 — 확률로 답하고 문턱에서 나눈다. 두 갈래에 잘 맞는다
- k-NN · SVM — 거리를 계산하므로 값의 범위를 먼저 맞춘다
- 의사결정트리 — 설명하기 쉽다. 가지가 늘면 과적합
- k-평균 — k를 정해 주어야 하고, 처음 중심점에 따라 결과가 달라진다
오렌지로 확인한 것
정형 데이터(붓꽃 측정값)는 그대로 모델에 넣고, 비정형 데이터(과일 이미지)는 이미지 임베딩으로 숫자 배열로 바꾼 뒤 넣습니다. 그다음 절차는 같습니다 — 훈련 데이터로 학습시키고, 테스트 데이터로 결과를 확인합니다.