
4주차 수업 내용
▶ 로지스틱 회귀 (Logistic Regression)
○ 개념
로지스틱 회귀는 실제로는 분류(classification) 문제에 사용됩니다.
즉, 어떤 입력이 들어왔을때 “어떤 일이 일어날 확률”을 계산해서 그 결과가 일어날지 / 안 일어날지를 판단하는 알고리즘입니다.
예를 들어,
- 어떤 환자가 병에 걸릴 확률이 얼마나 될까? (걸림 / 안 걸림)
- 이메일이 스팸일까 아닐까? (스팸 / 정상)
- 고객이 구매할까 말까? (구매 / 비구매)
이런 식으로 결과가 두 가지(0 또는 1) 로 나뉘는 문제를 해결합니다.
○ 원리
1. 선형 결합 (Linear Combination)
입력값을 각각의 가중치(weight)와 곱해서 더합니다.
여기서 b는 절편(편향) 이고, w들은 각 입력의 중요도(가중치)를 의미합니다.
이 단계만 보면 그냥 선형 회귀(linear regression) 과 같습니다.
2. 시그모이드(Sigmoid) 함수 적용
하지만 결과값을 “확률(0~1)”로 표현하려면, 위의 결과 z를 그대로 쓰면 안됩니다.
따라서 아래 함수를 적용합니다.
- z가 아주 큰 양수면 결과는 1에 가까움
- z가 아주 큰 음수면 결과는 0에 가까움
→ 즉, “선형값을 확률처럼 바꿔주는 역할” 을 합니다.
최종적으로 모델은 다음처럼 확률을 예측합니다:
이 값이 0.5보다 크면 “1이라고 예측”, 작으면 “0이라고 예측”합니다.
- P > 0.5 → 긍정(예: 스팸, 병 있음)
- P < 0.5 → 부정(예: 정상, 병 없음)
○ 왜 "로지스틱(로그)" 이라고 부르는가
시그모이드 함수의 수학적 변형을 보면 “로그(log)”가 들어갑니다.
특히 로그 오즈(Log Odds) 형태로 확률을 표현하기 때문에 “로지스틱 회귀”라고 부릅니다.
즉, “확률을 로그 공간으로 바꿔 선형 관계로 만드는” 아이디어에서 출발했다고 볼 수 있습니다.
▶ 혼동행렬 (confusion matrix)
○ 개념
모델이 한 예측이 얼마나 맞고, 어떻게 틀렸는지를 한눈에 보여주는 표입니다.
이 표는 실제 정답과 모델의 예측을 교차시켜 맞음/틀림의 유형을 구분합니다.
| 혼동 행렬 Confusion Matrix |
예측값 | ||
| 긍정 (Positive) | 부정 (Negative) | ||
| 실제 값 | 긍정 (Positive) | TP (True Positive) | FN (False Negative) |
| 부정 (Negative) | FP (False Positive) | TP (True Negative) | |
- TP (True Positive): 진짜 긍정을 맞게 긍정으로 예측
- TN (True Negative): 진짜 부정을 맞게 부정으로 예측
- FP (False Positive): 부정인데 긍정으로 착각 (거짓 경보)
- FN (False Negative): 긍정인데 부정으로 놓침 (놓친 케이스)
○ 성능 지표
- 정확도 (Accuracy) : 전체 중 맞춘 비율
- 정밀도 (Precision) : 긍정이라고 한 것 중 진짜 긍정의 비율 → 예측을 긍정이라 부른 것의 정확함
- 재현율 (민감도, Recall) : 실제 긍정 중에 얼마나 잘 찾아냈는가 → 놓치지 않고 잘 건졌는가
- 특이도 (Specificity) : 실제 부정 중에 얼마나 잘 걸러냈는가
- F1-score : 정밀도와 재현율의 조화평균
- 조화평균 : 두 숫자의 역수의 산술평균의 역수
# 환경준비
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
# 데이터 전처리
target = 'admit'
x = data.drop(target, axis=1)
y = data.loc[:, target]
cat_cols = ['rank']
x = pd.get_dummies(x, columns = cat_cols, drop_first = True)
x.head
x_train, x_val, y_train, y_val = train_test_split(x, y, test_size = .3, random_state = 20)
# 모델링
model = LogisticRegression() # 로지스틱 : 이진분류모델
model.fit(x_train, y_train)
model.coef_
model.intercept_
pred = model.predict(x_val)
accuracy_score( y_val, pred ) # 정확도
confusion_matrix( y_val , pred )
print(classification_report(y_val , pred ))
cm = confusion_matrix( y_val , pred )
disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels = ['died', 'survived'])
disp.plot(cmap=plt.cm.Blues)
plt.xticks(rotation=90)
plt.show()
일반 학회원 상시 모집
빅데이터 분석 학회인 BDA에서는 일반 학회원을 상시 모집하고 있습니다 !
정규반 수강이 없어도, BDA의 다양한 콘텐츠와 활동에 참여할 수 있는 ✨유연한 멤버십✨💡
이런 분들께 추천드려요!
- 스터디, 조별활동만 참여하고 싶으신 분
- 방학 기간 부트캠프 참여를 원하시는 분
- 정규반 수업보다 콘텐츠 위주로 듣고 싶은 분
- 현직자 강연/커리어 인사이트가 궁금하신 분
🙌 일반 학회원이 되면 누릴 수 있는 혜택 ✔️ 원데이 클래스 ✔️ 현직자 강연 (BDA JOB, BDA WAVE, BDA 페스티벌 등) ✔️ 스터디 & 공모전 ✔️ 커피챗 (실무자와의 커리어 대화) ✔️ 부트캠프 등
📌 지금 QR코드로 간편 지원 가능!
👉 우수 일반학회원에게는 특별 혜택도 준비되어 있어요 🎁
https://www.instagram.com/p/DO51_7PEtN2/?igsh=NDM5ODczOTRmYzFx
로그인 • Instagram
www.instagram.com


'대외활동' 카테고리의 다른 글
| [BDA 11기] 데이터 분석 모델링반 ML1 5주차 (0) | 2025.11.17 |
|---|---|
| [BDA 11기]데이터 분석 모델링반 ML1 3주차 (1) | 2025.09.22 |
| [BDA 11기]데이터 분석 모델링반 ML1 2주차 (1) | 2025.09.19 |
| [BDA 11기] 데이터 분석 모델링반 ML1 1주차 (1) | 2025.09.15 |