IT Repository

(5) Classification - Multinomial 본문

Introduction

(5) Classification - Multinomial

IT찬니 2020. 1. 6. 15:45

 

 

 

 

Thinking of Decision Boundary

이전 학습시간에 따른 Pass/Fail 문제는 "학습시간" 이라는 하나의 feature를 통해 Pass 또는 Fail로 Binary Classification을 하는 경우였습니다.

이번에는 2개의 feature를 생각해보겠습니다.
두 번의 시험성적을 통해 Pass/Fail을 분류하는 문제를 가정해 봅시다.

In [269]:
import numpy as np
import matplotlib.pyplot as plt

x1 = np.random.randint(0, 50, 20)
x2 = np.random.randint(0, 50, 20)
passed = 50<(x1+x2)
failed = 50>=(x1+x2)

plt.figure(figsize=(16, 4))

ax1 = plt.subplot(1, 2, 1)
ax1.scatter(x1, x2)
ax1.set_title("Data Spread")
ax1.set_xlabel("1st score"); ax1.set_ylabel("2nd score")
ax1.set_xlim(0, 50); ax1.set_ylim(0, 50)

ax2 = plt.subplot(1, 2, 2)
ax2.scatter(x1[passed], x2[passed], c="b", alpha=0.5, label="Passed")
ax2.scatter(x1[failed], x2[failed], c="r", alpha=0.5, label="Failed")
ax2.plot([0, 50], [50, 0], "g", alpha=0.3, label="Decision boundary")
ax2.set_title("Drawing Decision Boundary")
ax2.set_xlabel("1st score"); ax2.set_ylabel("2nd score")
ax2.set_xlim(0, 50); ax2.set_ylim(0, 50)
ax2.legend()

plt.show()
 
 

데이터의 분포가 왼쪽 산포도와 같을 때, 두 시험의 합이 일정 이상인 경우에 과목을 Pass할 수 있을 것입니다.
따라서 오른쪽의 산포도와 같이 선분을 하나 그어서 합계 점수가 높은 쪽과 낮은 쪽으로 분류를 할 수 있습니다.
(여기에서는 합계 50점 이상을 Pass로 분류한 경우입니다.)

여기서 분류를 위해 Pass/Fail을 결정짓는 녹색 선분을 Decision Boundary라고 할 수 있습니다.

그러면 이번에는 Data Spread를 보며, Pass/Re-test/Fail의 3개의 레이블로 분류하는 경우를 생각해 봅시다.
하나의 선분, 즉 하나의 Decision Boundary로 3개의 레이블을 분류할 수 있을까요?

하나의 Decision Boundary로는 어떻게 그어도 3개 이상의 레이블을 분류하는 것이 불가능함을 알 수 있을 것입니다.

 

Multinomial Classification

Multinominal Classification에서는 하나의 직선으로 3개 이상의 Class 들을 분류할 수 없기 때문에 새로운 Hypothesis가 필요합니다.

이 다항분류 문제를 우리는 Binary Classification과 동일한 개념을 적용해서 해결할 것입니다.
즉, 기존 Linear Regression의 Hypothesis에 어떤 함수 G를 사용합니다.

$H(X) = G(XW + b)$

아래는 Linear Regression 식 $WX + b$를 각각 표현한 것입니다.

$\begin{equation} X \rightarrow \begin{cases} (w_1, b) &\rightarrow y_1 \\ (w_2, b) &\rightarrow y_2 \\ \cdots &\rightarrow \cdots \\ (w_n, b) &\rightarrow y_n \\ \end{cases} \end{equation}$

Linear Regression 모델이므로, $y_1, y_2, y_3$ 는 Continuous한 값을 가질 것입니다.
이번에는 이러한 Continuous한 값들에 함수 G를 씌워서 각 Class에 대한 확률값을 갖도록 만들겠습니다.

 

Softmax function

이번에 우리가 사용하는 함수 G는 Softmax function이라고 하는 함수입니다.
Softmax function의 수식적 정의는 아래와 같습니다.

$G(y_i) = \dfrac{e^{~(y_i)}}{\sum_n e^{~(y_n)}}$

수식을 설명하면 (특정 클래스의 지수함수 값) / (모든 클래스의 지수함수 값의 합) 입니다.
이와 같이 정의했을 때 Softmax function의 결과값은 확률로써 갖추어야 할 두 가지 조건을 모두 만족합니다.

1. 각 확률은 0 ~ 1사이의 값이어야 할 것
2. 모든 확률들의 합은 1이어야 할 것

아래의 예시가 Softmax function을 이해하는데에 도움이 되길 바랍니다.

$\dfrac{e^{y_1}}{e^{y_1} + e^{y_2} + e^{y_3}}$ = 1번 클래스의 확률
$\dfrac{e^{y_2}}{e^{y_1} + e^{y_2} + e^{y_3}}$ = 2번 클래스의 확률
$\dfrac{e^{y_3}}{e^{y_1} + e^{y_2} + e^{y_3}}$ = 3번 클래스의 확률

 

Cost Function for Multinomial Classification

Multinomial Classification의 손실함수는 Binary 때와 동일하게 Cross Entropy를 사용합니다.
결국 Softmax function으로 나오는 결과값이 확률값이기 때문에 동일하게 적용이 가능합니다.

Class pred_y
S(y)
$\rightarrow$ true_y
y
a 0.7   1
b 0.2   0
c 0.1   0

$\mathit{Cost}(W,b) = -\displaystyle \sum_{i} \bigg ( y_i \cdot log(S(WX + b)) \bigg )$

$S(WX + b)$는 Softmax function입니다.

'Introduction' 카테고리의 다른 글

(4) Classification - Binary  (0) 2020.01.06
(3) Regression - Multi variable Linear Regression  (0) 2020.01.05
(2) Regression - Linear Regression  (0) 2020.01.05
(1) What is Deep Learning?  (0) 2020.01.04
Comments