-
로지스틱 회귀 (Logistic Regression): 머신러닝 이진 분류 알고리즘의 이해와 실습🐍 Python 2025. 1. 27. 16:11728x90
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) 📌 주요 평가 지표
- 정확도 (Accuracy)
- 정밀도 (Precision)
- 재현율 (Recall)
- F1 Score (조화평균)
5️⃣ 결론 및 요약
- 로지스틱 회귀는 이진 분류 문제를 해결하는 강력한 알고리즘이며, 확률 기반으로 작동합니다.
- 시그모이드 함수를 사용하여 예측값을 확률 값으로 변환합니다.
- 피처 스케일링을 적용하면 성능이 향상될 수 있습니다.
- 모델의 성능을 평가할 때 혼동 행렬과 정확도, 정밀도, 재현율 등의 지표를 활용해야 합니다.
728x90'🐍 Python' 카테고리의 다른 글
머신러닝과 데이터 전처리 - 초보자를 위한 친절한 가이드 (0) 2025.01.30 파이썬 그래프 관련 함수 정리 (Matplotlib 중심) (0) 2025.01.29 파이썬 플롯(Python Plot) 완벽 가이드 (0) 2025.01.24 파이썬 기초 : 데이터 결합(조인)하는 방법 (0) 2025.01.23 파이썬 기초 : 판다스 실습 | 데이터 분석 (0) 2025.01.22