Table of Contents

ML

로지스틱 회귀(Logistic Regression)

꼬꼬마코더 2024. 6. 2. 12:25
728x90

로지스틱 회귀(Logistic Regression)는 이진 분류 문제에 사용되는 통계적 방법입니다. 이 방법은 두 가지 가능한 결과 중 하나를 예측하는 데 목적이 있습니다. 로지스틱 회귀는 종속 변수가 범주형이며 이진(즉, 0과 1의 두 가지 값만 가질 수 있음)일 때 사용됩니다.

로지스틱 회귀의 개념과 목적

  • 이진 분류: 로지스틱 회귀는 데이터를 두 개의 클래스 중 하나로 분류하는 데 사용됩니다 (예: 성공/실패, 예/아니오, 스팸/정상).
  • 확률 예측: 특정 입력이 특정 클래스에 속할 확률을 예측합니다. 출력은 0과 1 사이의 확률 값입니다.

로지스틱 함수 (시그모이드 함수)

  • 로지스틱 회귀 모델은 예측 값을 확률로 변환하기 위해 로지스틱 함수(시그모이드 함수)를 사용합니다.
  • 시그모이드 함수는 다음과 같이 정의됩니다:
    𝜎(𝑧)=11+𝑒−𝑧
    여기서 𝑧는 입력 특징의 선형 결합입니다.

모델 방정식

  • 로지스틱 회귀에서는 사건의 확률에 대한 로그 오즈(log-odds)를 입력 특징의 선형 결합으로 모델링합니다.
  • 로그 오즈 함수는 다음과 같습니다:
    logit(𝑝)=log⁡(𝑝1−𝑝)=𝛽0+𝛽1𝑥1+𝛽2𝑥2+…+𝛽𝑛𝑥𝑛
    여기서 𝑝는 사건의 확률이고, 𝛽0는 절편, 𝛽𝑖는 입력 특징 𝑥𝑖에 대한 계수입니다.

모델 학습

  • 최대 우도 추정(Maximum Likelihood Estimation, MLE): 로지스틱 회귀의 파라미터(계수)는 최대 우도 추정을 통해 추정됩니다. 목표는 관측된 데이터의 우도를 최대화하는 파라미터를 찾는 것입니다.
  • 손실 함수: 로지스틱 회귀에서 사용하는 손실 함수는 음의 로그 우도입니다. 최적화 문제는 이 손실 함수를 최소화하는 것을 포함합니다.

결정 경계

  • 결정 경계는 예측된 확률을 클래스 레이블로 변환하는 임계값입니다. 일반적으로 0.5의 임계값이 사용됩니다.
  • 𝑝(𝑥)>0.5이면 출력 클래스는 1입니다.
  • 𝑝(𝑥)≤0.5이면 출력 클래스는 0입니다.

가정

  • 로그 오즈의 선형성: 로지스틱 회귀는 결과의 로그 오즈가 입력 변수의 선형 결합이라고 가정합니다.
  • 독립성: 관측값은 서로 독립적이어야 합니다.
  • 다중 공선성 없음: 독립 변수 간에 높은 상관관계가 없어야 합니다.

장점

  • 해석 가능성: 계수는 각 특징의 영향을 쉽게 해석할 수 있는 측정을 제공합니다.
  • 효율성: 계산 효율성이 높고 큰 데이터셋에서도 빠르게 학습할 수 있습니다.
  • 확률적 출력: 클래스 소속 확률을 제공하여 특정 응용 프로그램에 유용합니다.

단점

  • 선형성 가정: 독립 변수와 종속 변수의 로그 오즈 사이에 선형 관계가 있다고 가정합니다.
  • 이진 분류에 한정: 확장 버전(다항 로지스틱 회귀)이 존재하지만, 표준 로지스틱 회귀는 이진 결과에 한정됩니다.
  • 이상치에 민감: 로지스틱 회귀는 이상치에 민감할 수 있으며, 이는 모델의 성능에 영향을 미칠 수 있습니다.

확장

  • 다항 로지스틱 회귀: 다중 클래스 분류 문제에 사용됩니다.
  • 정규화된 로지스틱 회귀: 과적합을 방지하고 다중 공선성을 처리하기 위해 페널티(L1, L2)를 포함합니다.

실습 예제

다음은 Python의 scikit-learn 라이브러리를 사용한 간단한 예제입니다:

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# 예제 데이터셋
X = [[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]]
y = [0, 0, 1, 1, 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)

# 예측 수행
predictions = model.predict(X_test)

# 모델 평가
accuracy = accuracy_score(y_test, predictions)
print("Accuracy:", accuracy)

요약하면, 로지스틱 회귀는 이진 분류 문제를 해결하기 위한 강력하고 널리 사용되는 방법으로, 입력 변수와 결과 변수 간의 관계를 확률적으로 모델링하고 해석할 수 있습니다.

 

문제:

로지스틱 회귀(Logistic Regression)에 대한 설명으로 옳지 않은 것은 무엇인가요?

a) 로지스틱 회귀는 이진 분류 문제를 해결하기 위해 사용된다.

b) 로지스틱 회귀에서 사용되는 시그모이드 함수는 예측 값을 0과 1 사이의 확률로 변환한다.

c) 로지스틱 회귀는 독립 변수와 종속 변수 사이의 선형 관계를 가정한다.

d) 로지스틱 회귀는 다중 클래스 분류 문제를 해결하기 위해 주로 사용된다.

정답:

d) 로지스틱 회귀는 다중 클래스 분류 문제를 해결하기 위해 주로 사용된다.

해설:

  • a) 로지스틱 회귀는 이진 분류 문제를 해결하는 데 사용되는 것이 맞습니다.
  • b) 시그모이드 함수는 예측 값을 0과 1 사이의 확률로 변환하는 것이 맞습니다.
  • c) 로지스틱 회귀는 독립 변수와 로그 오즈(log-odds) 사이의 선형 관계를 가정하는 것이 맞습니다.
  • d) 로지스틱 회귀는 주로 이진 분류 문제에 사용되며, 다중 클래스 분류 문제를 해결하기 위해서는 다항 로지스틱 회귀(Multinomial Logistic Regression)가 사용됩니다.