[기계학습] 1.3 기계학습 유형

Serun1017·2026년 3월 12일

기계학습

목록 보기
3/3

본 글은 책 <머신러닝 교과서 파이토치편, 세바스찬 라시카, 유시 (헤이든) 류, 바히드 마지리리 지음, 박해선 옮김, 길벗>, K-MOOC 강의 <모두를 위한 머신러닝, 공성근, 세종대학교, 2024-1학기>, 세종대학교 강의 <기계학습, 권순일, 세종대학교, 2024-1학기> 내용과 추가 자료를 바탕으로 재구성하였습니다.

1.3 기계학습 유형


지도학습(Supervised Learning)

지도학습(Supervised Learning)은 특징 벡터 XX와 목푯값 YY가 모두 주어진 상황에서 진행되는 학습으로, NN개의 학습 데이터 {(x1,y1),(x2,y2),,(xN,yN}\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N\}를 기반으로 알고리즘을 이용하여 함수 gg를 찾는다.

TrainingExample={(x1,y1),(x2,y2),,(xN,yN)}X={x1,x2,,xN}Y={y1,y2,,yN}g:XYTraining \,Example = \{(x_1,y_1), (x_2,y_2), \cdots,(x_N, y_N)\} \\ X= \{x_1, x_2, \cdots,x_N\} \\ Y= \{y_1,y_2,\cdots,y_N\} \\ g: X \rightarrow Y \\

지도학습의 주요 목적은 레이블(label)된 훈련 데이터에서 모델을 학습하여 본 적 없는 미래 데이터에 대해 예측을 만드는 것이다. 때문에 지도학습은 정확한 입력-출력 쌍이 필요하며, 학습된 모델은 이러한 쌍을 기반으로 새로운 입력에 대한 출력을 예측한다. 이러한 특징 때문에 지도학습은 데이터에 매우 의존적이다.

Supervised Learning

분류(Classfication)

분류(Classfication)는 지도 학습의 하위 카테고리로, 과거의 관측을 기반으로 입력 데이터를 미리 정의된 여러 개의 범주 또는 클래스 중 하나로 분류하는 문제이다. 예를 들어 스팸 메일을 필터링 하기 위해 입력 데이터로 메일의 내용을 넣으면 그 출력(분류 클래스)으로 <스팸 or 스팸 아님>으로 나온다. 이를 이진 분류(binary classfication) 문제라고 한다.

이진 분류 모델

그러나 현실에서는 두 개 이상의 클래스 레이블을 가진 경우가 더 많다. 예를 들어 Iris 분류 문제의 경우 X={Sepallength,Sepalwidth,Petallength,Petalwidth}X=\{Sepal\,length, \,Sepal\,width, \,Petal\,length, \,Petal\,width\}를 입력으로 받아 Y={Setosa,Versicolor,Virginica}Y=\{Setosa, \,Versicolor, \,Virginica\}로 나눈다. 이처럼 두 개 이상의 클래스 레이블로 나누는 문제를 다중 분류(multiclass classfication) 문제라고 한다.

Iris dataset

분류 모델은 데이터들을 결정 경계(decision boundary)를 이용해 분류한다. 다음과 같이 Petal length와 Petal width를 이용해 Iris class를 분류하는 모델이 있을 때, 해당 데이터들을 2차원 그래프에 두었을 때 이들 클래스를 분류하는 선을 볼 수 있다. 이 선을 결정 경계(decision boundary)라고 하며, 분류 모델은 해당 결정 경계를 학습한다.

Iris classfication

예시

분류 모델을 확률론 관점에서 본다면 결합 확률 문제(Join probability distribution)로 볼 수 있다.

결합분포(Joint probability distribution)

결합 분포란 확률 변수가 여러 개 일때, 이들을 함께 고려하는 확률 분포이다. 예를 들어, 주사위를 던졌을 때, AA는 주사위 눈금 수가 짝수일 경우 11, 아닐 경우 00이라고 하고, BB는 주사위 눈금 수가 2,3,52, 3, 5가 나올 때 11, 아닐 경우 00이라고 하면 이를 표로 작성하면 다음과 같다.

주사위123456
AA001100110011
BB001111001100

이때, AABB의 결과의 따른 확률은 다음과 같다.

P(A=0,B=0)=P{1}=16P(A=0, B=0)=P\{1\}=\frac{1}{6}
P(A=0,B=1)=P{3,5}=26P(A=0, B=1)=P\{3, 5\}=\frac{2}{6}
P(A=1,B=0)=P{4,6}=26P(A=1, B=0)=P\{4, 6\}=\frac{2}{6}
P(A=1,B=1)=P{2}=16P(A=1, B=1)=P\{2\}=\frac{1}{6}

예를 들어 무게를 이용해 사과와 배를 분류하는 모델을 만든다고 하자. 이 때 데이터는 다음과 같이 주어졌다.

무게( gram)100 ~ 200200 ~ 300300 ~ 400400 ~ 500500 ~ 600
사과( 개)204020155
배( 개)510204520

우리는 무게 α\alpha일 때, 사과를 최대한 잘 분류하는 모델이 훌륭한 모델이라고 하였을 때, 이를 베이즈 분류기를 이용해 만들 것이다. 베이즈 정리의 수식은 아래와 같다.

P(BA)=P(AB)P(B)P(A)P(B|A)=\frac{P(A|B)P(B)}{P(A)}

베이즈 정리는 아래 영상을 참고하자.

우리가 구하고자 하는 확률 P(BA)P(B|A)는 무게 α\alpha일 때, 이것이 사과일 확률이다. 즉, P(A=α)P(A=\alpha), P(B=사과)P(B=사과)이다.

우도(Likelihood, 가능도) P(AB)P(A|B)는 사과 일 때, 무게 α\alpha일 확률으로 주어진 데이터를 이용해 구할 수 있다. 이를 기반으로 α=350\alpha=350 일 때, 이것이 사과일 확률을 구해보자.

P(A=350)=n(A=350)n(S)=40200=0.2P(B=사과)=n(B=사과)n(S)=100200=0.5P(AB)=P(AB)P(B)=n(AB)n(S)n(B)n(S)=20200100200=0.2P(BA)=P(AB)P(B)P(A)=0.2×0.50.2=0.5\begin{aligned} P(A=350)&=\frac{n(A=350)}{n(S)} \\ &=\frac{40}{200}=0.2 \\ P(B=사과)&=\frac{n(B=사과)}{n(S)} \\ &=\frac{100}{200}=0.5 \\ P(A|B)&=\frac{P(A \cap B)}{P(B)} =\frac{\frac{n(A \cap B)}{n(S)}}{\frac{n(B)}{n(S)}} \\ &=\frac{\frac{20}{200}}{\frac{100}{200}} = 0.2 \\ P(B|A)&=\frac{P(A|B)P(B)}{P(A)} \\ &=\frac{0.2 \times 0.5}{0.2} = 0.5\end{aligned}

이처럼 우리는 무게가 350g인 과일이 있을 때, 이것이 사과일 확률이 50%임을 알 수 있다.

이번에는 α=250\alpha=250일 때, 이것이 사과일 확률을 구해보자.

P(A=250)=n(A=250)n(S)=50200=0.25P(B=사과)=0.5P(AB)=P(AB)P(B)=n(AB)n(S)n(B)n(S)=0.20.5=0.4P(BA)=P(AB)P(B)P(A)=0.4×0.50.25=0.8\begin{aligned} P(A=250)&=\frac{n(A=250)}{n(S)} \\ &=\frac{50}{200}=0.25 \\ P(B=사과)&=0.5 \\ P(A|B)&=\frac{P(A \cap B)}{P(B)}=\frac{\frac{n(A \cap B)}{n(S)}}{\frac{n(B)}{n(S)}} \\ &=\frac{0.2}{0.5}=0.4 \\ P(B|A)&=\frac{P(A|B)P(B)}{P(A)} \\ &=\frac{0.4 \times 0.5}{0.25} = 0.8\end{aligned}

무게가 250g일 때, 사과일 확률은 0.8로 무게가 350g일 때 보다 사과일 확률이 높다. 만약, 해당 모델이 무게를 이용해 사과임을 분류하는 모델이라면 무게 250g을 기준으로 분류할 경우 사과일 확률이 80%가 되므로 이는 적절한 모델이라고 할 수 있다.

이처럼 어떤 물체를 분류하기 위해 확률모델을 이용해 구분한다고 했을 때, 예측확률 y^\hat{y}이 클 수록 더 적합한 모델이므로 이를 수식으로 쓰면 다음과 같다.

y^=argmaxyP(yx)\hat{y}=argmax_yP(y|x)

(아래 내용 삭제. (2.1 베이즈 분류기에 추가할 것))

두 과일은 각각 100개씩 있으므로 이를 이용해 평균, 분산, 표준편차를 구하면 다음과 같다.

μ사과=i=1nXiP(Xi)=150×0.20+250×0.40+350×0.20+450×0.15+550×0.05=295\begin{aligned} \mu_{사과} &= \displaystyle\sum_{i=1}^nX_iP(X_i) \\ &= 150 \times 0.20 + 250 \times 0.40 + 350 \times 0.20 + 450 \times 0.15 + 550 \times 0.05 \\ &= 295 \end{aligned}

μ=i=1nXiP(Xi)=150×0.05+250×0.10+350×0.20+450×0.45+550×0.20=415\begin{aligned} \mu_{배} &= \displaystyle\sum_{i=1}^nX_iP(X_i) \\ &= 150 \times 0.05 + 250 \times 0.10 + 350 \times 0.20 + 450 \times 0.45 + 550 \times 0.20 \\ &= 415 \end{aligned}

σ사과2=i=1n(XiXiˉ)2P(Xi)=(150295)2×0.20+(250295)2×0.40+(350295)2×0.20+(450295)2×0.15+(550295)2×0.05=12475\begin{aligned} \sigma^2_{사과} &= \displaystyle\sum_{i=1}^n(X_i-\bar{X_i})^2P(X_i) \\ &= (150-295)^2 \times 0.20 + (250-295)^2 \times 0.40 + (350 - 295)^2 \times 0.20 + (450 - 295)^2 \times 0.15 + (550 - 295) ^ 2 \times 0.05 \\ &= 12475 \end{aligned}

σ2=i=1n(XiXiˉ)2P(Xi)=(150415)2×0.05+(250415)2×0.10+(350415)2×0.20+(450415)2×0.45+(550415)2×0.20=11275\begin{aligned} \sigma^2_{배} &= \displaystyle\sum_{i=1}^n(X_i-\bar{X_i})^2P(X_i) \\ &= (150-415)^2 \times 0.05 + (250-415)^2 \times 0.10 + (350-415)^2 \times 0.20 + (450-415)^2 \times 0.45 + (550 - 415)^2 \times 0.20 \\ &= 11275 \end{aligned}

σ사과=σ2=111.691\sigma_{사과}=\sqrt{\sigma^2}=111.691
σ=σ2=106.138\sigma_{배}=\sqrt{\sigma^2}=106.138

위 데이터가 가우시안 분포를 만족한다고 가정할 때, 이를 그래프로 나타내면 다음과 같다.

N(μ,σ2)=f(x)=1σ2πexp(12(xμσ)2)N(\mu,\sigma^2)=f(x)=\frac{1}{\sigma\sqrt{2\pi}}exp(-\frac{1}{2}{(\frac{x-\mu}{\sigma})}^2)

Gaussian Distribution

위 그래프를 봤을 때, 무게가 350g일 때 사과와 배를 구분할 수 있는 결정경계임을 알 수 있다.

여기까지 2.1 베이즈 분류기로 이동.

회귀

회귀(Regression)는 지도 학습의 한 종류로, 연속적인 출력 값을 예측한다. 회귀는 예측 변수(predictor variable, explanatory variable: 설명 변수, input: 입력)와 연속적인 반응 변수(response variable, outcome: 출력, target: 타깃)가 주어졌을 때 출력 값을 예측하는 두 변수 사이의 관계를 찾는다.

대표적인 예시로 이전에 예기했던 Engine power(hp)와 Car price($)를 보자. 여기서 Engine power는 예측 변수로 반응 변수인 Car price를 예측하기 위해 사용되는 값이다. 예측 변수와 반응 변수사이의 관계를 학습하는 것이 회귀분석이고 선형회귀를 통해 이를 알아보자.

Engine power-Car price

Engine power-Car price의 선형 회귀 모델은 앞선 1.1 머신러닝이란? 에서 간략하게 소개했다. 해당 내용을 참고하자.

선형 회귀(Linear Regression)는 입력 x와 타깃 y가 주어지면 이들의 관계를 파악하는 예측함수 h(x)h(x)를 찾는다. 일반적으로 선형 회귀에서 예측함수의 식은 다음과 같다.

h(x)=wx+bh(x)=wx+b

예측함수가 학습 데이터에 근접하기 위해서는 목적함수(Object function, Cost function: 비용함수)가 최소로 가도록 해야한다. 이때, 목적함수를 평균 제곱 오차(Mean Squared Error: MSE)로 정의하면 목적함수의 식은 다음과 같다.

J(θ)=1ni=1n(y^y)2J(\theta)=\frac{1}{n}\displaystyle\sum_{i=1}^n{(\hat{y}-y)^2}

회귀 분석을 통해 우리가 원하는 것은 최종적으로 목적함수의 값이 최소가 되도록 하는 것이다. 이를 위해 우리는 경사 하강법(Gradiend Descent)을 사용할 수 있다.

경사 하강법(Gradient Descent)

경사 하강법(Gradiend Descent)은 최적화 알고리즘으로, 목적 함수의 기울기(Gradient: 경사)를 구하여 경사의 반대 방향으로 계속 이동시켜 극값에 이를 때 까지 반복하는 알고리즘이다.

Gradient Descent

앞서 우리는 평균제곱오차(Mean Squared Error: MSE) 함수를 목적함수로 사용하였다. 따라서 MSE에 대해 미분을 하여 기울기를 구한 후, 경사의 반대 방향으로 이동시켜 MSE의 극값으로 수렴하도록 하여 목적함수가 최적해로 수렴하도록 할 수 있다. 평균제곱오차(MSE)에 대하여 경사하강법을 적용하는 수식을 나타내면 다음과 같다. 여기서 η\eta는 학습 상수이다.

wi:=wi+ΔwiΔwi=ηJ(wi)\begin{aligned} w_i&:=w_i+\Delta w_i\\ \Delta w_i &=-\eta \nabla J(w_i) \end{aligned}
최적해 비보장

경사 하강법은 목적 함수가 전역 최솟값(Global Minimum, 최적해)으로 도달하는 것을 보장하지 않는다. 이는 경사 하강법의 초기 시작점, 기울기 값 등에 의해 발생하는 현상으로 다음의 경우 경사 하강법은 최적해를 보장하지 않는다.

  1. 지역 최솟값(Local Minimum, 지역 최적해)에 수렴하는 경우

  2. 평평한 지역 또는 평원에 갇힌 경우

  3. 학습률이 너무 작거나 큰 경우

예시

아래와 같이 Engine power에 따른 Car price 데이터가 있을 때, 단순 선형회귀(Simple Linear Regression)를 이용해 Car price를 예측하는 모델을 만들어 보자.

1234567
Engine power406080110125150160
Car price1100200019502300340028002750

우리가 구하고자 하는 예측함수 h(x)h(x)는 다음과 같이 정의된다.

h(x)=wx+bh(x)=wx+b

그리고 예측함수 h(x)h(x)를 최적화하기 위해 우리는 목적함수를 최소화 해야한다. 이때, 목적함수를 평균 제곱 오차(Mean Squred Error: MSE)를 사용하여 다음과 같이 정의한다.

J(θ)=12mi=1m(h(xi)y)2J(\theta)=\frac{1}{2m}\displaystyle\sum_{i=1}^m{(h(x_i)-y)}^2

목적함수를 최적화 하기 위해 우리는 경사하강법을 사용할 수 있다. 목적함수 J(θ)J(\theta)wwbb에 대해 편미분 하면 다음과 같다. θ=(w,b)\theta = (w, b) 이다.

J(θ)=12mi=1m(wxi+by)2wJ(θ)=1mi=1m(wxi+by)xi=1mi=1m(h(xi)y)xibJ(θ)=1mi=1m(wxi+by)=1mi=1m(h(xi)y)\begin{aligned} J(\theta)&=\frac{1}{2m}\displaystyle\sum_{i=1}^m{(wx_i+b-y)}^2 \\ \frac{\partial}{\partial w}J(\theta) &= \frac{1}{m}\displaystyle\sum_{i=1}^m{(wx_i+b-y)x_i} \\ &=\frac{1}{m}\sum_{i=1}^m{(h(x_i)-y)x_i} \\ \frac{\partial}{\partial b}J(\theta) &= \frac{1}{m}\sum_{i=1}^m{(wx_i+b-y)} \\ &=\frac{1}{m}\sum_{i=1}^m{(h(x_i)-y)} \end{aligned}

w:=w+Δw:=wηwJ(θ):=wηmi=1m(wxi+by)xib:=b+Δb:=bηbJ(θ):=bηmi=1m(wxi+by)\begin{aligned} w &:= w + \Delta w \\ &:= w - \eta \frac{\partial}{\partial w}J(\theta) \\ &:= w - \frac{\eta}{m}\displaystyle\sum_{i=1}^m(wx_i+b-y)x_i \\ b &:= b + \Delta b \\ &:= b - \eta \frac{\partial}{\partial b}J(\theta) \\ &:= b - \frac{\eta}{m}\sum_{i=1}^m(wx_i+b-y) \end{aligned}

이제 θ0=(12, 800)\theta_0=(12, \space 800), η=0.1\eta=0.1 일 때, Batch Gradient Descent를 이용하여 선형회귀를 통해 예측함수를 업데이트 해보자.

Iteration 1
θ0=(12, 800), η=0.1\theta_0=(12, \space 800), \space \eta=0.1

No.XXYYh(x)=wx+bh(x)=wx+bh(x)yh(x)-y
1401100
2602000
3801950
41102300
51253400
61502800
71502750

비지도학습


준지도학습


강화학습


참고자료

필자는 기계학습을 공부하는 학부생일뿐이므로 잘못된 정보가 있을 수 있습니다. 본 글에 잘못된 정보, 추가 정보, 오타 등이 있으면 댓글로 달아주세요.

0개의 댓글