Certificate/ADP

[ADP 데이터분석 전문가- 통계편] 로지스틱 회귀분석, MLE(최대우도추정법), 오즈비, odds, logit, 혼동행렬, roc auc, 시각화

Olivia-BlackCherry 2023. 10. 24. 15:47

1. 로지스틱 회귀분석

개념

종속변수와 독립변수의 선형 결합으로 사건의 발생 가능성을 예측 - 확률문제를 해결하기 위해 사용

특징

  • 종속변수: 범주형 데이터(보통 이산형)
  • 독립변수: 연속형 데이터(종속변수가 2개 이상이면 다항 로지스틱 회귀)
  • 분류기법 중 하나
  • 결과값으로 확률을 도출하고 싶을 때

예시

< 문제 >

  • 뉴스레터 구독 여부 Y , 뉴스레터 페이지에 고객이 얼마나 체류하는가 X 
  • scatterplot 시각화 -> 유의미한 insight가 없다 -> 문제를 해석할 수 있는 다른 수학적 방법 필요

가정

  • linearity
  • independent
  • No multicollinearity
  • No extreme outlier

 

방법

  • MLE(Maximum likelihood estimation 최대 우도 추정법)
  • 확률문제로 해석: X가 주어진 상황에서 Y=1인 확률 구하기
  • 연결함수: 비선형 함수로 종속변수를 독립변수와 수학적으로 연결해줌
  • Y의 확률값은 연결함수로 연결됨

 

수학적 해석

  1. odds = 일어날 확률/1-일어날 확률 = 일어날 확률/안일어날 확률
  2. logit 변환 = logit(p) = log(p/(1-p)) = log(odds)
  3. logistic은 logit(p)= a+bX 라고 두고 방정식을 재정리 하여 나오는 함수
    출처: 데싸라면

평가(1~4)

1) 혼동행렬

  • Precision 정밀도: TP/TP+FP
  • Recall 재현율, 민감도: TP/TP+FN
  • Specificity 특이도 : TN/TN+FP
  • FPR : 1-특이도
  • F1-score : 2(민감도*정밀도)/ (민감도+정ㅁ리도) : 불균형 데이터에서의 주요 척도 
     

2) ROC AUC 

  • 거짓 양성 비율의 의미
  • X축은 FPR, y축은 TPR(=Recall)
  • (FPR 0, TPR 1)이 가장 이상적인 그래프
  • ROC AUC(area under curve): ROC 곡선 아래의 면적을 계산한 것으로 값이 클수록 모델의 성능이 좋다고 판단 

3) p-value

 

4) AIC/BIC

 

 

<실습>

titanic (1).csv
0.04MB

 

EDA

 

 

결측치

 

 

컬럼 삭제

 

 

더미변수 만들기

 

 

데이터타입 변환

 

 

데이터분할

 

 

모델링

 

 

변수선택

- 단계적선택법을 통해 전진선택법과 후진제거법을 반복해 수행하며 최적의 변수를 선택한다.

- 전진선택법

 

- 후진제거법

 

- 단계적 선택법

 

- best model

Stepwise_best_model= Stepwise_model(X_train, y_train)
Stepwise_best_model.summary()

 

 

회귀계수

  • 회귀계수 자체의 의미는 없다. 이것은 오즈비에 로그를 취한 값이다. adult_male_True =ln(p/(1-p)

 

 

오즈비

  • 오즈비를 구하고 싶다면, exponential을 취해줘야 한다.
  • 오즈비는 각 변수가 생존 확률에 미치는 상대적인 영향을 제공하며, 값이 1보다 크면 해당 변수가 생존 확률을 양의 방향으로, 값이 1보다 작으면 음의 방향으로 영향을 미친다고 해석한다.
  • 오즈비 > 1 : 해당 변수의 증가가 이벤트 발생 확률을 증가시킨다.
  • 오즈비 < 1 : 해당 변수의 증가가 이벤트 발생확률을 감소시킨다.
  • 오즈비 = 1 : 해당 변수가 이벤트 발생 확률에 영향을 미치지 않는다.

 

< 결과 해석 >

# adult_male일 때, adult_male이 아닌 사람에 비해 오즈가 0.036이다. adult_male이 1 증가할 때, 해당 이벤트가 발생할 확률이 발생하지 않을 확률에 비해 약 0.036배이다. 즉, 남자인 경우 해당 이벤트가 발생할 확률(=생존확률)이 매우 낮다. 


# class_First일 때, class_First가 아닌 사람에 비해 오즈가 23.42이다. class_first가 1증가할 때마다 해당 이벤트가 발생할 확률이 발생하지 않을 확률에 비해 약 23.42배로 증가한다는 뜻이다. 즉, 일등석에 탄 경우 생존확률이 높다.
# class_second일 때, class_Second가 아닌 사람에 비해 11.81배 생존확률이 높다. 

# sibs가 있는 경우, sibs가 없는 사람에 비해 생존할 오즈가 0.59배로, 형제자매 또는 배우자와 함께 여행하지 않은 승객에 비해 생존할 가능성이 낮다. 즉, sibs가 1단위 증가할 때 생존확률은 0.59배로 감소한다.

# age의 오즈비는 0.98이다. 나이가 1세 증가할 때마다 생존 확률이 0.98배로 감소한다. 즉 나이가 한 살 많아질 때마다 그 사건이 발생할 확률이 약 2% 감소한다. 다시말해 나이가 많을 수록 생존할 가능성이 약간 감소한다는 뜻이다.


# parch: parch가 1단위 증가할 때마다 특정 사건의 오즈가 0.7배로 감소한다. 즉, parch가 많아질수록 그 사건이 발생할 가능성이 약 30% 낮아진다. 다시말해, 부모/자녀와 함께 여행한 승객한 승객의 생존율은 아닌 경우보다 낮다. 


# fare가 1단위 증가할 때, 특정 사건의 오즈가 1.004배 증가한다. 다시말해 생존확률의 오즈는 0.4% 증가한다.

 

 

평가

  • fvalue나 rsquare값으로 평가할 수가 없다.
  • 분류분석으로 활용한다

 

<변수 준비하기>

 

 

<혼동행렬>

 

 

<ROC AUC>

- 확률값을 넣었을 때

 

 

- 점수 바로 출력

# 점수 출력- 진짜 확률값인 y_pred로 출력
from sklearn.metrics import roc_auc_score
roc_auc_score(y_test, y_pred)
0.8469038208168642

 

 

- 0,1 로 분류된 값을 넣었을 때

 

 

데이터분석