DeepLearning - 로지스틱회귀

DeepLearning - 로지스틱회귀

Q. 이거 어디에 속할까?

로지스틱 회귀

: 참과 거짓을 판별하기

1. 로지스틱 회귀를 이해하자

  • 직선 형태의 함수 -> 선형 회귀 적합
  • 0/1, 예/아니오, 구매/미구매 등 결과의 분류 -> 로지스틱회귀 적합

즉, 선형회귀는 내 시험점수가 몇 점이될까? 처럼 숫자 자체를 예측할 때 쓰며 내가 합격을 할 수 있을까, 없을까? 에 대한 특정 범주 중 하나의 결과를 고르는 경우 로지스틱 회귀가 적합하게 된다.

로지스틱 회귀의 각종 예시

  • 고객의 이탈 여부 (ft. 가입기간, 요금, 문의 횟수 등)
  • 환자의 특정 질환 보유 여부 (ft. 나이, 혈압, 혈당, BMI 등)
  • 이메일의 스팸 여부(ft. 특정 단어, 링크, 느낌표 개수, 발신자 정보 등)

로지스틱 회귀의 특징

  • 로지스틱 회귀의 함수 그림을 생각해보면, 직선 형태가 아닌 S자 형태의 곡선이다.
  • 예측값은 0과 1사이의 확률값으로 표현된다.
  • xx가 변함에 따라, 결과가 특정 범주에 속할 확률이 점차 변화한다.

2. 시그모이드 함수를 적용하자

시그모이드 함수의 원형
  σ(x)=11+ex\sigma(x) = \frac{1}{1+e^{-x}}

  • 로지스틱 회귀가 없더라도 별개로 존재하는 수학적 개념
  • 어떤 값을 0~1사이로 바꾸는 역할

로지스틱 회귀에서의 시그모이드 함수
y=11+e(ax+b)y = \frac{1}{1+e^{-(ax+b)}}

왜 저렇게 생겼담. 생각해보자

우리가 어떤 결과를 분류하려면, 먼저 입력값에 대한 선형식을 만든다. 그러나 선형식의 결과는 음수가 나온다든지, 1보다 큰 값들이 나오므로 이를 확률로 해석하기 위한 변환이 필요하다.

따라서 기존의 선형식을 시그모이드 함수에 적용함으로써 0~1 사이 확률값으로 변환한다.

다시, 흐름을 보면 이렇다
(1) 내가 알고싶은 현상이 나타나기 위한 요인(입력값)을 찾는다
(2) 요인을 갖는 선형식을 만든다
(3) 선형식을 시그모이드 함수에 넣는다
(4) 0~1 사이의 확률값을 출력시킨다
(5) 기준값에 따라 분류한다

그래프를 상상해보자

a가 크다면?
-> 특정 x1x_1에 대하여, 점에 대한 기울기가 크고 작고를 나타낸다
-> 절댓값 a|a|이 클 수록 기울기가 커질 거다.

b가 크다면?
-> 그래프 자체는 좌우로 이동
-> 수식을 아래처럼 x에 대해 바꿔보면 이해가간다

(1). 시그노이드는 본래, 함수 입력이 0이라면 1/2이다.
  σ(x)=11+e0=12\sigma(x) = \frac{1}{1+e^{0}} = \frac{1}{2}

(2). 로지스틱에 적용했을 때, x에 대해 정리한다
  0.5=11+e(ax+b) 0.5 = \frac{1}{1+e^{-(ax+b)}}
  ax+b=0ax+b =0
  x=bax = - \frac{b}{a} -> b가 커지면 x가 좌우로 움직이게 된다

여기까지 생각해보면, a와 b에 따라 그래프가 바뀌는 걸 이해했다.
그래프가 바뀐다는 건 xix_i에 따른 예측확률 y^\hat{y}가 바뀐다는 것이다.
그러면 a,b에 따른 오차도 영향을 받으니 이를 연관시켜볼만하다.
(a,b -> 그래프를 변화 시킴 -> 예측값이 변화함 -> 오차가 변화한다는 의미 )

a의 변화에 따른 오차?

  • a의 절댒값이 커지면, x의 영향력이 커지며 그래프가 더 가파라진다(기울기가 커진다)
  • 기울기가 커진다는 것은 같은 x의 변화임에도 $$\hat{y}가 더 크게 변할 가능성이 있다
  • 이 변화가 데이터에 잘 맞으면 오차는 감소, 아닌 경우 오차는 증가한다.

b의 변화에 따른 오차?

  • bb 가 변하면 그래프가 좌우로 이동한다.
  • 즉, 확률이 0.5가 되는 기준점(분류 기준점)이 바뀐다.
  • 이 이동이 데이터에 잘 맞으면 오차가 줄고, 너무 벗어나면 오차가 커진다.

3. 오차공식 - 로그함수

앞서나왔듯이 오차를 줄이기 위해선 a, b를 찾아야한다 그리고 여기서 말하는 오차란 건 아래와 같다.

상황

  • 실제값: 1 -> 합격
  • 모델예측: 0.9 -> 합격확률 90%

위 상황에 대해서 우린 “이거 잘 한 확률예측 맞냐?”를 판별해야하고, 그 평가를 오차 공식으로 내고싶은 거다.

“모델이 얼마나 틀렸는지 점수 매기자!!!!”

그렇다고 해서 앞서 사용한 평균제곱오차(MSE)를 그대로 쓰는 것은 로지스틱 회귀에 그다지 적절하지 않다.

MSE는 실제값과 예측값의 차이를 제곱하여 평균낸 값으로, 오차의 부호가 상쇄되지 않게 하고 큰 오차에 더 큰 패널티를 주는 장점이 있다.

하지만 로지스틱 회귀에서는 예측값이 0~1 사이의 확률값이므로, 단순한 거리 차이보다 “정답에 대해 얼마나 확신 있게 맞추거나 틀렸는지”를 더 잘 반영하는 오차 공식이 필요하다.

예를 들어 실제값이 1인데 예측확률 y^\hat{y} 가 0.01이라면, 모델은 정답을 거의 아니라고 본 것이므로 큰 패널티를 받아야 한다.

이러한 이유로 로지스틱 회귀에서는 로그 함수를 사용한 오차 공식을 사용한다. 로그함수가 이 오차를 계산하는 데에 어떤 의미를 갖는지는 투비컨티뉴