로지스틱 회귀분석
로지스틱 회귀분석
로지스틱 회귀분석은 선형 모형을 일반화한 비선형 회귀분석입니다. 로지스틱 회귀분석은 로지스틱 함수라는 S자 모양 함수를 씁니다. 이것을 다른 이름으로는 시그모이드(sigmoid) 라고도 하는데, 그리스 문자 시그마(sigma)를 닮았다(-oid)는 뜻입니다. 시그마가 S의 조상격 되는 글자거든요.
로지스틱 함수는 함수값이 0에서 1 사이로 나옵니다. $-\infty$로 가면 0에 가까워지고, $\infty$로 가면 1에 가까워지는 형태입니다.
로지스틱 회귀분석은 아래와 같은 형태로 분석을 하게 됩니다.
$$ y = \text{logistic}(a + bx) $$
이 $y$는 확률로 해석을 합니다. 예를 들어 고객의 이탈을 예측하고 싶다면, 고객은 이탈을 하거나 말거나 둘 중에 하나입니다. 예측을 할 때는 이탈할 확률로 예측을 할 수 있습니다. 이때 로지스틱 회귀분석을 사용합니다.
from statsmodels.formula.api import logit
ch = pd.read_excel('churn.xlsx)
m = logit('has_churned ~ join + last_purchase', ch).fit()
결과 요약
m.summary()
McFadden의 유사 R제곱
res.prsquared
AIC와 BIC
m.aic
m.bic
ch = readxl.read_excel('churn.xlsx)
m = glm(has_churned ~ join + last_purchase,
family = binomial, data = ch)
결과 요약
summary(m)
AIC와 BIC는 별도로 확인
AIC(m)
BIC(m)
로지스틱 회귀 계수 해석하기
승산
Odds
$$ \frac{\pi_i}{1-\pi_i} = \frac{P(y_i = 1|x_i)}{P(y_i = 0|x_i)} $$
- $\pi_i$: 성공할 확률
- 성공, 실패 확률이 같으면 1
- 성공할 확률이 0.7이면 2.333
- 즉 Odds가 1보다 크면 성공할 확률이 더 크고 1보다 작으면 실패할 확률이 더 큰 것을 의미함
승산비
Odds ratio
$$ \frac{\text{odds}(x+1)}{\text{odds}(x)} = \frac{\frac{F(x+1)}{1-F(x+1)}}{\frac{F(x)}{1-F(x)}} = \frac{e^{\beta_0+\beta_1(x+1)}}{e^{\beta_0+\beta_1x}} = e^{\beta_1} $$
- $e^{\beta_1}$: x가 1만큼 증가했을 때 승산이 어떻게 변하는가를 나타냄
- $e^{\beta_1}$ = 1 이라면
- 분자와 분모가 같다는 뜻
- $\text{odds}(x+1)$와 $\text{odds}(x)$가 같다는 뜻
- x가 변했음에도 불구하고 성공과 실패 확률이 변함이 없다는 뜻
- 즉, 변수가 확률에 어떠한 영향도 미치지 않음
- $e^{\beta_1}$ > 1 이라면
- 분자가 더 커야 함
- x가 1만큼 커졌을 때 성공 확률이 늘어난 경우
- 성공 확률에 긍정적인 영향을 미치는 경우
- $e^{\beta_1}$ < 1 이라면
- 분모가 더 커야 함
- x가 1만큼 커졌을 때 성공 확률이 떨어진 경우
- 성공 확률에 부정적인 영향을 미치는 경우
Question
암 데이터에서
diagnosis
를 예측하는 로지스틱 회귀분석을 해보세요.
독립변수로는 area_worst
, smoothness_worst
, symmetry_worst
, fractal_dimension_worst
4가지를 사용하세요.
(01) area_worst
의 기울기는 얼마입니까?
(02) 위 모형의 정확도는 얼마입니까? (M을 양성으로 간주, 소수점 셋째 자리에서 반올림)
(03) 위 모형의 정밀도는 얼마입니까? (M을 양성으로 간주, 소수점 셋째 자리에서 반올림)
(04) 위 모형의 재현도는 얼마입니까? (M을 양성으로 간주, 소수점 셋째 자리에서 반올림)
(05) 위의 모형을 모형 1이라 하고, 여기에서 fractal_dimension_worst
를 제외한 모형을 모형 2라고 할 때 어떤 모형이 더 로그우도가 높습니까?
- 모형1
- 모형2
- 알 수 없다
(06) 모형1과 모형2를 비교할 때, 어떤 모형이 더 나은 모형이라고 할 수 있습니까?
- 모형1
- 모형2
- 알 수 없다
Question
A/B 테스팅 데이터를 다운받아 분석을 해보십시오.
독립변수는 weekend
와 group
을 사용하고 종속변수는 click
으로 하여 로지스틱 회귀분석을 해보세요.
단, 데이터에서 분할하여 80%는 추정용으로 사용하고, 나머지 20%는 테스트용으로 사용하세요. (random_state=1234
로 설정)
모형 1은 click ~ weekend + group
로, 모형 2는 click ~ weekend + group + weekend:group
으로 분석하세요.
(01) AIC와 BIC로 비교할 때 어떤 모형이 더 나은 모형입니까?
- 모형 1
- 모형 2
- 알 수 없다
(02) 테스트 데이터를 이용해서 모형 1과 모형 2의 정확도(accuracy)를 평가해보세요. (문턱값 0.5) 어떤 모형의 정확도가 더 높습니까?
- 모형 1
- 모형 2
- 알 수 없다
(03) 모형2의 기울기를 해석해보세요. 어떤 결론을 내릴 수 있습니까? (weekend=1
이 주말)
- 주중에도 A안, 주말에도 A안이 더 클릭이 많이 된다
- 주중에는 A안, 주말에는 B안이 더 클릭이 많이 된다
- 주중에는 B안, 주말에는 A안이 더 클릭이 많이 된다
- 주중에도 B안, 주말에도 B안이 더 클릭이 많이 된다
Question
종속변수가 범주형인 지도학습은?
- 회귀 분석
- 범주 분석
- 분류 분석
- 비지도 학습
Question
2개의 범주를 가진 변수를 예측하는 경우에 대한 설명으로 잘못된 것은?
- 이항 분류라고 한다
- 로지스틱 회귀분석을 적용한다
- 한 개의 더미변수를 예측한다
- 긍정적인 경우를 양성이라고 한다
Question
로지스틱 회귀분석에서 출력값이 0.8입니다. 그 의미는?
- 더미변수에서 0으로 표시하는 범주에 해당할 확률이 80%
- 더미변수에서 1로 표시하는 범주에 해당할 확률이 80%
Question
로지스틱 회귀분석에서 기울기에 대한 설명으로 잘못된 것은
- 기울기가 +이면 독립변수가 증가할 수록 확률도 증가한다
- 기울기가 -이면 독립변수가 증가할 수록 확률도 감소한다
- 기울기의 크기가 클 수록 독립변수의 증가에 대해 확률의 변화가 크다
- 기울기가 0.1이면 독립변수가 1 증가할 때 확률도 0.1 증가한다
예측
import numpy as np
prob = res.predict(df) # 확률 예측
y_pred = numpy.where(prob > 0.5, 1, 0) # 문턱값보다 크면 1, 아니면 0으로 예측
y_test = df.has_churn # 실제값
prob = predict(m, df, type = "response") # 확률 예측
y_pred = ifelse(prob > 0.5, 1, 0) # 문턱값보다 크면 1, 아니면 0으로 예측
y_test = df$has_churn # 실제값