머신러닝

로지스틱 회귀 ( Logistic Regression )

ROSEV 2021. 8. 5. 09:57

분류( Classification )

데이터를 통해, 타겟(0, 1) 혹은 더 많은 범주로 예측하는 것을 말합니다.

 

기준모델( Base line )

분류에서의 기준모델은 타겟변수의 최빈값입니다. 예를 들어 0과 1로 타겟변수가 있을 때 0이 80%를 차지하고 있다면, 앞뒤 안보고 0으로만 찍는다면 정확도가 80%가 나올 수 있습니다. 이 때 우리가 만든 모델이 80%이상의 정확도가 있더라도, 좋은 상황이 아님을 알 수 있습니다.

 

분류 모델 중 하나인 로지스틱회귀 (Logistic Regression)

  • 범주형이면서 0과 1 등과 같은 두개의 값만 가지는 종속변수를 갖을 때 사용하는 회귀분석입니다.
  • 그래서 실제로, 발생할 확률이 결과 값으로 나오며, 기준점을 정해 50% 이상이면 1 아니면 0으로 분류합니다.

  • 왼쪽과 같이 선형회귀일 때는 Y의 범위는 −∞ ~ Y과 0~1의 범위 값을 갖는 로지스틱의 경우에는 로짓변환을 통해 오른쪽 그림과 같이 곡선형으로 변환합니다.

로지스틱 모형 공식

  • 로짓 변환이란, 오즈에 로그를 취해 변환하는 것을 의미합니다.
  • 오즈란, 범주 0에 성공 확률 대비 범주 1에 속할 확률입니다. 예를 들면 odds = 3이라고 하면, 성공확률이 실패확률보다 3배 높다 라고 말할 수 있습니다. 
  • 로짓변환을 하는 이유는, 기존의 모형 공식으로는 변수의 영향을 직관적으로 보기 어려움이 있었습니다. 그래서 아래와 같이 로짓변수를 진행하여, 선형회귀와 유사한 식으로 만들어 보다 쉽게 확인할 수 있습니다. 또한, Y의 범위를 X의 값의 범위와 동등하게 해주려는 의도도 있습니다.

로지스틱은, 결론적으로 1이 될 확률을 구해서, 0과 1을 구분짓는 경계값을 통해 분류합니다.

 

평가지표

  • Accuracy, AUC, ROC

 

로지스틱회귀 with Python

from sklearn.linear_model import LogisticRegression

# 타이타닉 예시 데이터로, 확인해 보세요

타이타닉 데이터 : https://www.kaggle.com/c/titanic/data

df = 타이타닉.csv

features = ['f', 'e', 'a', 't', 'u', 'r', 'e']
target = 'Y'

X = df[features]
y = df[target]

model = LogisticRegression(random_state=42)

model.fit(X, y)