[혼공머신]4-1
로지스틱 회귀
로지스틱 회귀는 선형 회귀와 달리 분류 문제에 사용되는 지도 학습 알고리즘입니다. 주요한 특징은 선형 방정식을 사용하여 데이터 포인트를 분류하는데, 이 과정에서 시그모이드 함수나 소프트맥스 함수를 사용해 클래스 확률을 출력합니다.
핵심 개념
- 로지스틱 회귀 (Logistic Regression)
- 선형 회귀와 달리, 로지스틱 회귀는 이진 분류 문제에 사용됩니다.
- 출력값은 시그모이드 함수에 의해 0과 1 사이의 확률 값으로 변환됩니다.
- 시그모이드 함수 (Sigmoid Function)
- $ \sigma(x) = \frac{1}{1 + e^{-x}} $
- 선형 방정식의 출력을 0과 1 사이의 값으로 압축합니다.
- 주로 이진 분류에서 사용됩니다.
- 소프트맥스 함수 (Softmax Function)
- 다중 분류 문제에서 사용됩니다.
- 여러 선형 방정식의 출력을 정규화하여 확률 분포를 만듭니다.
- 각 클래스의 확률 합이 1이 되도록 조정합니다.
주요 패키지 및 함수 (scikit-learn)
- LogisticRegression
- 로지스틱 회귀를 위한 클래스입니다.
solver
매개변수로 최적화 알고리즘을 선택할 수 있습니다. 예:'lbfgs'
,'sag'
,'saga'
.penalty
매개변수로 규제 방법을 선택합니다. 예:'l2'
(릿지),'l1'
(라쏘).C
매개변수로 규제 강도를 제어합니다. 기본값은 1.0입니다.
- predict_proba()
- 예측 확률을 반환합니다.
- 이진 분류의 경우 음성 클래스와 양성 클래스의 확률을 반환합니다.
- 다중 분류의 경우 모든 클래스에 대한 확률을 반환합니다.
- decision_function()
- 모델이 학습한 선형 방정식의 출력을 반환합니다.
- 이진 분류의 경우 양성 클래스의 점수를 반환합니다.
- 다중 분류의 경우 각 클래스에 대한 선형 방정식의 결과를 반환합니다.
예제 코드 설명
노트북에 포함된 주요 코드 블록들을 설명하면 다음과 같습니다.
- 데이터 전처리 및 모델 훈련
from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression import numpy as np # 데이터셋을 훈련 세트와 테스트 세트로 분할 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 데이터 스케일링 scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test) # 로지스틱 회귀 모델 훈련 lr = LogisticRegression() lr.fit(X_train_scaled, y_train)
- 예측 및 확률 계산
# 테스트 데이터에 대한 예측 확률 계산 proba = lr.predict_proba(X_test_scaled[:5]) print(np.round(proba, decimals=3)) # 결정 함수 값 계산 decision = lr.decision_function(X_test_scaled[:5]) print(np.round(decision, decimals=2))
- 소프트맥스 함수 적용
from scipy.special import softmax # 결정 함수 값을 소프트맥스 함수로 확률 변환 proba = softmax(decision, axis=1) print(np.round(proba, decimals=3))
추가 정보
- 오버피팅과 언더피팅: 모델의 일반화 성능을 평가하고 조절하는 방법.
- 정규화 기법: L1, L2 정규화를 사용하여 모델의 복잡도를 제어하는 방법.
- 최적화 알고리즘: Gradient Descent, Stochastic Gradient Descent 등 다양한 최적화 방법의 원리와 적용법.
댓글남기기