2024.12.03 - [Data Science/이론] - DS 이론19~20- 선형회귀분석(머신러닝),로지스틱 회귀분석*
- 로지스틱 회귀분석은 확률 기반 이진/다중 분류 문제를 해결하기 위한 간단하고 효과적인 방법
- 이항 로지스틱 회귀분석은 종속변수가 0 / 1이며, 베르누이 분포를 따를 경우 사용
- 모델의 산출 값은 각 데이터가 1이 될 확률이며, 이진 분류를 위해서 경계값(threshold) 필요. default 0.5
- 모델 평가를 위해 각종 분류 관련 지표 및 AUC 활용
승산비(OR, Odds Ratio)
- 특정 독립변수를 제외한 나머지 값을 고정하고 해당 독립변수가 1 증가 시 변화하는 승산(odds)의 비
- 선형 회귀분석의 회귀계수의 해석을 중요시하는 것처럼 이 승산비는 회귀계수를 갖고 계산
-> Numpy. exp
statsmodels: 통계 모델링에 특화
sklearn: 머신러닝 모델링에 특화
import numpy as np
import pandas as pd
from statsmodels.api import Logit # 모듈 없으면 설치: pip install statsmodels
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
from sklearn.metrics import f1_score
statsmodels - Logit()
- 로지스틱 회귀분석 실시
- endog 인자: 종속변수 할당, exog 인자: 독립변수 할당
- 산출 모델 객체의 params 어트리뷰트에 모델의 계수 저장
- 산출 모델 객체의 predict() 메서드로 예측값을 생산하며 이는 종속변수가 1이 될 확률값
statsmodels.Logit 객체의 predict 메서드는 모델이 학습한 결과를 바탕으로 새로운 데이터에 대해 예측값을 생성하기 위해 사용됩니다. 로지스틱 회귀 모델에서 predict는 특정 입력 데이터에 대해 결과가 특정 클래스에 속할 확률을 계산하는 역할을 합니다.
1. 확률 예측
ex) 예측 확률: 0.8 → 클래스 1일 가능성 80%
예측 확률: 0.2 → 클래스 1일 가능성 20%
2. 분류 기준 설정
예측된 확률값을 바탕으로 특정 임계값(예: 0.5)을 설정하여 데이터 포인트를 특정 클래스에 할당할 수 있습니다. ex) $P(y=1)≥0.5P(y=1) \geq 0.5: 클래스 1로 분류
$P(y=1)<0.5P(y=1) < 0.5: 클래스 0으로 분류
3. 새로운 데이터 적용
4. 모델 평가 및 성능 분석
ROC-AUC, 정확도(Accuracy), F1 점수, 로그 손실(Log Loss) 등을 계산할 때 사용됩니다.
statsmodels.Logit 객체의 params 속성은 학습된 로지스틱 회귀 모델의 **회귀 계수(모델 파라미터)**를 반환합니다. 이 속성은 독립 변수들이 종속 변수에 미치는 영향을 정량적으로 이해하고 해석하는 데 사용됩니다.
1. 회귀 계수 추출
2. 모델 해석
회귀 계수는 각 독립 변수가 종속 변수에 얼마나 중요한 영향을 미치는지 정량적으로 나타냅니다.
3. 특정 변수의 중요성 평가
회귀 계수의 크기와 방향을 보고, 독립 변수 중 어떤 것이 종속 변수에 더 큰 영향을 미치는지 확인할 수 있습니다.
4. 통계적 검정 및 해석
회귀 계수는 각 독립 변수의 통계적 유의성 평가에 사용됩니다.
ex) 승산비: np.exp( result.params)
예: odds_ratio = 2.5 → 독립 변수가 1 증가할 때 양성 클래스의 오즈가 2.5배 증가.
sklearn - LogisticRegression()- Logit() 함수와는 내부 산출로직(알고리즘)이 다름
- 로지스틱 회귀분석 실시
- fit_intercept, solver 인자로 절편 적합여부 및 최적화 알고리즘 설정
- fit () 메서드에 독립변수, 종속변수 할당
- 산출 모델 객체의 coef_ 어트리뷰트에 모델의 계수 저장
- 산출 모델 객체의 predict_proba() 메서드로 예측값을 생산하며 두 번째 열이 종속변수가 1이 될 확률값
모델 평가 및 성능 분석
sklearn - roc_auc_score()
- AUC를 산출
- y_true: 종속변수 , y_socre : 예측 확률값
- from sklearn.metrics import roc_auc_score
sklearn - accuracy_score()
- 분류모델의 정확도를 산출
- accuracy_score(
y_true = 종속변수,
y_pred = 예측 확률 값을 threshold로 분류한 data
sklearn - f1_score()
- 분류모델의 f1 값을 산출
sklearn - precision_score()
- 분류모델의 정밀도 산출
sklearn - recall_score()
- 분류모델의 재현율 산출
차이점 요약
roc_auc_score / accuracy_score
입력 값 | y_score: 확률 또는 점수 | y_pred: 이진 클래스 |
목적 | 모델의 분류 점수의 전체적인 성능 평가 | 정확히 분류한 샘플의 비율 평가 |
활용 상황 | 임계값 없이 점수 기반 평가 | 임계값을 적용한 분류 결과 평가 |
값의 범위 | [0,1][0, 1] | [0,1][0, 1] (비율) |
적용 모델 | 점수 또는 확률 반환 모델 | 임계값 적용 후 이진 예측 모델 |
'Data Science > 실습' 카테고리의 다른 글
DS 실습 17- KNN(K-Nearest Neighbor) (0) | 2024.12.07 |
---|---|
DS 실습 16- 나이브 베이즈, 예측 확률값의 두번째 열이 1이 될 확률? (0) | 2024.12.07 |
DS 실습 13~14- 단순/다중 회귀분석 (0) | 2024.12.07 |
실기시험 준비 Python 기초 (3) | 2024.12.06 |
DS 실습 12- 비계층적 군집분석(KMeans,MinMaxScaler,StandardScaler,shilhouette_score) (1) | 2024.12.06 |