로지스틱 회귀분석 :: 통계 - mindscale
Skip to content

로지스틱 회귀분석

로지스틱 회귀분석

로지스틱 회귀분석은 선형 모형을 일반화한 비선형 회귀분석입니다. 로지스틱 회귀분석은 로지스틱 함수라는 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 테스팅 데이터를 다운받아 분석을 해보십시오.

독립변수는 weekendgroup을 사용하고 종속변수는 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  # 실제값