🐍 Python/🐍 인공지능

로지스틱 회귀 (Logistic Regression): 머신러닝 이진 분류 알고리즘의 이해와 실습

itstory(Booho) 2025. 1. 27. 16:11
728x90

1️⃣ 로지스틱 회귀란?

로지스틱 회귀(Logistic Regression)는 머신러닝에서 이진 분류(Binary Classification) 문제를 해결하는 지도 학습(Supervised Learning) 알고리즘입니다.

📌 로지스틱 회귀의 핵심 개념

  • 분류(Classification) 모델: 데이터를 두 개의 클래스로 나누는 모델.
  • 확률 예측: 특정 사건(예: 광고 클릭 여부)이 발생할 확률을 0과 1 사이의 값으로 예측.
  • 시그모이드 함수(Sigmoid Function) 사용: 로지스틱 회귀는 선형 회귀와 다르게 예측값을 0~1 사이의 확률값으로 변환.

📌 로지스틱 회귀의 활용 사례

  • 이메일이 스팸인지 아닌지 분류
  • 암 진단(양성 또는 음성)
  • 은행 대출 승인 여부 예측
  • 광고 클릭 예측

2️⃣ 로지스틱 회귀의 원리

로지스틱 회귀는 선형 회귀와 다르게 시그모이드(Sigmoid) 함수를 사용하여 출력값을 0~1 사이의 확률로 변환합니다.

📌 시그모이드 함수 정의

 

여기서,

  • $z$ = $wX + b$ (선형 방정식)
  • $w$ = 가중치 벡터
  • $b$ = 편향(bias)
  • $e$ = 자연상수 (2.718)

이 함수는 입력값 $z$가 커지면 1에 가까워지고, 작아지면 0에 가까워지는 S자 형태의 곡선을 만듭니다.

📌 결정 경계 (Decision Boundary)

  • 예측값이 0.5보다 크면 1 (양성 클래스)
  • 예측값이 0.5보다 작으면 0 (음성 클래스)

3️⃣ 실습: 로지스틱 회귀를 이용한 광고 클릭 예측

이제 실제 데이터를 사용해 로지스틱 회귀 모델을 구축하고 실습해보겠습니다.

📌 사용 데이터

  • 데이터셋: Social_Network_Ads.csv
  • 컬럼 설명:
    • User ID: 사용자 ID
    • Gender: 성별
    • Age: 나이
    • EstimatedSalary: 연봉
    • Purchased: 제품 구매 여부 (1=구매, 0=미구매)

📌 1. 데이터 로드 및 전처리

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix, accuracy_score

# 데이터 로드
dataset = pd.read_csv('Social_Network_Ads.csv')

# 독립변수(X)와 종속변수(y) 분리
X = dataset[['Age', 'EstimatedSalary']].values
y = dataset['Purchased'].values

# 훈련 데이터와 테스트 데이터로 분리 (80:20 비율)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 피처 스케일링 (표준화)
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

데이터를 훈련 데이터와 테스트 데이터로 80:20 비율로 나누고, 표준화를 적용하여 학습을 준비했습니다.


📌 2. 로지스틱 회귀 모델 학습

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

모델이 훈련 데이터를 바탕으로 학습되었습니다.


📌 3. 모델 예측 및 성능 평가

# 테스트 데이터 예측
y_pred = classifier.predict(X_test)

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

print("Confusion Matrix:")
print(cm)
print(f"Accuracy: {accuracy:.2f}")

혼동 행렬(Confusion Matrix)과 정확도를 출력하여 모델 성능을 평가합니다.


4️⃣ 평가 방법: 모델 성능 측정

📌 혼동 행렬 (Confusion Matrix)

혼동 행렬은 모델이 얼마나 정확하게 예측했는지를 보여줍니다.

실제 값 → 예측 값 ↓ 0 (미구매) 1 (구매)
0 (미구매) TN (True Negative) FP (False Positive)
1 (구매) FN (False Negative) TP (True Positive)

📌 주요 평가 지표

  1. 정확도 (Accuracy)
  2. 정밀도 (Precision)
  3. 재현율 (Recall)
  4. F1 Score (조화평균)

5️⃣ 결론 및 요약

  • 로지스틱 회귀는 이진 분류 문제를 해결하는 강력한 알고리즘이며, 확률 기반으로 작동합니다.
  • 시그모이드 함수를 사용하여 예측값을 확률 값으로 변환합니다.
  • 피처 스케일링을 적용하면 성능이 향상될 수 있습니다.
  • 모델의 성능을 평가할 때 혼동 행렬과 정확도, 정밀도, 재현율 등의 지표를 활용해야 합니다.
728x90
반응형