BDA

[BDA] 10주차 머신러닝 모델링 개요

getfeelingsfrom 2026. 1. 23. 08:58

1️⃣ 데이터 분석 전체 흐름 : CRISP-DM

🔄 CRISP-DM 프로세스

  1. 비즈니스 문제 정의
    • 무엇이 문제인가?
    • 예: “해지 고객을 미리 예측할 수 있을까?”
  2. 데이터 이해
    • 어떤 데이터가 있는가?
    • 변수 의미, 단위, 결측치 확인
  3. 데이터 준비
    • 분석 가능한 구조로 가공
    •  모든 셀은 값이 있어야 함
    •  모든 값은 숫자여야 함
  4. 모델링
    • 적절한 알고리즘 선택
    • 학습 수행
  5. 평가
    • 기술적 관점 (정확도, AUC 등)
    • 비즈니스 관점 (Lift, 타겟팅 효과)
  6. 배포 및 관리
    • 서비스 적용
    • 성능 모니터링

2️⃣ 모델과 모델링이란?

✔ 모델(Model)

 

데이터를 통해 발견한 패턴을 수학식으로 표현한 것

 

 

✔ 모델링(Modeling)

 

오차가 최소화되도록 모델을 만드는 과정

 

  • 샘플(과거 데이터) → 전체(미래 데이터)를 추정
  • 예측(Prediction) 또는 추론(Inference)

3️⃣ AI · 머신러닝 · 딥러닝 차이

구분 설명
AI 인간의 지능을 흉내 내려는 모든 시도
ML 데이터로부터 규칙을 학습
DL 신경망 기반의 머신러닝

 

 

머신러닝은 AI의 부분집합, 딥러닝은 머신러닝의 부분집합

 


4️⃣ 머신러닝의 3가지 학습 방식

① 지도학습 (Supervised Learning)

  • 정답(Label)이 있는 데이터
  • 입력 X → 출력 y 학습
  • 예:
    • 고객 정보 → 해지 여부
    • 집 정보 → 집값
# 지도학습 기본 구조
X = df.drop("target", axis=1)
y = df["target"]

② 비지도학습 (Unsupervised Learning)

  • 정답이 없음
  • 데이터 내부 패턴 발견
  • 예:
    • 고객 군집화
    • 이상치 탐지
from sklearn.cluster import KMeans

kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)
labels = kmeans.labels_

③ 강화학습 (Reinforcement Learning)

  • 상태(State)에서 행동(Action)을 선택
  • 보상(Reward)을 통해 학습
  • 예: 게임 AI, 로봇 제어
요소 의미
Agent 학습 주체
Environment 환경
Action 행동
Reward 보상
Policy 행동 전략

5️⃣ 정답의 두 가지 종류

✔ Regression (회귀)

  • “얼마나?”
  • 연속형 숫자 예측
  • 예: 주가, 수요량
from sklearn.linear_model import LinearRegression

model = LinearRegression()
model.fit(X_train, y_train)
pred = model.predict(X_test)

✔ Classification (분류)

  • “A일까 B일까?”
  • 범주형 예측
  • 예: 해지/유지, 합격/불합격
from sklearn.linear_model import LogisticRegression

model = LogisticRegression()
model.fit(X_train, y_train)
pred = model.predict(X_test)
pred_proba = model.predict_proba(X_test)[:, 1]

6️⃣ 머신러닝 실습을 위한 데이터 전처리

① 결측치 처리 (NaN)

# 평균으로 채우기
df["Age"] = df["Age"].fillna(df["Age"].mean())

# 최빈값
df["Embarked"] = df["Embarked"].fillna(df["Embarked"].mode()[0])

# 이후값 채우기
df = df.fillna(method="bfill")

② 불필요한 변수 제거

df = df.drop(columns=["CompPrice"])

③ 가변수화 (One-Hot Encoding)

df_encoded = pd.get_dummies(df, drop_first=True)

④ 스케일링

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

7️⃣ 데이터 분할

① X / y 분리

X = df.drop("target", axis=1)
y = df["target"]

 

② Train / Test 분리

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=11
)

8️⃣ 모델 학습 및 평가 

from sklearn.metrics import (
    confusion_matrix, accuracy_score,
    precision_score, recall_score,
    f1_score, roc_auc_score
)

pred = model.predict(X_test)
pred_proba = model.predict_proba(X_test)[:, 1]

print("Accuracy:", accuracy_score(y_test, pred))
print("Recall:", recall_score(y_test, pred))
print("ROC-AUC:", roc_auc_score(y_test, pred_proba))

9️⃣ 모델 평가의 핵심 포인트

  • 기술적 성능
    • Accuracy
    • Recall
    • ROC-AUC
  • 비즈니스 성능
    • 상위 위험군 해지율
    • Lift
    • 타겟 마케팅 활용 가능성

 

좋은 모델 = 숫자가 좋은 모델이 아니라, 의사결정에 쓰일 수 있는 모델

 

 


https://www.instagram.com/p/DS1V20zEgzI/?igsh=OHJzNDd2aTNobTNk

✨ BDA 8기 운영진 모집 ✨
📅 모집 기간
2025.12.29(월) ~ 2026.01.11(일) 23:59


📌 BDA 운영진은 이런 일을 해요!
-총 10개 팀 중 한 팀에 소속되어 각자의 직무 영역에서 BDA의 발전을 도모합니다
-Slack, Notion, Google Drive 등 실무에 활용되는 협업 툴을 사용해 업무를 수행합니다
-단순 보조가 아닌, 실제 업무를 직접 기획·운영하며 실무 경험을 쌓습니다
-직무교육, 실무 프로젝트, 추천채용 제도 등 다양한 기회를 통해 스스로의 커리어를 발전시킵니다

 

관심있으신 분들은 지원해보시길~ !