본문 바로가기
머신러닝

머신러닝(Machine Learning) 5장 - Logistic (Regression) Classification -

by ChocoPeanut 2017. 5. 24.

머신러닝(Machine Learning) 5

- Logistic (Regression) Classification -


Logistic ClassificationClassification 알고리즘들 중에서 굉장히 정확도가 높은 알고리즘으로 알려져 있다. 따라서 실제 문제에도 바로 적용해볼 수 있을 정도로 좋은 알고리즘이다. 또한 머신러닝의 Neural NetworkDeep Learning의 중요한 요소로 작용하기 때문에 자세히 알아놓아야 한다.


이번 시간에는 Classification 중에서 Binary Classification으로 둘 중에 무엇에 속하는지를 판별하는 알고리즘을 생각할 것이다. 예를 들면 스팸 감시가 될 수 있다. 특정 메일이 왔을 때 그 메일이 스팸인지 아닌지에 대한 판별이 필요하다. 다른 예시로 페이스북 피드가 있다. 페이스북의 타임라인에 모든 자료를 보여주는 것이 아니라 사용자에게 알맞은 정보를 보여주기 위해 특정 정보에 대해 보여줄 것인지 아닌지를 판별하는 방법이 필요하다. 사용자의 예전 흔적들을 통해 학습을 해서 새로운 정보에 대한 판별을 진행하는 것이다. 이 때 두 가지의 답을 encoding할 때 01을 사용하게 된다. 보여주는 것을 1, 가리는 것을 0이라는 것처럼 나타나게 된다.


Classification에 대해 배우기 위해 공부한 시간에 따른 시험의 pass or fail에 대한 결과를 예측하는 알고리즘을 생각해보자. 2시간을 공부하면 fail이다. 3시간을 해도 4시간을 해도 fail이 나타난다. 하지만 5시간을 넘어서면 pass를 하게 된다. 이를 통해 학습을 한다



그런데 학습의 방법 중에서 우리가 앞장에서 배운 Linear Regression을 사용해도 가능할 것 같다. 그렇게 되면 대략 0.5가 되는 지점을 기준으로 0.5보다 크게 되면 pass를 낮으면 fail을 주는 알고리즘을 생각할 수 있다



그런데 이 알고리즘을 사용하면 문제가 발생할 수 있다. 지금은 fail한 시간과 pass한 시간의 data가 같지만 만약 50시간을 공부했을 때를 생각해보자. Linear한 선형을 가지고 예측을 하겠지만 실제로 50시간 공부를 했을 때 가지는 값은 pass1의 값을 가지게 된다. 이러한 데이터를 다시 학습시키게 되면 앞에서 예측한 Linear 선형의 기울기가 낮아지게 된다. 그러면 앞의 기준인 0.5로 다시 판별하게 되면 합격인데도 불구하고 불합격으로 판별 받을 수 있게 된다



또한 예측한 결과 값이 10의 형태가 아니라 수많은 값을 가질 수 있게 된다. 5시간을 공부해도 50시간을 공부해도 실제로 결과 값은 1인데 Linear Regression을 사용하게 되면 예측 값은 다르게 나오기 때문이다.


Linear Regression이 단순하고 편리해서 사용하긴 좋은데 위와 같은 문제로 인해 Classification하기 위해서 01사이의 값을 가지는 수로 바꾸어주려고 한다. 이런 함수가 존재하는데 바로 sigmoid 함수이다. sigmoid 함수를 이용하게 되면 어떤 한 값을 대입시키더라도 01사이의 값을 가지게 된다. sigmoid 함수에 데이터 값을 Linear Regression 값을 사용하여 나타내게 되면 Logistic Hypothesis가 탄생하게 된다.