로지스틱 회귀(Logistic Regression)
로지스틱 회귀(Logistic Regression)는 통계학 및 기계 학습 분야에서 데이터의 이진 분류를 위한 기본적이고 널리 사용되는 기법 중 하나입니다. 이 알고리즘은 어떤 사건의 발생 확률을 예측하는 모델을 만드는 데 사용되며, 결과값이 두 가지 범주 중 하나로 제한되어 있는 상황에서 주로 활용됩니다. 본 강좌에서는 로지스틱 회귀의 원리, 수학적 배경, 실제 사례, 장단점과 함께 이를 구현하는 방법을 자세히 알아보겠습니다.
1. 로지스틱 회귀의 기본 개념
로지스틱 회귀는 독립 변수(X)와 종속 변수(Y) 간의 관계를 모델링하는 통계 방법입니다. 종속 변수는 이진형(binary)으로, 두 가지 클래스 중 하나(예: 합격/불합격, 스팸/비스팸 등)로 구분됩니다. 로지스틱 회귀의 목표는 주어진 독립 변수를 기반으로 특정 사건이 발생할 확률을 계산하는 것입니다.
예를 들어, 어떤 학생이 수학 시험에 합격할 확률을 예측하고자 할 때, 이 학생의 공부 시간, 과거 성적 등을 독립 변수로 사용하고, 합격/불합격이라는 이진 종속 변수를 설정하여 로지스틱 회귀 분석을 수행할 수 있습니다.
2. 로지스틱 회귀의 수학적 배경
로지스틱 회귀는 선형 회귀의 확장으로 볼 수 있습니다. 하지만 선형 회귀와의 결정적인 차이는 예측값이 확률적이라는 점입니다. 어떤 사건이 발생할 확률 \( P(Y=1|X) \)를 예측하기 위해 시그모이드 함수(sigmoid function)를 사용합니다. 시그모이드 함수는 다음과 같은 형태로 정의됩니다:
\sigma(z) = \frac{1}{1 + e^{-z}}
여기서 \( z \)는 선형 조합으로, \( z = \beta_0 + \beta_1X_1 + \beta_2X_2 + … + \beta_nX_n \) 로 표현됩니다. \( \beta_0 \)는 절편(intercept)이며, \( \beta_1, \beta_2, …, \beta_n \)은 독립 변수에 대한 회귀 계수입니다.
확률 \( P \)는 다음과 같이 표현됩니다:
P(Y=1|X) = \sigma(\beta_0 + \beta_1X_1 + \beta_2X_2 + ... + \beta_nX_n)
이제 종속 변수 \( Y \)가 0일 확률은 1에서 위의 확률을 빼서 계산할 수 있습니다:
P(Y=0|X) = 1 - P(Y=1|X)
3. 로지스틱 회귀의 학습 방법
로지스틱 회귀 모델을 학습하기 위해서는 주어진 데이터에서 회귀 계수 \( \beta \)를 추정해야 합니다. 이 과정은 최대 우도 추정(Maximum Likelihood Estimation, MLE) 방법을 사용하여 이루어집니다. 우도 함수(Likelihood Function)는 관측된 데이터가 주어졌을 때, 파라미터가 특정 값일 확률을 의미합니다. 로지스틱 회귀에서는 다음과 같은 우도 함수를 취합니다:
L(\beta) = \prod_{i=1}^{n} P(Y_i|X_i, \beta) = \prod_{i=1}^{n} \left( \sigma(z_i)^{y_i} (1 - \sigma(z_i))^{(1 - y_i)} \right)
여기서 \( y_i \)는 종속 변수의 값이며, \( n \)은 데이터 포인트의 수입니다. 이 우도 함수를 최대화하기 위한 과정에서 주어진 데이터에 대한 로그 우도 함수(log-likelihood function)를 세우고, 이를 최적화하여 \( \beta \)의 값을 구합니다.
4. 로지스틱 회귀의 활용 사례
로지스틱 회귀는 여러 분야에서 다양한 문제 해결에 사용됩니다.
- 의료 분야: 특정 질병에 걸릴 확률을 예측하기 위해 사용됩니다. 예를 들어, 흡연 여부와 나이를 독립 변수로 두고 폐암 발생 여부를 이진 종속 변수로 설정하여 모델을 구축할 수 있습니다.
- 금융 분야: 대출 신청자의 신용 위험을 평가하는 데 활용됩니다. 이 경우, 대출 신청자의 소득, 신용 점수, 잔액 등을 독립 변수로 설정하고, 대출 상환 여부를 종속 변수로 설정할 수 있습니다.
- 마케팅: 고객의 구매 여부를 예측하는 데 사용할 수 있습니다. 고객의 나이, 성별, 구매 이력 등을 독립 변수로 활용하여, 특정 제품을 구매할 확률을 예측하는 데 유용합니다.
5. 로지스틱 회귀의 장점과 단점
장점:
- 모델이 간단하고 해석이 쉬우며, 예측 결과를 확률로 제공하여 상황에 대한 이해를 높입니다.
- 다양한 독립 변수를 가질 수 있으며, 비선형 관계를 잘 처리할 수 있습니다.
- 속도가 빠르며, 많은 데이터를 처리할 수 있는 강력한 성능을 자랑합니다.
단점:
- 독립 변수 간의 강한 상관관계(다중 공선성)가 있을 경우 성능이 저하될 수 있습니다.
- 이진 분류 문제에 적합하지만, 다중 클래스 문제에 대해서는 고차원 회귀로의 확장이 필요합니다.
- 모델이 선형적일 때에만 잘 작동하므로 비선형 결정 경계가 필요한 경우에는 다른 방법을 고려해야 합니다.
6. 로지스틱 회귀의 구현
로지스틱 회귀는 파이썬의 여러 라이브러리에서 쉽게 구현할 수 있습니다. 대표적으로 scikit-learn 라이브러리를 사용하여 로지스틱 회귀 모델을 구축하는 과정을 살펴보겠습니다.
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
# 데이터 로드 및 준비
data = pd.read_csv('data.csv')
X = data[['feature1', 'feature2']] # 독립 변수
y = data['target'] # 종속 변수
# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 로지스틱 회귀 모델 학습
model = LogisticRegression()
model.fit(X_train, y_train)
# 예측
y_pred = model.predict(X_test)
# 성능 평가
accuracy = accuracy_score(y_test, y_pred)
confusion = confusion_matrix(y_test, y_pred)
report = classification_report(y_test, y_pred)
print(f'정확도: {accuracy}')
print(f'혼동 행렬:\n{confusion}')
print(f'분류 리포트:\n{report}')
위의 코드는 간단히 로지스틱 회귀 모델을 구조화한 예시입니다. 데이터를 준비하고 훈련 데이터와 테스트 데이터를 나눈 후, 로지스틱 회귀 모델을 학습시킵니다. 모델이 학습된 후, 테스트 데이터에 대해 예측을 수행하고 그 성능을 평가합니다.
7. 결론
로지스틱 회귀는 이진 분류 문제를 해결하기 위한 강력한 도구이며, 통계학에서는 물론 기계 학습에서도 다양한 응용이 가능합니다. 그 유용성, 해석의 용이성, 그리고 계산 효율성 덕분에 로지스틱 회귀는 여러 분야에서 널리 사용되고 있습니다. 그러나 모델이 갖는 한계와 가정에 주의하며, 상황에 따라 적절히 활용하는 것이 중요합니다. 앞으로도 로지스틱 회귀를 기반으로 한 다양한 분석과 그 응용 가능성에 대해 검토해 보기를 권장합니다.