목차
1. 로지스틱 회귀분석
개념
종속변수와 독립변수의 선형 결합으로 사건의 발생 가능성을 예측 - 확률문제를 해결하기 위해 사용
특징
- 종속변수: 범주형 데이터(보통 이산형)
- 독립변수: 연속형 데이터(종속변수가 2개 이상이면 다항 로지스틱 회귀)
- 분류기법 중 하나
- 결과값으로 확률을 도출하고 싶을 때
예시
< 문제 >
- 뉴스레터 구독 여부 Y , 뉴스레터 페이지에 고객이 얼마나 체류하는가 X
- scatterplot 시각화 -> 유의미한 insight가 없다 -> 문제를 해석할 수 있는 다른 수학적 방법 필요
가정
- linearity
- independent
- No multicollinearity
- No extreme outlier
방법
- MLE(Maximum likelihood estimation 최대 우도 추정법)
- 확률문제로 해석: X가 주어진 상황에서 Y=1인 확률 구하기
- 연결함수: 비선형 함수로 종속변수를 독립변수와 수학적으로 연결해줌
- Y의 확률값은 연결함수로 연결됨
수학적 해석
- odds = 일어날 확률/1-일어날 확률 = 일어날 확률/안일어날 확률
- logit 변환 = logit(p) = log(p/(1-p)) = log(odds)
- 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
<실습>
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 로 분류된 값을 넣었을 때