ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 로지스틱 회귀 (Logistic Regression): 머신러닝 이진 분류 알고리즘의 이해와 실습
    🐍 Python 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
Designed by Tistory.