본문 바로가기

Data Science/Machine Learning

[ML] Logistic Regression for Classification

반응형

이번 포스팅에서는 바로 직전에 포스팅 했던 Linear Regression과는 조금 다른 로지스틱 리그레션에 대해 다룰 예정이다. 로지스틱 리그레션은 연속하는 값을 예측하는 선형회귀와 달리 원-핫 인코딩을 이용해서 분류 값을 예측하는 모델이다.

 

로지스틱 리그레션은 3가지만 기억하자!

  1. Linear Regression에 Sigmoid 씌우기

  2. Cost값(예측,실제 값 차이) 측정 

  3. Cost값을 최소화 하기 위해 Gradient Decent(기울기 하강) 적용

<1. Linear Regression에 Sigmoid 씌우기 > 

우선, 선형회귀분석의 한계 부터 알아보자. 간단한 예시를 들어보겠다.

공부시간에 따른 시험 합격/불합격 그래프

위 그림은 공부시간에 따른 시험의 합격/불합격에 대한 그래프이다. x축은 공부시간, y축은 시험 통과 여부이다. 우선 파란색으로 그려진 x와 o 표시로 된 데이터에 기반해서 파란색의 Linear Regression이 그려진다.

 

즉, 5시간 이상을 공부하게 되면 y값이 0.5이상으로 통과에 가까워진다는 것이다. 하지만 그림 오른쪽의 if를 보면 갑자기 50 시간을 공부한 사람이 튀어나오게 된다. 이것을 바로 이상치라고 한다. 50시간을 공부함으로써 당연히 시험 통과를 한다.(선형 회귀는 연속적인 값을 반환하기 때문에 만약 여기서 50시간의 x값을 준다면 100과 같이 엄청 큰 수의 y값을 반환할 것이다..) 하지만 50시간을 공부하여 시험통과를 하게 된 데이터에 의해서 선형회귀 그래프가 빨간색으로 약간 기울어진다.

 

그렇다면 y값이 0.5 이상(통과가 되기위해)이 되는 기준의 x값(공부 시간 기준 값이)이 늘어난다. 하지만 여기서 문제가 발생한다. 기울어진 빨간색의 직선으로 인해서 기존에 통과했던 데이터(보라색 동그라미)들이 Fail로 분류가 된다.

 

이로 인해 우리는 x값이 어떤 값이 들어가도 y값이 0 과 1 사이의 값에 존재하도록 해야한다.

 

가설(예측값)의 범위

y값의 이러한 범위를 만들어주기 위해서 똑똑한 수학자들이 고안해낸 Sigmoid 함수를 이용하도록 한다.

Sigmoid

위 그래프를 보면 x값이 음의 무한대로가면 0에 수렴을 하고 양의 무한대로 가도 1에 수렴을 한다. 즉, 어떤 x값이 주어져도 0과 1사이를 벗어나지 못한다. 우리가 바로 원하던 결과를 도출해낼 수 있다!

 

Sigmoid 씌운 가설 수식

이제 우리는 가설에 Sigmoid함수를 씌웠다. 다음은 바로 Cost함수를 구하는 것이다. 

 

<2. Cost값(예측,실제 값 차이) 측정>

저번 포스팅에서도 Cost값에 대한 정의는 언급했기 때문에 따로 언급하진 않겠다.

(Cost에 대해 모른다면? https://techblog-history-younghunjo1.tistory.com/29)

Cost값을 구하는 방법은 선형회귀분석과 약간 다르다. 밑의 그림을 보면서 차이점을 이해해보자.

 

Logistic Regression의 Cost함수

 

로지스틱 리그레션의 Cost함수를 구해보면 다음과 같다. 선형회귀분석과 달리 구불구불 지점이 부분마다 존재한다.

 

선형회귀분석 시간에도 배웠듯이 그래프 위의 어떠한 점에서 출발해서 일정 step만큼 학습을 하다가 평평한 지점을 맞닥뜨리게 되면 최적의 점(Cost가 최소가 되는 점)이라고 판단한다. 하지만 위 그림의 함수를 그대로 이용한다면 진짜로 최적의 지점이 아닌데 부분적으로 평평한 지점에서 최적의 점이라고 잘못 판단을 하게 된다. 전문적인 용어로 저 지점을 Local Minimum이라고 한다. (참고로 실제 최적의 점은 Global Minimum이라고 함.) 

 

따라서 우리는 이러한 오류를 방지하기 위해서 Log를 씌워주도록 한다. 여기서 알아야 할 점은 y값에 따라 Cost함수가 조금씩 달라진다.

Logistic Regression의 Cost 함수
Y값에 따른 Cost함수

위 두 개의 그림처럼 Y값에 따라 Cost 함수가 달라진다. 그래프를 이해하기 위해 하나의 예시를 들어보자.

y=1일때 예측값(H(x)값)을 1로 잘 예측했다고 해보자. 그렇다면 그래프 속 x축이 1로 갈수록 y값(Cost값)이 0으로 수렴하는 것을 볼 수 있다. 0으로 수렴한다는 것은 Cost가 최소이고 최소값은 예측을 정확하게 잘했다는 것이다.

 

반대로 y=1일때 예측값을 0으로 잘못 예측했다고 해보자. 그렇다면 그래프 속 x축이 0으로 갈수록 y값(Cost값)이 무한대로 발산하는 것을 볼 수 있다. 무한대로 발산한다는 것은 Cost가 최대값으로 치솟고 그것은 예측을 하지 못했다는 것이다.

 

y값에 따른 Cost함수 수식 한줄로 이어 붙인 수식

<3. Cost값을 최소화 하기 위해 Gradient Decent(기울기 하강) 적용>

이제 그럼 Cost값을 최소화 하기 위해 기울기 하강을 적용할 단계이다.. 마지막이다!!

 

 

Grdient Decent Algorithm

cost(W)값은 우리가 2번에서 구했던 Cost함수에 대한 수식이다. 이를 최소화 하기 위해서는 위와 같은 계산을 해주면 된다. 파란색인 미분은 기계가 알아서 해주기 때문에(좋은 세상이다..) 신경쓸 필요는 없다. 우리가 조정해줘야 할 것은 초록색 동그라미의 가중치 조절과 빨간색 알파값의 Step 조절이다. (여기서 Step은 선형회귀 분석 포스팅에 정의해 두었다. 주로 Learning rate라고 부르기도 한다!)

 

 

반응형