본문 바로가기

Machine Learning/Coursera

[Machine Learning Specialization by Andrew Ng 강의 노트] Course 1, Week 3, Lesson 1. Classification

Andrew Ng 교수님의 Machine Learning 강의를 정리한 내용입니다.

 

Linear Regression은 출력변수 y가 다양한 값을 가질 수 있었습니다. 이번주는 출력변수 y가 몇 가지 값 중 하나만 가질 수 있는 분류에 대해서 공부해보고자 합니다. Linear Regression은 분류 (classification) 에 적합한 모델이 아님을 미리 스포하며, 그에 따라 logistic regression이라는 다른 알고리즘이 등장하게 되었습니다.

Motivation

분류 (classification) 문제는 다음과 같은 예시를 들 수 있습니다.

- 이메일이 스팸인가 아닌가

- 트랜잭션이 금융사기인가 아닌가

- 종양이 악성인가 아닌가

 

출력인 y의 값은 예, 아니오 두 가지 값만 가지게 되겠죠. 이를 'binary classification'이라고 부르며 가능한 class가 두 개, 가능한 카테고리다 두 개뿐이라는 것을 의미합니다. 이 강의에서 class와 category는 같은 뜻으로 여기겠습니다. 여기서 y 값은 주로 no/yes, false/ture, 0/1 로 나타냅니다. 컴퓨터사이언스 분야에선 전통적으로 0이 false를 의미한다고 하네요. Classification 학습 알고리즘에서는 주로 0 (negative class) 과 1 (positive class)을 가장 많이 사용합니다. 

 

Classification 학습 알고리즘은 어떻게 구축할까요? 데이터를 아래와 같이 그리고 구분하고자 한다면, 선형회귀로 데이터를 구분할 수 있을 것으로 보입니다. 그렇지만 threshold 0.5 값을 지정하여 y가 0.5 이하이면 0, 0.5 이상이면 1로 설정해야 하며 y를 0.5로 가지는 경계선 decision boundary가 존재하게 됩니다. 아래 예시 이미지에서 보이다시피 가장 오른쪽에 데이터가 추가된다면 선형회귀에서는 초록선과 같은 더 안좋은 모델을 만들어냅니다. 더 안좋은 모델에서 적절하지 않은 decision boundary를 그린 것을 확인할 수 있습니다.

위와 같이 linear regression으로 해결 못한 문제를 logistic regression으로 풀 것인데, regression 단어에 혼동할 필요없이 출력값이 0 또는 1과 같이 이진 분류 (binary classification) 하는 데에 사용됩니다.

Logistic Regression

Classification 문제의 예시로 Week1에서 나온 종양의 악성 여부를 사용하겠습니다. 데이터를 가장 잘 설명하는 함수는 sigmoid function (=logistic function)이 있습니다. $$g(z) = \frac{1}{1+e^-z} \qquad     0<g(z)<1$$

해당 함수에 새로운 label z가 x축으로 등장하였습니다. z값이 너무 크게 되면 1로 수렴하고, z값이 너무 적어지게 되면 0으로 수렴하게 되겠습니다. 만약 z=0 일 경우에는 0.5로 값이 계산됩니다. 이렇게 계산이 되는 sigmoid 함수를 바탕으로 로지스틱 회귀 알고리즘을 두 단계로 구축해봅니다. 

- 첫째, z값에 일반적인 linear regression 방정식을 정의

- 둘째, sigmoid 함수에 대입

이렇게 만들어진 로지스틱 회귀 모델은 0과 1 사이의 숫자를 출력하게 됩니다. 만약 1을 출력한다면, 특정 x값이 주어지면 클래스(레이블이라고도 부를 수도 있겠습니다) y가 1이 될 확률을 출력한다고 볼 수 있습니다. 앞서 들었던 종양의 악성 여부를 가지고 예시를 든다면, 환자의 종양 사이즈를 가지고, 환자의 종양이 악성일 확률, 악성이 아닐 확률을 y로 출력할 수 있습니다. (아래 이미지의 Example:)

위 슬라이드에서 다음 함수의 의미는 파라미터로 w,b를 가지고 x가 주어졌을 때, y가 1일 때의 확률을 의미합니다.

Decision Boundary

앞서 y가 1일 경우의 확률을 표현하는 식을 알아보았는데요. 확률이므로 0.3, 0.7과 같은 숫자로 나타나게 되겠죠. 그러면 결국 우리가 알고 싶은 y가 0인지 1인지 판단은 어떻게 할까요? 여러분이 직접 임계값(threshold)을 정하는 것입니다. 특정 확률 이상이면 1, 특정 확률 이하이면 0과 같이 특정 확률을 threshold로 지정해줍니다.

 

일반적으로 threshold 값은 0.5로 지정을 하는 것이 기본인데, 0.5로 threshold 값을 정하고 유도를 하면 아래 그림과 같습니다.

 

결국 회귀선과 같은 함수(ex. wx +b)가 0 이상일 때, y는 1이라고 나옵니다. 따라서 Logistic regression에서는 f(x)가 g(z)임을 이용해 직선함수를 그리고 예측이 가능하게 됩니다.

 

종양 예시로 데이터가 시각화되어 있다고 하면, 다음과 같이 그래프를 그릴 수 있습니다.

직관적으로 숫자를 w1=1, w2=1, b=-3을 대입해보면 z가 0이 될 때를 기점으로 y=0인지 y=1 인지를 알 수 있고, z가 0이 되도록 하는 식이 decision boundary가 됩니다. 해당 직관적인 파라미터를 가지고 decision boundray를 직접 계산해보면 다음과 같습니다. 파라미터가 달라지면, decision boundary는 달라지게 되겠죠.

Non-linear decision boundaries

선형이 아닌 decision boundary도 있습니다. 이는 이전 강좌에서 회귀함수가 직선이 아닌 방정식인 polynomial regression을 배웠기 때문에 위의 직선 decision boundary처럼 유도할 수 있습니다. 다음 예시에서 w1=1, w2=1, b=-1으로 정하고 z=0인 방정식을 그리면 원의 방정식이 되겠군요. 

이 외에도 더 높은 차수의 polynomial 함수를 그려서 decision boundary를 찾아낼 수 있다고 합니다. 

다음편 예고: How train Logistic regression model? What is Cost function of Logistic Regression?

[영어 단어 정리]

- sigmoid: S자 모양

[출처]

- 강의: Machine Learning Specialization