본문 바로가기
Archive/데이터 분석 관련

[Data] Logistic Regression의 이탈도, 성능 측정

by 다람이도토리 2022. 7. 27.

들어가기

Logistic Regression은 회귀의 방법론으로, 분류 문제를 푸는 방법이었다.
logit값을 선형회귀로 예측하는 방법이고, 이를 다시 정리하면 sigmoid 함수의 형태의 식을 얻을 수 있다.


분류 문제의 풀이 방법이기에, 분류의 지표를 활용하는 방법도 있으나, Logistic Regression에서 자체로 생각할 수 있는 성능 측정 지표를 보려고 한다.

이탈도

이를 위해서는 먼저 이탈도(deviance)를 정의해야 한다.

여기서 yi의 경우는 x_i가 예측하는 0,1 의 값이고, y_hat은 y=1일 확률을 의미한다.

이 값의 경우, 모델이 정확하면 0 값을 가지게 되고, 나빠질수록 1에 가까워 진다.

why?/ 정확하게는 log-loss로 받아들이는 쪽이 옳다. 실제 클래스 값과, 내가 예측한 값의 차이를 계산하는 과정이 된다.

McFadden pseudo R square

현재 모형으로 측정한 이탈도를, 귀무 모형으로 측정한 이탈도로 나눈 후, 그 값을 1에서 뺀 값을 McFadden pseudo R square 이라고 한다.

귀무모형

귀무모형이란 모든 x y를 예측하는데 전혀 영향을 미치지 않는 모형을 말한다.

즉, 무조건부 확률 p(y)에 따라 예측이 이루어진다. 다시 말해 class가 어떻건, x가 어떻건 y=1일 확률 값으로 모두 예측이 이루어져버렸다고 생각하면 된다. 즉, 얻을 수 있는 가장 최악의 모델을 말한다.

즉, 위의 지표는 "얻을 수 있는 최악의 모델 대비 어느 정도의 설명력을 가지고 있는가?"를 비율로 표현한 것이다.

#log_loss에 normalize = False를 하면 이탈도랑 같은 값을 얻는다.
from sklearn.metrics import log_loss

# 얻게 되는 모델의 이탈도 값 구하기
y_hat = logit_res.predict(X)
log_loss(y, y_hat, normalize=False)

# 귀무 모델
mu_null = np.sum(y) / len(y)
y_null = np.ones_like(y) * mu_null
log_loss(y, y_null, normalize=False)

# 최종 모델에서 McFadden pseudo R square 구하기. (실제 산식대로 계산)
1 - (log_loss(y, y_hat) / log_loss(y, y_null))

'Archive > 데이터 분석 관련' 카테고리의 다른 글

[Data] CLV  (0) 2024.01.13
[Data] A/B test 간단 정리  (1) 2023.12.31
[Data] 군집화 결과 평가  (0) 2022.07.15
[Data] 시계열 분석 - AR, MA, ARMA, ARIMA  (0) 2022.04.07
[Data] 이상탐지 문제 소개  (0) 2022.03.27