로지스틱 회귀 이해하기: 포괄적인 가이드
목차
- 로지스틱 회귀란?
- 시그모이드 함수: S-곡선
- 로지스틱 회귀에서의 확률
- 최대 우도 추정 (MLE)
- 로지스틱 모델 비교: 최적의 곡선 선택
- 원 대 전체 전략
- Python에서 로지스틱 회귀 구현
- 로지스틱 회귀의 장점
- 제한 사항
- 결론
로지스틱 회귀란?
로지스틱 회귀는 기본적으로 이진 분류 문제에 사용되는 통계적 방법입니다. 연속적인 결과를 예측하는 선형 회귀와 달리, 로지스틱 회귀는 범주형 결과, 일반적으로 이진(0 또는 1, 예 또는 아니오, 참 또는 거짓)을 예측합니다.
주요 구성 요소:
- 종속 변수: 이진 결과 (예: 스팸 또는 스팸 아님).
- 독립 변수: 결과를 예측하는 데 사용되는 예측 변수 또는 특성.
시그모이드 함수: S-곡선
로지스틱 회귀의 두드러진 특징 중 하나는 시그모이드 함수, 또는 S-곡선으로도 알려진 함수를 사용하는 것입니다. 이 수학적 함수는 모든 실수 값을 0과 1 사이의 값으로 매핑하여 확률을 예측하는 데 이상적입니다.
그림: S자 형태의 시그모이드 곡선
왜 시그모이드 함수를 사용할까?
- 확률 해석: 출력은 인스턴스가 특정 클래스에 속할 확률로 해석할 수 있습니다.
- 비선형성: 비선형성을 도입하여 모델이 변수 간의 복잡한 관계를 포착할 수 있게 합니다.
로지스틱 회귀에서의 확률
로지스틱 회귀는 주어진 입력 포인트가 특정 클래스에 속할 확률을 추정합니다. 이진 분류의 경우:
- 클래스 1의 확률 (양성 클래스): \( P(Y=1|X) = \frac{1}{1 + e^{-(\beta_0 + \beta_1X_1 + … + \beta_nX_n)}} \)
- 클래스 0의 확률 (음성 클래스): \( P(Y=0|X) = 1 – P(Y=1|X) \)
여기서 \( \beta_0, \beta_1, …, \beta_n \)은 모델이 학습 과정에서 학습하는 계수들입니다.
최대 우도 추정 (MLE)
가장 적합한 모델을 결정하기 위해 로지스틱 회귀는 최대 우도 추정 (MLE)을 사용합니다. MLE는 모델 하에서 관측된 데이터가 발생할 가능성을 최대화함으로써 매개변수(\( \beta \) 계수)들을 추정합니다.
왜 R²를 사용하지 않을까?
선형 회귀에서는 R-제곱 값이 모델이 설명하는 분산의 비율을 측정합니다. 그러나 분류 문제, 특히 이진 결과의 경우 R-제곱을 사용하는 것은 비효과적입니다. 대신 로지스틱 회귀는 모델 성능을 평가하기 위해 우도 기반의 측정에 중점을 둡니다.
로지스틱 모델 비교: 최적의 곡선 선택
여러 개의 S-곡선(모델)이 가능한 경우, 로지스틱 회귀는 가장 높은 우도를 가진 곡선을 선택합니다. 이러한 선택 과정은 다음과 같이 작동합니다:
- 확률 계산: 각 데이터 포인트에 대해 시그모이드 함수를 사용하여 클래스 1에 속할 확률을 계산합니다.
- 우도 계산: 모든 데이터 포인트에 대해 클래스 1의 확률과 클래스 0의 보완값을 곱하여 전체 우도를 구합니다.
- 우도 최대화: 이 우도를 최대화하는 모델 매개변수를 최적의 모델로 선택합니다.
예제 설명
두 개의 클래스를 가진 데이터셋을 상상해보세요: 자동차 (클래스 1)과 자전거 (클래스 0). 각 데이터 포인트에 대해:
- 자동차의 확률: 입력 특성에 기반하여 시그모이드 함수를 사용하여 계산됩니다.
- 자전거의 확률: \( 1 – \) 자동차의 확률.
다양한 S-곡선의 우도를 비교함으로써, 로지스틱 회귀는 데이터에 가장 잘 맞는 곡선을 식별하여 최적의 분류 성능을 보장합니다.
원 대 전체 전략
클래스가 두 개 이상인 경우, 로지스틱 회귀는 원 대 전체(OVA) 방식을 사용하여 확장할 수 있습니다. 이 전략은 다음을 포함합니다:
- 여러 모델 학습: 각 클래스마다, 그 클래스를 다른 모든 클래스와 구분하는 별도의 로지스틱 회귀 모델을 학습시킵니다.
- 예측: 새로운 데이터 포인트에 대해 모든 모델의 확률을 계산하고 가장 높은 확률을 가진 클래스에 할당합니다.
Python에서 로지스틱 회귀 구현
수학적 기초를 이해하는 것이 중요하지만, 실제 구현 또한 동등하게 중요합니다. Python의 scikit-learn
라이브러리는 간단한 함수들로 로지스틱 회귀 모델링을 간소화합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split from sklearn.metrics import classification_report # Sample Data X = [[2.5], [3.6], [1.8], [3.3], [2.7], [3.0], [2.2], [3.8], [2.9], [3.1]] y = [0, 1, 0, 1, 0, 1, 0, 1, 0, 1] # Splitting the Dataset X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Creating the Model model = LogisticRegression() model.fit(X_train, y_train) # Making Predictions predictions = model.predict(X_test) # Evaluating the Model print(classification_report(y_test, predictions)) |
출력:
1 2 3 4 5 6 7 8 |
precision recall f1-score support 0 1.00 1.00 1.00 1 1 1.00 1.00 1.00 1 accuracy 1.00 2 macro avg 1.00 1.00 1.00 2 weighted avg 1.00 1.00 1.00 2 |
로지스틱 회귀의 장점
- 해석 가능성: 모델의 계수를 해석하여 특성의 중요성을 이해할 수 있습니다.
- 효율성: 더 복잡한 모델에 비해 계산적으로 덜 부담이 됩니다.
- 확률적 출력: 확률을 제공하여 보다 세밀한 예측을 가능하게 합니다.
제한 사항
- 선형 결정 경계: 독립 변수와 종속 변수의 로그 오즈 사이의 선형 관계를 가정합니다.
- 이상치에 대한 민감도: 이상치는 모델에 불균형적으로 영향을 미칠 수 있습니다.
결론
로지스틱 회귀는 분류 작업을 위한 머신러닝의 핵심 기법으로 남아 있습니다. 단순함, 효율성, 해석 가능성의 조합은 이진 분류 문제의 훌륭한 출발점을 만들어줍니다. 시그모이드 함수, 최대 우도 추정, 우도 기반 모델 선택과 같은 기본 원리를 이해함으로써, 데이터 기반 작업에서 로지스틱 회귀의 잠재력을 최대한 활용할 수 있습니다.
더 깊이 탐구함에 따라 정규화, 다변량 로지스틱 회귀, 예측 성능을 향상시키기 위해 로지스틱 회귀를 다른 머신러닝 프레임워크와 통합하는 등의 고급 주제를 탐구하는 것을 고려해보십시오.
로지스틱 회귀 및 기타 머신러닝 기법에 대한 더 많은 통찰과 튜토리얼을 위해 블로그를 계속 지켜봐 주세요. 행복한 모델링 되세요!