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 로 분류된 값을 넣었을 때

     

     

    데이터분석