[내일배움캠프] 39일

노경민·2025년 7월 7일
0

1. 오늘의 학습 목표

  • 지도학습과 비지도학습의 차이를 구분할 수 있다.
  • 데이터 간의 거리 개념과 그 측정 방법의 중요성을 이해한다.
  • K-Means 알고리즘을 통해 비지도 학습(군집화)을 수행할 수 있다.
  • 고객 세그멘테이션 실습을 통해 실제 데이터에 군집화를 적용할 수 있다.

2. 머신러닝 종류 복습

2.1 지도학습 vs 비지도학습

  • 지도학습(Supervised Learning)
    입력(X)과 정답(Y)이 함께 주어진 상태에서 학습
    예시: 회귀, 분류 등

  • 비지도학습(Unsupervised Learning)
    정답(Y)이 없이 데이터 내부 구조를 스스로 발견
    예시: 군집화(Clustering), 차원 축소 등

  • 군집화란?
    데이터 간 유사성을 기반으로 비슷한 데이터끼리 그룹화하는 작업
    → 정답이 없이도 데이터를 구분할 수 있게 해주는 방식

  • 마케팅 활용 예시
    고객들의 구매 빈도, 금액, 주기 등을 기준으로 자동 분류

    • 헤비유저 vs 일반유저
    • 생필품 중심 vs 취미용품 중심 고객 등

2.2 군집화를 위한 기준: 거리

  • 군집 내 거리(intra-cluster): 같은 군집 내 데이터끼리는 가까워야

  • 군집 간 거리(inter-cluster): 다른 군집 간 데이터는 멀어야

  • → 거리 계산은 군집화 성능에 핵심적인 요소

  • 거리 개념

    • 데이터의 특성과 목적에 따라 거리의 정의는 달라질 수 있음
    • 대표적인 거리: 유클리디안 거리

💡 유클리디안 거리란?

  • 피타고라스 정리를 일반화한 거리
  • 두 지점 간 직선 거리
  • 수식:
    d(x,y)=(x1y1)2+(x2y2)2+d(x, y) = \sqrt{(x_1 - y_1)^2 + (x_2 - y_2)^2 + \cdots}

📌 스케일링의 필요성

  • 거리 기반 모델에서 단위 차이는 큰 영향을 줌
  • 예: 1m vs 100cm → 거리 계산에 왜곡 발생
  • StandardScaler를 사용하여 평균 0, 표준편차 1로 정규화

2.3 다양한 거리 종류 (심화)

거리 종류설명사용 예
유클리디안직선 거리(피타고라스 거리)일반적인 거리 측정
맨해튼축 별 거리의 합 (x₁-y₁+x₂-y₂)격자 기반 경로 탐색
코사인 거리벡터 간 방향 차이문서 추천, 유사도 기반 추천 시스템

3. 비지도 학습 - K-Means Clustering

3.1 붓꽃 데이터 예시

  • Iris 데이터셋:

    • sepal_length, sepal_width, petal_length, petal_width
    • species: setosa, versicolor, virginica (지도학습의 정답)
  • 비지도학습 시나리오:

    • 정답(species)이 없다면, 데이터를 자동으로 그룹화
    • Label 없이도 자연스럽게 데이터가 군집을 이룰 수 있음

3.2 K-Means Clustering 이론

  • 가장 널리 쓰이는 군집화 알고리즘
  • K개의 군집 수를 사전에 정함

알고리즘 수행 순서

  1. K개 중심점 초기화
  2. 각 데이터 → 가장 가까운 중심점에 할당
  3. 할당된 군집의 평균으로 중심점 갱신
  4. 다시 할당 → 갱신 반복 (수렴 시까지)

장점

  • 간단하고 빠름
  • 직관적인 알고리즘 구조

단점

  • K를 미리 정해야 함
  • 이상치에 민감 (중심점 평균 사용 때문)
  • 고차원 데이터에서는 거리 계산 정확도 감소 가능
  • 반복이 많아질수록 계산량 증가

Python 주요 메서드

  • sklearn.cluster.KMeans

    • n_clusters: 군집 수
    • labels_: 각 데이터의 군집 번호
    • cluster_centers_: 군집 중심 좌표
    • max_iter: 반복 횟수 제한

3.3 군집 평가 지표

1. Elbow Method

  • 군집 수(K) 증가에 따라 거리 제곱합(SSE)이 어떻게 줄어드는지 시각화
  • SSE 곡선이 꺾이는 지점(팔꿈치)을 최적 K 후보로 사용

2. Silhouette Score

  • 실루엣 계수 S(i)=b(i)a(i)max(a(i),b(i))S(i) = \frac{b(i) - a(i)}{\max(a(i), b(i))}

    • a(i): 같은 군집 내 거리 평균
    • b(i): 가장 가까운 다른 군집과의 거리 평균
  • 값이 1에 가까울수록 군집이 잘 형성되었음을 의미

  • -1이면 군집화가 잘못되었음을 의미

  • Python 함수: sklearn.metrics.silhouette_score


4. 고객 세그멘테이션 실습

4.1 정의

  • 고객을 RFM 모델로 세분화하여 맞춤형 마케팅을 위한 군집화
  • CRM(Customer Relationship Management) 핵심 기법
항목설명
Recency(R)마지막 구매 후 경과 일수
Frequency(F)구매 횟수
Monetary(M)총 구매 금액

4.2 실습 단계 요약

  1. 데이터 불러오기

    • UCI Online Retail 데이터셋 사용
  2. EDA 및 전처리

    • 결측치 삭제 (특히 CustomerID)
    • 취소 주문 제거 (InvoiceNo에 'C' 포함된 경우)
    • 영국 데이터만 필터링
  3. RFM 변수 생성

    • 날짜 변환 후 Recency 계산
    • 고객 ID별 구매 횟수, 총 금액 계산
  4. 스케일링

    • StandardScaler 적용 (정규분포 형태로 정규화)
  5. K-Means 군집화 수행

    • Elbow / Silhouette 분석을 통해 K 결정
    • 군집별 고객 특성 분석 → 마케팅 전략 수립

5. 마무리

  • 오늘 학습한 K-Means는 비지도 학습의 대표적이고 간단한 군집화 알고리즘
  • 하지만 이상치나 고차원 데이터에 대한 한계도 존재
  • 비즈니스에서는 고객 세그멘테이션, 상품 분류, 패턴 인식 등 실무 적용도가 매우 높음
  • 이후에는 GMM, DBSCAN 등 더 정교한 비지도 학습 알고리즘도 알아볼 수 있음

0개의 댓글