로지스틱 회귀 분석 이해를 위한 수학 지식
들어가는 말
앞서 단순 선형 회귀에서 다중 선형 회귀로 넘어갈 때도 단지 변수 하나가 더 추가되었다는 이유만으로 한참을
헤맸다. 그런데 로지스틱 회귀는… 나를 지옥으로 몰고갔다…ㅠ.ㅠ
이놈에 로지스틱 회귀 모형을 이해하기 위해 장장 2주간의 기간에 걸쳐 로지스틱 회귀, 자연상수 e, 자연로그,
로그의 일반 성질 등을 공부해야 했고 대략 열 서너 편의 유튜브 강좌와 구글과 네이버를 통해 수많은 자료를
검색하여 대략적으로는 감을 잡았다. 하지만 여전히 답을 찾지 못한 내용들이 조금 있다.
사실 우리가 중고등학교 때 수학을 배운 것과 같은 방법으로 그저 공식 하나 외우고 그 공식을 사용하면 그뿐이다.
그리고 애초에 이 공부를 시작하면서 깊숙한 원리를 깨우친다기 보다는 텐서플로우라는 툴을 잘 사용할 수 있을
정도만 공부를 하자는 목표가 있었다(단지 그 목표만을 따르자면 sigmoid라는 API만 알면 된다).
하지만 예전에 공부를 할 때도 그랬거니와 지금 이 시점에도 왜 그리 그 ‘공식’이란 것이 어떤 의미인지가 궁금한지…
그걸 그냥 지나치자니 화장실에서 뒷처리 않하고 나온 듯 찜찜하기가 이를데 없다. 그래서 비록 수학과는 거리가 먼
천상 문돌이 이지만 한 번 도전해보기로 했다.
지금부터는 문돌이 식으로 해석한 로지스틱 회귀에 대한 설명이다. 위키피디아의 로지스틱 회귀 항목을 기준으로
문돌이의 관점에서 설명을 한 번 해보도록 하겠다.
로지스틱 회귀 모델 개요
우선 위키피디아에서 정의한 로지스틱 함수는 다음과 같다.
이 함수는 다른 말로 시그모이드(sigmoid) 함수라고 하며 그 모양이 S자와 유사한 성질이 있다.
지금부터 이 함수가 어떻게 도출되는지에 대해 알아볼 것이다.
이전까지 알아본 선형 회귀 분석의 경우 그 모델을 위해 만들어지 함수들은 모두 다음과 같은1차 함수들이었다.
특히 다중 선형 회귀식은 벡터를 이용하여 다음과 같이 표현하기도 했다.
이 1차 함수가 표현하는 것은 독립 변수들(보통은 x로 표현)이 변화해 갈 때 종속 변수( 보통 y로 표현)가 어떻게 변화해
가는지를 알아보는 것이 목적이었다. 그리고 이 때 독립 변수 x와 종속 변수 y는 모두 그 범위가 음의 무한대(이하 -∞)에서
양의 무한대(이하 ∞)까지로 제약이 없었다.
그런데…
때에 따라서는 연속적으로 변화하는 어떤 값들에 대해 두 개의 결과만을 확인할 필요가 있었다.
예를 들면 흡연량과 폐암 발병에 대한 관계를 보면 연속적으로 변화하는 흡연량에 대해 그 결과로 ‘폐암에 걸렸다’와
‘폐암에 걸리지 않았다’라는 두 개의 결과만이 필요한 경우 또는 소득 수준을 독립 변수로 했을 때 어느 정도 이상의
소득이 있으면 ‘투표를 했고’ 그 이하인 경우에는 ‘투표를 안했다’더라라는 식으로 말이다.
이러한 경우 수학적 처리를 위해 흔히 구하고자 하는 종속 변수의 값을 1로 놓고 그 반대의 경우를 0으로 놓아 y가
1또는 0의 값을 갖도록 모델을 만든다. 그리고 이러한 독립 변수를 한 건 한 건 검사를 하게 되면 종속 변수 y가 0
또는 1의 값만을 표현하게 되지만 무수히 많은 독립 변수를 검사하게 되면 그 결과는 확률로 표현할 수 있게 된다.
즉, 하루에 담배 10개피를 피운 사람 a를 조사했더니 폐암에 걸렸다(1). 그런데 하루에 담배 10개피를 피운 사람을
10명 조사했더니 6명은 폐암에 걸렸으나 4명은 걸리지 않았다. 결국 10개피의 담배를 피운 사람은 60%의 확률로
폐암에 걸렸다고 말할 수 있는 것이다.
이처럼 조사 횟수가 많아지게 되면 종속 변수 y는 확률로 표현할 수 있게 되는 것이며 이럴 경우에도 종속 변수의
값은 0 ~ 1의 범위(확률상 0% ~ 100%)를 넘지 않는다.
위키피디아의 로지스틱 회귀 항목 첫 줄에 설명되어있는 내용이 바로 이러한 의미이다.
“독립 변수의 선형 결합을 이용하여 사건의 발생 가능성을 예측하는데 사용되는 통계 기법이다.”
로지스틱 함수 도출
그런데 이 과정에서 문제가 있다. 독립 변수의 선형 식은 그 결과가 -∞에서 ∞까지 제약이 없는데 우리는 0과 1사이의
값만을 얻기를 원한다.
다시 한 번 담배 이야기로 돌아가보자. 하루에 담배 5개피를 피는 사람을 기준으로 1의 값을 얻기 위해 기울기(W)는
편의상 1로 놓고 b는 -4로 초기 설정을 해보자. 그러면 y = 1 X 5 -4로 y = 1의 결과를 얻을 수 있다. 하지만 담배
개비 수가 10개비로 늘어나면 y = 1 X 10 - 4가되어 y = 6으로 1을 훌쩍 넘어버린다. 기존의 선형 식으로는 이러한
조건을 절대 만족할 수 없는 것이다.
일단 선형 식이 0 ~ 1 사이의 값을 가질 수 없음이 분명해졌으니 그렇다면 종속 변수쪽을 -∞에서 ∞의 범위로 확장을
할 수는 없을까? 바로 이러한 발상에서 로지스틱 함수가 시작된다.
앞서 설명한 내용 중 종속 변수 y는 x에 대한 조사의 수가 증가하게 되면 확률값을 갖게 된다고 하였다. 사례를 1건만
조사하는 경우는 없으니 결국 y는 확률의 값을 갖게 될 것이다. 그렇다면 우리가 어떤 확률 p에 대해 -∞에서 ∞값을
출력하는 새로운 함수를 만들면 이 함수는 곧 기존의 선형 함수와 같다고 할 수 있어 새로운 등식을 만들 수 있을
것이다. 이 때 굳이 p에 대한 함수를 만들어야 하는 것은 우리가 최종적으로 만들어진 함수를 통해 확률 값(p)를
얻어야 하기 때문이다.
이렇게 하기 위해 2가지 과정이 필요한데 그 것이 바로 odds 비
라는 것과 log
이다.
odds비는 쉽게 말해 실패 확률에 대한 성공 확률의 비율이다. 성공 확률을 p라고 한다면 실패 확률은 1-p가 된다.
이렇게 보았을 때 odds 비는 아래 식과 같이 표현할 수 있다.
p는 0에서 1사이의 값을 가지므로 위 식을 계산해보면 p가 가장 작은 0일 경우 0 / 1 - 0이 되어 0의 값을 갖게 되고
p가 가장 큰 1이 되는 경우 1 / 1-1 = 1 / 0이 되어 무한대가 된다(프로그래밍에서는 분모가 0인 경우 에러가 발생하나
수학에서는 극한의 개념을 도입하면 1/0(에 수렴)으로 생각할 수 있어 무한대로 정의한다).
이렇게 일단 odds 비를 적용하면 p에 대하여 0부터 양의 무한대까지를 범위로 갖는 새로운 함수를 생각할 수 있다.
하지만 최솟값이 0이므로 아직 음의 무한대를 만족하지 못한다. 이 음의 무한대를 범위에 포함시키기 위해 이번에는
log를 취하게 되는데 log 중에서도 자연상수 e를 밑으로 하는 자연로그를 취하게 된다(밑이 e인 로그를 특별히 ln
이라는 기호를 사용하여 표시한다).
오래 전에 배웠던 로그의 계산을 되새겨보자. 위 로그 식에서 밑은 e이고 진수는 앞서 보았던 odds비의 계산 식이다.
그리고 odds비의 계산 식은 0과 ∞의 범위를 갖는다. 이 점을 생각한다면 odds 비에 자연로그를 취한 값의 범위는
다음과 같다고 할 수 있다.
계산을 해보면 일단 자연상수 e라는 값은 나중에 설명을 하겠지만 대략 2.71828…인 무리수이다. 이 무리수 e를
몇제곱 했을 때 0이 될까? 상식적으로 분수의 분모가 무한히 커질 때 그 분수는 0에 가까워진다는 것은 잘 알것이다.
즉 e를 x제곱했을 때 0이 나오는 x는 -∞가 되는 것이다(e^-∞란 1 / e^ ∞과 동일하므로). 한편 e를 x 제곱했을 때
∞가 나오는 x는 바로 ∞란 것은 보다 쉽게 알 수 있을 것이다.
결국 odds 비를 구하고 거기에 자연로그를 취했더니 확률 p에 대해 -∞부터 ∞를 범위로 갖는 함수가 만들어졌다.
그러면 이제 다음과 같이 표현할 수 있다.
하지만 우리의 최종 목적은 이 함수를 통해 확률 p를 찾는 것이므로 이 함수를 p에 대한 함수로 만들어야 한다.
다음과 같이 진행해보자.
정리
어찌어찌 로지스틱 회귀 함수 도출 과정을 살펴보았다. 위 내용을 간단하게 정리를 해보면 다음과 같다.
- 무한의 값을 갖는 선형 회귀 식을 통해 두 개의 값(0또는 1)만을 갖는 결과를 가져와야 한다.
- 두 개의 결과만을 도출하는 과정이 연속되면 확률이 되며 확률 또한 범위는 0부터 1까지로 제한된다.
- 0부터 1까지로 값이 제한된 확률 값의 범위를 0부터 ∞로 확장하기 위해 odds 비를 취한다.
- 0부터 ∞까지로 확장된 결과를 다시 -∞에서 ∞로 확장하기 위해 odds 비의 식에 자연로그를 취한다(이 과정을 logit 변환이라고도 한다).
- 이제 양쪽의 식이 모두 -∞에서 ∞까지의 값을 갖게 되므로 등식이 성립하고 이 등식을 변형하면 우리가 원하는 로지스틱 함수가 도출된다.
그런데 여전히 이해가 안가는 부분은 이 과정에서 등장하는 자연상수 e와 이 e를 밑으로 하는 자연로그의 역할이다.
일단 얼추 생각하기에는 자연상수 e가 성장에 관한 연구(베르누이의 복리 식)로부터 탄생했다는 것, 그리고 e가 갖는
미분상의 특징(이 부분은 아직 이해 불가…-.-) 때문에 자연상수를 사용한 것으로 보이는데…
암튼 자연상수 e는 문돌이와 이과충을 구분하는 가장 핵심적인 개념이라고 하니 사실 뭐 몰라도 흠될 것은 없지만
AI를 공부하고자 하는데 그러한 장벽을 두고 간다는 것도 내키지 않는 문제이다. 자연상수 e와 관련된 것은 앞으로도
계속 그 의미를 이해하도록 노력할 것이다. 그래서 다음 글에서는 불쌍한 문돌이들을 위해 간단하게나마 자연상수 e를
조금 정리해보도록 하고 오늘은 여기서 마치겠다.
'Study > 인공지능학습' 카테고리의 다른 글
자연로그와 자연상수 e 심화학습 (2) | 2017.03.25 |
---|---|
자연상수 e와 자연로그 (0) | 2017.03.18 |
TensorFlow 학습을 위한 간단한 Tip ~ #1 (4) | 2017.02.26 |
TensorFlow(텐서플로우) 살펴보기 - 4 (2) | 2017.02.26 |
TensorFlow 1.0.0 설치 - Docker에서... (2) | 2017.02.23 |