AI & BigData/모두를 위한 딥러닝(정리)

머신러닝(ML) #5_ Logistic Classification의 가설 함수 정의

Tigercow.Door 2018. 3. 15. 15:31
728x90


안녕하세요.

이번 포스팅에서는 Logistic (regression) Classification 에 대해서 알아보도록 하겠습니다.


* 해당 포스트의 모든 내용은 김성훈 교수님의 '모두를 위한 딥러닝'을 바탕으로 제작되었습니다.

관련한 상세 내용은 아래 링크를 참고해주세요.

https://hunkim.github.io/ml/



1. Logistic Classification


오늘 살펴볼 Logistic Classfication은 여러 classification 알고리즘 중에서도 굉장히 정확도가 높다고 알려져 있습니다.

따라서 우리가 정확히 학습하고 이해한다면 이러한 알고리즘을 실전문제에 바로 적용해 볼 수 있을 것 입니다.

추후 우리가 알아볼 내용에 있어서도 굉장히 중요한 요소가 되니 확실히 이해해야 합니다.


먼저, 우리가 전에 학습했던 Linear Regression에 대해서 잠깐 살펴보겠습니다.



위의 사진에서 나오듯, 선형적인 Hypothesis 식을 두고, 이러한 우리의 가설과 실제 값의 차이를 나타내는 Cost 함수를 세웠습니다. 그리고 그러한 Cost 함수를 통해 Cost를 최소로 하는 것을 알아보았습니다.

Cost 함수를 살펴보면 위의 사진에서와 같이 2차 함수꼴로 그래프가 그려지는 것을 알 수 있고, 이를 통해 우리는 그래프에서 기울기를 확인하며 그 최저점, cost가 최소화 되는 값을 찾도록 하였습니다.

그리고 이를 Gradient decent 함수를 통해 cost의 최저점을 찾아내었습니다.


즉, 위에서 나오는 3가지, Hypothesis, Cost, Gradient decent 를 통해서 Linear Regression을 직접 구현할 수 있습니다.


그리고 우리가 앞으로 살펴볼 Classification도 매우 유사합니다.

그전의 것들은 단순히 숫자를 예측하는 것이었다면, 오늘 우리가 살펴볼 것은 Binary Classification으로써 두가지 중 하나를 고르는 알고리즘 입니다.



이러한 알고리즘은 Spam Email Detection이나 Facebook feed 등에서 사용됩니다.

즉 이러한 것들은 0이나 1로 encoding 됨으로써 e-mail이 spam인지 ham인지 분류됩니다.

또한 최근에는 뇌과학이나, 주식시장 등에서도 새롭게 사용되고 있습니다.



그럼 오늘 우리는 보다 쉬운 예제로 시작을 해보도록 하겠습니다.

오늘 다루게 될 모델로는, 학생이 몇시간을 공부했을때 시험이 통과하는지 떨어지는지를 예측해보는 모델입니다.



예를 들어 2시간, 3시간 한 친구는 시험에서 떨어지고, 6시간, 7시간 한 친구는 시험에 통과한다고 볼 수 있습니다.

그런데 이것을 Linear Regression으로는 예측하지 못할까요?

이것에 대해서는 두가지 문제점이 있습니다.


먼저, 아래 그래프에서 그려진 것을 살펴봅니다.


위의 문제를 Linear Regression으로 푼다고 생각해 보았을 때, 우리가 위의 그래프에서 빨간점들과 같은 데이터를 통해 학습하여 빨간색 그래프를 얻었다고 가정합니다. 그럼 대략적으로 파란색 선과 같은 기준으로 시험에 대해 pass 인지 fail 인지 예측한다고 생각할 수 있습니다.

하지만 hours 가 매우 큰 x 데이터를 추가적으로 학습한다면 그래프는 아래와 같이 변하게 될 수 있습니다.




즉 우리가 처음에 학습하여 확인한 어떠한 기준점(그림에서는 검정색 점선)과 새롭게 학습한 그래프와 함께 생각하면 합격임에도 불구하고 떨어진 것으로 인식되는 데이터가 있을 수 있습니다.


또한 두번째 문제로는, 우리가 다루고자 하는 Classification에서는 0이나 1로 답이 나와야합니다.

하지만 Linear Regression에서는 그보다 큰 값이 나올 수 있습니다.

예를 들어 W = 0.5, b = 0으로 두고 가정을 했다고 합시다.

그리고 x가 1, 2, 5, 10이라는 값을 가진 모델을 통해 학습을 하였는데 갑자기 x에 100이라는 값이 들어왔을때 x에 W(=0.5)를 곱하게 되면 매우 큰 값이 나오게 됩니다.



이러한 점들때문에 사람들은 Linear Regression에서 사용하면 Hypothesis 함수에서 입력값에 상관 없이 0 또는 1사이의 값을 만들어주는 함수가 없는지 찾아보게 됩니다.


그렇게 해서 찾게된 함수가 아래사진입니다.



위와 같은 그래프는

sigmoid function(시그모이드 함수)

또는 Logistic function(로지스틱 함수)라고 합니다.


이러한 그래프를 만들어 내는 함수를 통해 우리는 Logistic Hypothesis 식을 아래와 같이 세우게 됩니다.



이렇게 Logistic Classification에 대해 알아보았습니다.

이제 다음 포스팅에선 우리가 Linear Regression을 학습할 때 했던 것처럼, Cost 함수에 대해서도 알아보고 그러한 Cost를 최소화 하는 방법에 대해서도 알아보겠습니다.