들어가기
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 |