끄적끄적
2025.07.07 머신러닝 세션 3 본문
| 튜터 | 임정 튜터님 |
| 학습목표 | 1. 지도 학습과 비지도학습을 구분할 수 있다. 2. 데이터에서 거리개념의 중요성과 측정 방법을 알 수 있다. 3. Kmeans를 이용해서 군집화하고 활용할 수 있다. |
1️⃣ 머신러닝 종류 복습
📌 지도학습과 비지도학습
지도학습이란 정답이 주어진 데이터를 가지고 학습하는 방법이다. (예측, 분류, ...)
비지도학습이란 정답을 모르는 데이터를 가지고 학습하는 방법이다. (연관 규칙, 군집, ...)
이때, 군집화란 비지도학습 중 하나로 서로 가까이 있는 비슷한 것들의 군집(그룹)을 이루는 작업이다.
ex) 마케팅에서의 군집화
비지도학습이라는 알고리즘을 적용하기 전에 고객의 특성(구매빈도, 금액, 주기) 등을 기준으로 나누어서 고객을 군집화하는 방법을 많이 쓴다.
이를 알고리즘을 이용하셔 비슷한것 끼리 모으겠다는게 군집화의 아이디어
- 고객 특성에 따른 그룹화, 군집화
ex) 헤비유저, 일반유저
- 구매 내역별로 데이터 그룹화
ex) 생필품 구매
📌 군집화를 하기 위한 기준
군집을 만들 때는 특정 기준에 따라 그룹을 나눈다.
- intra-cluster (군집 내 거리): 데이터의 거리가 가까울수록 좋다.
- inter-cluster (군집 간 거리): 각 군집 사이의 거리가 멀수록 좋다.
이때, 데이터 거리란 데이터 특성, 분석가에 주관에 따라 다양하게 판단할 수 있다.
가장 간단한 거리의 개념은 유클리디안 거리이다.
유클리디안 거리는 각 데이터 포인트의 거리를 구하는 방법으로 이를 위해 데이터 스케일링 과정이 필수적이다.
데이터 스케일링
- 컬럼의 값, 단위에 따라 값이 크거나 작아질 수 있음(Ex 1m = 100cm)
- 컴퓨터는 단위의 개념을 모르기 때문에, 큰 숫자는 더 큰 영향을 끼칠 수 있음
- 이를 보완하기 위해 데이터의 범위를 통일하는 것이 스케일링
- StandardScaler 는 정규분포를 이용하여 평균 0, 표준편차 1을 따르도록 변환시키는 클래스

📌 그 외 거리의 종류
- 유클리디안 거리

- 두 지점 사이의 최단 거리를 계산하는 방법
- 피타고라스 직선 거리와 동일하다.
- 맨해튼 거리

- 두 지점에 대해 각 차원상 거리 차이의 합
- 2차원에 대해서는 맨해튼 거리 = X축 사이의 차이 + Y축 사이의 차이로 볼 수 있다.
- 두 지점 사이의 최적 경로를 계산하는 경우에 사용한다.
- 코사인 거리

- 두 데이터 값의 방향성의 차이를 측정한 거리
- 주로 추천 알고리즘과 같은 경우에 사용한다.
2️⃣ 비지도 학습
대표적인 비지도 학습인 K-means 알고리즘을 알아보겠다.
📌 붓꽃 데이터를 이용한 군집화 예시

데이터 설명
- sepal_length: 꽃 받침의 길이
- sepal_width: 꽃 받침의 너비
- petal_length: 꽃 잎의 길이
- petal_width 꽃 잎의 너비
- species(Y, 레이블): 붓꽃 종(setosa, virginica, versicolor)
해당 데이터는 Species가 정의되어있어 지도학습에 사용할 수 있지만, 만약 Species 정보가 없다면 이를 비지도학습에 사용할 수도 있다.
해당 데이터를 ' sepal_length( 꽃 받침의 길이)'에 따른 산점도를 라벨링이 없는 경우와 라벨링이 붙어 있는 경우로 나누어 살펴보면 아래와 같이 확인할 수 있다.


이를 실제로 K-Means Clustering를 사용해 군집화해보겠다.
📌 K-Means Clustering 이론
K-Means Clustering 수행 순서
- K개의 군집 수 설정
- 임의의 중심 설정

- 해당 중심점과 가까운 데이터 그룹화

- 데이터 그룹의 무게중심으로 중심점을 이동
- 중심점을 이동했기에 다시 거리가 가까운 데이터를 그룹화
(3 ~ 5번 반복)
장점
- 일반적이고 적용하기 쉬움
단점
- 거리 기반으로 가까움을 측정하기 때문에 차원(컬럼)이 많을 수록 모델 성능이 불확실해짐
- 반복 횟수가 많을 수록 시간이 느려짐
- 몇 개의 군집(K)을 선정할지 주관적임
- 평균을 이용하기 때문에(중심점) 이상치에 취약함
Python 라이브러리
- sklearn.cluster.KMeans
- 함수 입력 값
- n_cluster: 군집화 갯수
- max_iter: 최대 반복 횟수
- 메소드
- labels_: 각 데이터 포인트가 속한 군집 중심점 레이블
- cluster_centers: 각 군집 중심점의 좌표
- 함수 입력 값
📌 군집평가 지표
군집화는 비지도학습이기 때문에 정답이 없어, 평가를 하는 것에 어려움이 있다.
다만, 잘된 군집화란 동일 군집끼리는 가까이 있고, 다른 군집 간에는 떨어져 있다는 것을 의미한다.
Elbow Method
- X 축: 설정한 군집 수
- Y 축: 각 군집과 데이터 포인트간의 거리의 제곱 합


실루엣 계수
- 각 군집 간의 거리가 얼마나 효율적으로 분리되어 있는지 측정
- (심화) 실루엣 계수 수식
- 수식
\(S(i)\) = \(\frac{b(i)-a(i)}{max(a(i),b(i))} \) 단 \(i\) 는 데이터
- \(a(i)\): 데이터 포인트 \(i\) 과 같은 군집에 속한 다른 포인트들과의 평균 거리
- \(b(i)\): 데이터 포인트 \(i\) 와 가장 가까운 다른 군집 간의 평균 거리
- 수식을 해석해보자면 특정한 데이터 i의 실루엣 계수는 얼마나 떨어져있는가(\(b(i) -a(i))\)가 클 수록 크며, 이를 단위 정규화를 위해 \(a(i), b(i)\) 값 중에 큰 값으로 나눈다.
- 수식
- 좋은 군집화의 조건(실루엣)
- 1로 갈수록 잘 군집화 되어 있음. -1에 가까울수록 잘 못 군집화 되어 있음.
- 개별 군집의 평균 값의 편차가 크지 않아야 함
- Python 라이브러리
- sklearn.metrics.sihouette_score: 전제 데이터의 실루엣 계수 평균 값 반환
- 함수 입력 값
- X: 데이터 세트
- labels: 레이블
- metrics: 측정 기준 기본은 euclidean
- 함수 입력 값
- sklearn.metrics.sihouette_score: 전제 데이터의 실루엣 계수 평균 값 반환
3️⃣ 실습 (고객 세그멘테이션)
☑️ 고객 세그멘테이션의 정의
비지도 학습이 가장 많이 사용되는 분야는 고객 관계 관리(Customer Relationship Management, CRM)분야 입니다. 이중 고객 세그멘테이션(Customer Segmentation)은 다양한 기준으로 고객을 분류하는 기법입니다. 주로 타겟 마케팅
이라 불리는 고객 특서엥 맞게 세분화 하여 유형에 따라 맞춤형 마게팅이나 서비스를 제공하는 것을 목표로 둡니다.

- RFM의 개념
- Recency(R) 가장 최근 구입 일에서 오늘까지의 시간
- Frequency(F): 상품 구매 횟수
- Monetary value(M): 총 구매 금액
(실습) 고객 세그멘테이션

- UCI 데이터 세트 다운로드 링크
- retail_df.head()

- retail_df.info()

- 컬럼 정보
- InvoiceNO: 6자리의 주문번호(취소된 주문은 c 로 시작)
- StockCode: 5자리의 제품 코드
- Description : 제품 이름(설명)
- Quantity: 주문 수량
- InvoiceDate: 주문 일자, 날짜 자료형
- UnitPrice: 제품 단가
- CustomerID: 5자리의 고객 번호
- Country: 국가명
- retail_df.head()
- EDA
- 데이터전처리
- customerID 결측치 삭제
- InvoiceNo, UniPrice, Quantity 데이터확인 및 삭제
- 영국데이터만 취함
- RFM 기반 데이터 가공
- 날짜 데이터 가공
- 최종목표

-
StandardScaler 적용
- 고객 세그멘테이션
- 평가
2025.07.02 - [[스파르타]내일배움캠프 데이터 분석 트랙] - 36일차 - 머신러닝 세션 1
36일차 - 머신러닝 세션 1
튜터임정 튜터님1️⃣ 선형 회귀의 사례갓 1차 방적식을 배운 학생이라 가정하고, 선형회귀를 적용해보자. 📌 몸무게와 키 상관관계방정식을 배운 머신이는 몸무게와 키의 데이터를 획득했다.
kminx.tistory.com
2025.07.03 - [[스파르타]내일배움캠프 데이터 분석 트랙] - 37일차 - 머신러닝 세션 2
37일차 - 머신러닝 세션 2
튜터임정 튜터님학습목표1. 분류 모델링을 알아보는 것을 목적으로 합니다. 2. Decision Tree과 Random Forest 모델을 익혀봅니다. 3. 평가지표 Accuracy, F1-score에 대해서 알아봅니다.1️⃣ 의사결정나무와
kminx.tistory.com
'[스파르타]내일배움캠프 데이터 분석 트랙 > Session' 카테고리의 다른 글
| 2025.07.07 데이터 크롤링 세션 3 (5) | 2025.07.09 |
|---|---|
| 2025.07.07 Pandas 실무 기초 세션 3 (0) | 2025.07.09 |
| 2025.07.04 데이터 크롤링 세션 2 (10) | 2025.07.09 |
| 2025.07.04 Pandas 실무 기초 세션 2 (0) | 2025.07.09 |
| 2025.07.03 통계 세션 5 (1) | 2025.07.09 |