로짓분석(Logit Analysis)

로짓 분석(Logit Analysis)은 로지스틱 회귀(Logistic Regression)라고도 불리며, 혼용해서 사용한다. 종속 변수가 이진(binary) 또는 범주형일 때 이를 설명하거나 예측하기 위해 사용되는 통계 분석 방법입니다. 이 방법은 종속 변수의 결과가 두 가지 가능한 값(예: 성공/실패, 참/거짓) 중 하나를 취하는 경우에 적합합니다.
\(\)

로짓 분석의 주요 개념

  1. 종속 변수와 독립 변수:
  • 종속 변수(Dependent Variable): 이진 또는 범주형 변수를 가지며, 예측하려는 대상입니다. 예: 질병 유무(있음/없음), 구매 여부(구매/미구매).
  • 독립 변수(Independent Variable): 종속 변수에 영향을 미치는 변수들입니다. 예: 나이, 소득, 교육 수준.
  1. 로짓 함수(Logit Function):
  • 로짓 함수는 로지스틱 회귀에서 사용되는 함수로, 특정 사건이 발생할 확률을 예측합니다.
  • 로짓 함수는 확률 ( p )를 로그 오즈(log odds)로 변환합니다.
    \[ \text{logit}(p) = \log\left(\frac{p}{1-p}\right) \]
  1. 로지스틱 회귀 모델(Logistic Regression Model):
  • 로지스틱 회귀 모델은 로짓 함수와 독립 변수를 사용하여 종속 변수의 확률을 예측합니다.
    \[ \text{logit}(p) = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \cdots + \beta_k X_k \]
  • 여기서 \( \beta_0 \)는 절편(intercept), \( \beta_1, \beta_2, \ldots, \beta_k \)는 회귀 계수(regression coefficients), \( X_1, X_2, \ldots, X_k \)는 독립 변수입니다.
  1. 확률 예측:
  • 로지스틱 회귀 모델을 통해 예측된 로그 오즈(log odds)를 확률로 변환합니다.
    \[ p = \frac{1}{1 + e^{-(\beta_0 + \beta_1 X_1 + \beta_2 X_2 + \cdots + \beta_k X_k)}} \]

로지스틱 회귀의 사용 사례

  • 의료 분야: 환자가 특정 질병에 걸릴 확률 예측
  • 마케팅: 고객이 제품을 구매할 확률 예측
  • 사회 과학: 특정 행동을 할 가능성 예측(예: 투표 여부)

로지스틱 회귀의 장점

  • 해석 용이: 회귀 계수는 독립 변수가 종속 변수의 로그 오즈에 미치는 영향을 나타내며, 이를 통해 변수 간의 관계를 해석할 수 있습니다.
  • 확률 예측: 결과를 확률로 해석할 수 있어 직관적입니다.
  • 다양한 변수 사용 가능: 범주형 변수와 연속형 변수를 모두 사용할 수 있습니다.

로지스틱 회귀의 제한 사항

  • 독립 변수 간의 다중공선성: 독립 변수들 간의 상관관계가 높으면 회귀 계수의 추정이 불안정할 수 있습니다.
  • 이진 또는 범주형 종속 변수: 종속 변수가 연속형인 경우에는 적합하지 않습니다.

로지스틱 회귀 모델 평가 방법

로지스틱 회귀 모델을 평가하는 방법은 여러 가지가 있습니다. 여기서는 주요 평가 방법들을 설명하겠습니다.

1. 혼동 행렬 (Confusion Matrix)

혼동 행렬은 모델의 분류 성능을 평가하는 데 사용되는 표로, 실제 클래스와 예측 클래스의 교차표를 나타냅니다.

  • TP (True Positive): 실제 클래스가 1이고 예측 클래스도 1인 경우
  • TN (True Negative): 실제 클래스가 0이고 예측 클래스도 0인 경우
  • FP (False Positive): 실제 클래스가 0이고 예측 클래스가 1인 경우
  • FN (False Negative): 실제 클래스가 1이고 예측 클래스가 0인 경우

예시 코드:

from sklearn.metrics import confusion_matrix

# 예측
y_pred = model.predict(X_test)

# 혼동 행렬 계산
cm = confusion_matrix(y_test, y_pred)
print(cm)

2. 정확도 (Accuracy)

정확도는 전체 샘플 중에서 맞게 예측한 샘플의 비율을 나타냅니다.

[ \text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN} ]

예시 코드:

from sklearn.metrics import accuracy_score

# 정확도 계산
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")

3. 정밀도 (Precision)과 재현율 (Recall)

  • 정밀도 (Precision): 모델이 양성 클래스(1)로 예측한 것 중 실제 양성 클래스의 비율
    [ \text{Precision} = \frac{TP}{TP + FP} ]
  • 재현율 (Recall): 실제 양성 클래스 중 모델이 양성 클래스로 정확히 예측한 비율
    [ \text{Recall} = \frac{TP}{TP + FN} ]

예시 코드:

from sklearn.metrics import precision_score, recall_score

# 정밀도 계산
precision = precision_score(y_test, y_pred)
print(f"Precision: {precision}")

# 재현율 계산
recall = recall_score(y_test, y_pred)
print(f"Recall: {recall}")

4. F1 점수 (F1 Score)

F1 점수는 정밀도와 재현율의 조화 평균으로, 두 지표를 하나의 지표로 결합합니다.

[ \text{F1 Score} = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}} ]

예시 코드:

from sklearn.metrics import f1_score

# F1 점수 계산
f1 = f1_score(y_test, y_pred)
print(f"F1 Score: {f1}")

5. ROC 곡선과 AUC (Receiver Operating Characteristic Curve and Area Under Curve)

  • ROC 곡선: FPR(위양성률, False Positive Rate)와 TPR(진양성률, True Positive Rate) 간의 관계를 나타내는 곡선
  • AUC (Area Under Curve): ROC 곡선 아래 면적, 모델의 분류 성능을 나타내는 지표

예시 코드:

from sklearn.metrics import roc_curve, roc_auc_score
import matplotlib.pyplot as plt

# 예측 확률 계산
y_prob = model.predict_proba(X_test)[:, 1]

# ROC 곡선 계산
fpr, tpr, _ = roc_curve(y_test, y_prob)
auc = roc_auc_score(y_test, y_prob)

# ROC 곡선 그리기
plt.figure(figsize=(10, 6))
plt.plot(fpr, tpr, label=f'ROC curve (AUC = {auc:.2f})')
plt.plot([0, 1], [0, 1], linestyle='--')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic (ROC) Curve')
plt.legend(loc="lower right")
plt.grid(True)
plt.show()

6. 로그 손실 (Log Loss)

로그 손실은 모델의 예측 확률과 실제 클래스 간의 오차를 측정하는 지표로, 값이 작을수록 좋습니다.

예시 코드:

from sklearn.metrics import log_loss

# 로그 손실 계산
logloss = log_loss(y_test, y_prob)
print(f"Log Loss: {logloss}")

이러한 방법들을 사용하여 로지스틱 회귀 모델의 성능을 다각도로 평가할 수 있습니다. 각 방법은 모델의 성능을 다른 측면에서 평가하므로, 여러 방법을 함께 사용하면 더 종합적인 평가가 가능합니다.

로지스틱 회귀 예시 (Python 코드)

import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report, confusion_matrix

# 데이터 생성 (예시)
np.random.seed(0)
X = np.random.rand(100, 2)  # 독립 변수
y = (X[:, 0] + X[:, 1] > 1).astype(int)  # 종속 변수 (0 또는 1)

# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

# 로지스틱 회귀 모델 생성 및 학습
model = LogisticRegression()
model.fit(X_train, y_train)

# 예측
y_pred = model.predict(X_test)

# 평가
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))

이 예시에서는 두 개의 독립 변수 \( X \)와 이진 종속 변수 \( y \)를 사용하여 로지스틱 회귀 모델을 학습하고, 테스트 데이터에 대한 예측과 평가를 수행합니다.

위 그림은 로지스틱 회귀(Logistic Regression)의 결과를 시각적으로 나타낸 것입니다.

구성 요소:

파란색 점 (Data):

  • 독립 변수와 종속 변수의 실제 데이터를 나타냅니다.
  • 종속 변수는 이진(0 또는 1)입니다.

빨간색 선 (Logistic Regression Model):

  • 로지스틱 회귀 모델을 사용하여 예측된 확률을 나타냅니다.
  • 독립 변수 값에 따른 종속 변수의 확률을 시각화합니다.

해석:

  • 로지스틱 회귀 모델: 독립 변수 값이 증가함에 따라 종속 변수가 1일 확률이 증가하는 것을 보여줍니다. 로지스틱 함수는 S-모양의 곡선을 형성하며, 이는 확률이 0에서 1로 점진적으로 변화함을 나타냅니다.
  • 독립 변수의 영향: 예시에서는 독립 변수 값이 5를 기준으로 종속 변수의 값이 0에서 1로 변하는 경향이 있습니다. 이는 독립 변수 값이 5 이상일 때 종속 변수가 1일 확률이 높아짐을 의미합니다.

로지스틱 회귀는 이와 같이 독립 변수와 종속 변수 간의 관계를 확률로 나타내어, 이진 분류 문제에서 매우 유용한 분석 도구입니다. 로지스틱 회귀는 이진 분류 문제에서 매우 유용한 방법으로, 다양한 분야에서 널리 사용됩니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤