본문 바로가기

회사생활/통계학 공부

Logistic Regression / 로지스틱 회귀분석

Logistic Regression / 로지스틱 회귀분석




지도학습 중 분류 문제에 사용하는 알고리즘이다.

분류 문제란 새로운 데이터가 들어왔을 때 기존 데이터의 그룹 중 어떤 그룹에 속하는지를 분류하는 문제를 말한다.


다만 로지스틱 회귀분석은 분류하려는 범주(카테고리)가 성공/실패, 예/아니오, 남/여 등 2가지 범주로 나눠진 경우에 적용된다.

물론 다항 로지스틱 회귀분석이라는 것도 있지만 일반적으로는 이항 로지스틱 회귀분석을 일컫는다.




(1) 선형 회귀분석


로지스틱 회귀분석은 선형 회귀분석에서부터 기원된다. 따라서 선형 회귀분석의 이론을 대략적으로 이해하고 있는 것이 도움이 되기 때문에 선형 회귀분석에 대해 간략하게만 설명하겠다. (자세한 내용은 별도 포스팅을 하겠다)


(단순) 선형 회귀분석은 x변수와 y변수 간의 관계를 y = ax + b 의 선형 관계식으로 표현한 것이다.



최소제곱법으로 a와 b가 얼마인지 계산해서 회귀식을 찾낸다. (예를 들면 y = x + 5, y = 2x - 1 과 같은 1차 함수) 이렇게 찾은 회귀식으로 와 같이  x값에 따라 y값이 어떻게 변하는지 예측하려는 것이다.


이때 통계적으로 x값은 -Inf ~ Inf 범위를 가지고 그에 따라 ax + b인 y값도 -Inf ~ Inf의 범위를 갖게 된다. (실제 값의 범위라기보다는 통계적으로 그렇다는 말이다.)




(2) 선형 회귀분석 → 로지스틱 회귀분석


위에서도 언급했지만 로지스틱 회귀분석의 목적은 A와 B, 두 카테고리 중 하나로 분류하려고 생겨났다. 선형 회귀분석에서 착안했을 때 우리가 예측하려는 y값을 A일 확률이라 하고, y값(A일 확률)이 0.5보다 크면 A로 분류하고 0.5보다 작으면 B라고 분류하자고 생각한 것이다.


그런데 이때 문제가 있다. (1)에서 말했다시피 x값은 -Inf ~ Inf의 범위를 갖고 있다. 그런데 y값이 확률이면 0 ~ 1의 값을 갖기 때문에 y값이 다시 -Inf ~ Inf 값을 갖을 수 있게 수식을 변환시켜줘야 된다.



이를 수식으로 표현하면 이런 단계를 거친다.


1.  선형 회귀식



2.  y를 확률값 P로 바꾼다.


앞뒤 수식이 = 을 만족하지 않는 상태이므로 P를 변형시켜서 좌항의 범위가 -Inf ~ Inf 가 되게 하려고 한다.

-
-

3.  (첫번째 시도) P 대신 오즈(Odds)를 넣어보자.

-

오즈(Odds)란?


-


오즈(Odds)는 0 ~ Inf 값을 갖는다. 여전히 앞뒤 수식이 = 을 만족하지 않는 상태이다.



4.  (두번째 시도) 이번에는 오즈(Odds)에 로그를 씌워 로그오즈(Log Odds)를 만들어 보자.


로그오즈는 -Inf ~ Inf 값을 갖으므로 앞뒤 수식이 = 을 만족한다!



5.  선형 회귀식을 구한다.


y는 로그오즈(Log Odds)이지만 이를 무시하고 최소제곱법으로 y = ax + b 선형 회귀식의 회귀계수 a와 y절편 b를 구한다.



6. P에 관하여 수식을 정리한다.


우리가 최종적으로 구해야 하는 값은 A일 확률인 P이니까 P에 관하여 수식을 정리해보자.


① 로그오즈에 관한 선형 관계식




② e를 씌운다.




③ 역수를 취한다.




④ +1을 한다.




⑤ 다시 역수를 취한다.




이렇게 P에 관한 식으로 정리를 해가면 결론적으로 아래와 같은 수식을 구할 수 있다.


이 식을 그래프로 그려보면 아래와 같은 곡선이 나오는데 이 곡선을 로지스틱 곡선이라고 부른다.





(3) 최적의 임계치 찾기


아까는 P = 0.5를 기준으로 0.5보다 크면 A로 분류하고 작으면 B로 분류한다는 예시를 들었는데, 이 때 0.5라는 수치를 임계치라고 부른다. 그런데 이 임계치는 꼭 0.5로 정해져 있는 것은 아니고 더 잘 분류할 수 있는 임계치를 분석가가 찾아야 한다.


최적의 임계치는 Train Data를 기준으로 만든 로지스틱 회귀식에 Validation Data를 넣어 더 잘 분류하는 임계치가 얼마인지를 확인해서 정하면 된다.



▼ Validation Data에 대한 설명은 아래 포스팅을 참고하자! ▼

2017/03/14 - [Analysis/R] - Train vs. Validation vs. Test Data



최적의 임계치를 찾는 예시는 R 코드와 병행해서 보여주는 것이 좋을 것 같아서 별도로 포스팅 하겠다.


▼ 로지스틱 회귀분석 R 예제 코드 ▼

2017/03/22 - [Analysis/R] - [R 예제 코드] Logistic Regression / 로지스틱 회귀분석



▼ 만약에 설명변수에 범주형 변수가 있다면 더미변수로 변환하기 ▼

2017/03/28 - [Analysis/ALGORITHM] - Dummy Variable / 더미변수 / 가변수






#Algorithm#Analysis#bigdata#classification#crossvalidation#data#logistic#logisticregression#machinelearning#ML#r#rstudio#데이터분석#로그오즈#로지스틱#로지스틱곡선#로지스틱회귀곡선#로지스틱회귀분석#머신러닝#머신러닝알고리즘#분류#분류문제#분류알고리즘#분석#분석알고리즘#빅데이터분석#알고리즘#오즈#오즈비#임계치#지도학습#회귀곡선#회귀분석