Skip to main content
Summary

정답표가 없어도 사용자를 이해할 수 있다

앞 장에서는 고객이 이탈할지 예측하는 모델을 만들었다. 그때는 정답이 있었다. 어떤 고객은 실제로 떠났고, 어떤 고객은 남았다. 모델은 고객의 행동 데이터를 보고 "이 고객은 이탈할 가능성이 높다" 또는 "낮다"를 예측했다.

이번 장에서는 조금 다른 질문을 던져 보자.

"우리 서비스의 사용자는 어떤 유형으로 나뉠까?"

이 질문에는 미리 준비된 정답표가 없다. 어떤 사용자가 "충성 고객"인지, "가격 민감 고객"인지, "가끔 들어오는 구경 고객"인지는 데이터 안에 라벨로 적혀 있지 않을 때가 많다. 하지만 그렇다고 아무것도 할 수 없는 것은 아니다. 사용자의 행동을 숫자로 정리하면, 비슷한 행동을 보이는 사용자끼리 자연스럽게 가까이 모인다.

군집 분석은 바로 이 지점을 파고든다. 정답을 맞히는 대신, 데이터 안에서 비슷한 사용자 그룹을 찾아낸다. 그래서 군집화는 예측 모델이라기보다 탐색 도구에 가깝다. 어두운 방에 손전등을 비추듯, 우리가 잘 몰랐던 사용자 구조를 드러내는 방법이다.

사용자 군집 분석하기

사용자 군집 분석은 무엇을 위한 것인가

사용자 군집 분석의 목표는 단순히 사용자를 몇 개 그룹으로 나누는 것이 아니다. 진짜 목표는 "그룹마다 어떻게 다르게 대응할 것인가"를 찾는 데 있다.

예를 들어 쇼핑몰 사용자 데이터를 분석한다고 해 보자. 전체 사용자를 하나의 덩어리로 보면 평균 구매 횟수, 평균 결제액, 평균 방문 주기 정도만 보인다. 그런데 군집화를 해 보면 더 흥미로운 모습이 나타난다.

어떤 사용자는 자주 방문하지만 구매는 거의 하지 않는다. 어떤 사용자는 한 달에 한 번만 들어오지만 들어올 때마다 큰 금액을 결제한다. 또 어떤 사용자는 특정 카테고리만 반복해서 구매한다. 평균만 보면 사라지는 차이가 군집을 나누면 살아난다.

이 차이를 알면 전략도 달라진다. 자주 방문하지만 구매하지 않는 사용자에게는 첫 구매 쿠폰이 효과적일 수 있다. 고액 구매자에게는 가격 할인보다 프리미엄 혜택이 더 나을 수 있다. 특정 카테고리만 좋아하는 사용자에게는 전체 인기 상품보다 관심 카테고리의 신상품을 보여주는 편이 더 자연스럽다.

군집 분석은 사용자를 "좋다/나쁘다"로 가르는 도구가 아니다. 사용자를 더 세밀하게 이해하기 위한 지도다.

먼저 사용자를 숫자로 표현한다

머신러닝 모델은 사용자의 이름이나 느낌을 그대로 이해하지 못한다. 우리가 해야 할 첫 번째 일은 사용자의 행동을 특징으로 바꾸는 것이다.

쇼핑 서비스라면 다음과 같은 특징을 생각할 수 있다.

  • 최근 90일 동안 구매한 횟수

  • 한 번 구매할 때 평균적으로 결제한 금액

  • 방문과 방문 사이의 평균 간격

  • 최근 30일 동안 방문한 일수

  • 장바구니에 상품을 담은 횟수

  • 할인 쿠폰을 사용한 비율

  • 가장 자주 구매한 카테고리

  • 특정 카테고리별 구매 비중

이때 중요한 것은 "사용자를 어떤 관점에서 묶고 싶은가"다. 구매 행동을 기준으로 묶고 싶다면 구매 횟수, 결제액, 재구매 간격이 중요하다. 콘텐츠 서비스를 분석한다면 시청 시간, 시청 장르, 접속 시간대, 끝까지 본 비율이 더 중요할 수 있다. 앱 서비스를 분석한다면 실행 빈도, 주요 기능 사용 횟수, 알림 클릭률, 최근 접속일 등이 핵심 특징이 된다.

즉 군집 분석은 알고리즘보다 질문이 먼저다.

"우리 사용자를 무엇을 기준으로 비슷하다고 볼 것인가?"

이 질문에 대한 답이 특징을 결정한다.

실습용 사용자 데이터 상상하기

간단한 예로 온라인 쇼핑몰 데이터를 생각해 보자. 각 행은 한 명의 사용자이고, 각 열은 그 사용자의 최근 행동을 요약한 값이다.

user_idpurchase_count_90davg_order_valuevisit_interval_daysfashion_ratioelectronics_ratiofood_ratio
U00112350003.20.700.100.20
U002218000025.00.050.850.10
U003002.50.400.200.40
U0048220005.10.100.050.85

이 표에서 purchase_count_90d는 최근 90일 구매 횟수다. avg_order_value는 평균 결제액이다. visit_interval_days는 평균 방문 주기다. 숫자가 작을수록 자주 방문한다는 뜻이다. fashion_ratio, electronics_ratio, food_ratio는 사용자가 어떤 카테고리에 관심이 많은지 나타낸다.

이제 사용자는 단순한 ID가 아니라 숫자 벡터가 되었다. 앞에서 임베딩을 다룰 때 보았듯, 벡터로 표현된 데이터는 거리로 비교할 수 있다. 행동 패턴이 비슷한 사용자는 가까이에 놓이고, 행동이 크게 다른 사용자는 멀어진다.

군집화는 이 거리 감각을 이용한다.

카테고리 특징은 어떻게 숫자로 만들까

구매 횟수나 평균 결제액은 처음부터 숫자다. 하지만 선호 카테고리는 조금 더 신중하게 다뤄야 한다. 예를 들어 사용자가 가장 자주 구매한 카테고리가 패션, 전자기기, 식품처럼 문자로 되어 있다면 모델은 그 의미를 바로 계산할 수 없다.

가장 단순한 방법은 카테고리별 비율을 만드는 것이다. 최근 구매 중 패션이 70%, 전자기기가 10%, 식품이 20%라면 이를 각각 0.70, 0.10, 0.20으로 표현한다. 이렇게 하면 사용자가 어떤 분야에 얼마나 치우쳐 있는지 숫자로 나타낼 수 있다.

다른 방법으로는 원-핫 인코딩을 사용할 수 있다. 사용자의 대표 카테고리가 패션이면 is_fashion=1, is_electronics=0, is_food=0처럼 표시한다. 다만 군집 분석에서는 "패션도 조금 사고 식품도 조금 사는 사용자"처럼 섞인 취향을 보고 싶을 때가 많으므로, 단일 대표값보다 비율 특징이 더 풍부한 정보를 줄 때가 많다.

특징은 많을수록 무조건 좋은 것이 아니다. 의미 없는 특징이 들어가면 군집이 흐려진다. 사용자 유형을 나누는 데 도움이 되는 행동 신호를 고르는 것이 중요하다.

거리 기반 모델에서 스케일링이 중요한 이유

K-means는 거리 기반 알고리즘이다. 쉽게 말해 "서로 가까운 사용자끼리 묶자"는 방식이다. 그런데 여기서 큰 문제가 하나 생긴다. 특징마다 숫자의 크기가 다르면 거리 계산이 한쪽으로 쏠린다.

예를 들어 구매 횟수는 보통 0회에서 30회 사이일 수 있다. 방문 주기는 1일에서 100일 사이일 수 있다. 평균 결제액은 0원에서 500,000원까지 갈 수 있다. 이 상태에서 그대로 거리를 계산하면 평균 결제액이 군집 결과를 거의 지배해 버릴 수 있다.

두 사용자를 비교해 보자.

사용자구매 횟수평균 결제액방문 주기
A1050,000원5일
B1160,000원6일
C155,000원40일

사람이 보기에는 A와 B가 비슷해 보인다. 둘 다 자주 사고, 자주 방문한다. C는 평균 결제액은 비슷하지만 구매 횟수와 방문 주기가 다르다. 하지만 원 단위의 평균 결제액을 그대로 넣으면 10,000원 차이가 구매 횟수 1회 차이나 방문 주기 1일 차이보다 훨씬 크게 계산될 수 있다.

이럴 때 필요한 것이 스케일링이다. 스케일링은 특징들의 숫자 범위를 비슷하게 맞추는 전처리다. 대표적으로 표준화는 각 특징을 평균 0, 표준편차 1 근처로 바꾸어 준다. 어려운 말처럼 들리지만 핵심은 간단하다.

"구매 횟수, 결제액, 방문 주기가 공정하게 거리 계산에 참여하도록 숫자의 단위를 맞춘다."

스케일링을 하지 않은 K-means는 큰 목소리를 가진 특징만 듣는 회의와 비슷하다. 스케일링을 하면 각 특징이 적절한 크기의 목소리로 말할 수 있다.

K-means로 사용자 그룹 만들기

이제 K-means를 사용해 사용자를 묶어 보자. K-means에서 K는 만들고 싶은 군집의 개수다. K를 4로 정하면 사용자를 4개 그룹으로 나눈다. K를 5로 정하면 5개 그룹으로 나눈다.

K-means의 작동 방식은 직관적이다.

  • 먼저 K개의 중심점을 임의로 놓는다.

  • 각 사용자를 가장 가까운 중심점에 배정한다.

  • 같은 군집에 속한 사용자들의 평균 위치로 중심점을 옮긴다.

  • 사용자 배정과 중심점 이동을 군집이 안정될 때까지 반복한다.

처음에는 중심점이 어설프게 놓일 수 있다. 하지만 반복할수록 중심점은 사용자들이 많이 모여 있는 위치로 이동한다. 결국 각 사용자는 자신과 가장 가까운 중심점의 군집에 속하게 된다.

중요한 점은 K-means가 군집 이름을 알려주지는 않는다는 것이다. 알고리즘은 "0번 군집", "1번 군집", "2번 군집"처럼 번호만 붙인다. "충성 고객", "잠재 고액 고객", "휴면 위험 고객" 같은 의미는 사람이 해석해야 한다.

군집 분석에서 가장 재미있는 부분도 바로 여기에 있다. 모델이 나눈 그룹을 사람이 읽고, 비즈니스 언어로 번역하는 과정이다.

전체 흐름을 코드로 바라보기

실제 프로젝트에서는 대략 다음과 같은 흐름으로 진행한다. 여기서는 코드를 외우기보다 어떤 순서로 일이 진행되는지 보는 것이 중요하다.

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans

# 1. 사용자별 행동 특징 선택
features = [
    "purchase_count_90d",
    "avg_order_value",
    "visit_interval_days",
    "fashion_ratio",
    "electronics_ratio",
    "food_ratio"
]

X = user_df[features]

# 2. 스케일링
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# 3. K-means 학습
kmeans = KMeans(n_clusters=4, random_state=42, n_init="auto")
user_df["cluster"] = kmeans.fit_predict(X_scaled)

# 4. 군집별 특징 요약
cluster_profile = user_df.groupby("cluster")[features].mean()
print(cluster_profile)

코드에서 가장 중요한 부분은 세 가지다. 첫째, 어떤 특징을 사용할지 정한다. 둘째, 스케일링을 한다. 셋째, K-means로 군집 번호를 붙인 뒤 군집별 평균을 확인한다.

fit_predict는 K-means가 데이터를 보고 군집 중심을 찾은 다음, 각 사용자에게 군집 번호를 붙이는 과정이다. 지도학습에서 fit이 라벨을 보고 학습하는 과정이었다면, 여기서는 라벨 없이 데이터의 거리 구조를 보고 학습한다.

K는 몇 개로 정해야 할까

K-means를 사용할 때 가장 자주 나오는 질문은 이것이다.

"군집을 몇 개로 나누어야 하나요?"

정답은 없다. 군집 분석은 라벨이 없기 때문에 "정확도 92%"처럼 단번에 판단하기 어렵다. 대신 여러 K를 시도해 보고, 데이터 구조와 비즈니스 활용 가능성을 함께 본다.

K가 너무 작으면 서로 다른 사용자가 한 그룹에 섞인다. 예를 들어 모든 사용자를 2개 군집으로만 나누면 "많이 쓰는 사용자"와 "적게 쓰는 사용자" 정도밖에 보이지 않을 수 있다. 반대로 K가 너무 크면 그룹이 지나치게 잘게 쪼개져 해석하기 어려워진다. 20개 군집이 나왔는데 각 그룹을 어떻게 다르게 대응할지 모르겠다면 실무적으로는 부담이 된다.

K를 고를 때는 보통 다음 관점을 함께 본다.

  • 군집 안의 사용자들이 서로 충분히 비슷한가

  • 군집끼리는 행동 특성이 충분히 다른가

  • 각 군집의 크기가 너무 작거나 크지 않은가

  • 마케팅, 추천, 서비스 개선에 실제로 활용할 수 있는가

실무에서는 3개에서 8개 정도의 K를 먼저 시도해 보는 경우가 많다. 그다음 군집별 프로필을 살펴보며 "이 구분이 실제 의사결정에 도움이 되는가"를 판단한다.

엘보 방법이나 실루엣 점수 같은 지표도 참고할 수 있다. 엘보 방법은 K를 늘릴수록 군집 내부 거리가 얼마나 줄어드는지 보는 방식이다. 어느 순간부터 개선 폭이 확 줄어드는 지점이 있다면 그 근처의 K를 후보로 삼는다. 실루엣 점수는 각 데이터가 자기 군집에는 잘 붙어 있고 다른 군집과는 잘 떨어져 있는지를 보는 지표다.

하지만 지표가 모든 것을 결정하지는 않는다. 군집 분석의 최종 목적은 "숫자로 예쁜 결과"가 아니라 "이해 가능하고 행동으로 이어지는 그룹"을 찾는 것이다.

군집 결과 해석하기

K-means가 군집 번호를 붙였다면 이제부터가 진짜 분석이다. 각 군집의 평균 특징을 살펴보자.

예를 들어 4개 군집을 만들었더니 다음과 같은 결과가 나왔다고 하자.

군집구매 횟수평균 결제액방문 주기주요 카테고리해석
0높음중간짧음식품생활형 반복 구매 고객
1낮음높음김전자기기가끔 오는 고액 구매 고객
2낮음낮음짧음패션자주 구경하는 잠재 고객
3중간중간길어지는 중혼합이탈 위험 고객

이 표는 군집 번호를 사람의 언어로 바꾼 것이다. 0번 군집은 자주 방문하고 자주 구매한다. 평균 결제액은 아주 높지 않지만 반복 구매가 많다. 식품 비중이 높다면 생활형 반복 구매 고객이라고 해석할 수 있다.

1번 군집은 자주 오지는 않지만 한 번 구매할 때 큰돈을 쓴다. 전자기기 비중이 높다면 고관여 상품을 신중하게 비교한 뒤 구매하는 고객일 수 있다. 이들에게는 잦은 쿠폰 알림보다 신제품 정보, 상세 비교 콘텐츠, 보증 혜택이 더 효과적일 수 있다.

2번 군집은 자주 방문하지만 구매가 적다. 이들은 관심은 있지만 아직 구매 장벽을 넘지 못한 사용자일 수 있다. 가격, 배송비, 후기 부족, 첫 구매 불안 등이 원인일 수 있다.

3번 군집은 한때 활동했지만 방문 간격이 길어지고 구매도 줄어드는 사용자일 수 있다. 앞 장에서 다룬 이탈 예측과 연결하면, 이 군집은 이탈 위험 고객 후보로 볼 수 있다.

이처럼 군집 분석은 "모델이 알아서 답을 준다"기보다, 모델이 만든 그룹을 사람이 읽어 내는 과정이다. 좋은 군집 이름은 보고서 장식이 아니다. 이후 액션을 결정하는 기준이 된다.

군집에 이름 붙이기

군집 번호는 기억하기 어렵다. "2번 군집을 대상으로 캠페인을 진행하겠습니다"라고 말하면 팀원들은 매번 표를 다시 확인해야 한다. 그래서 군집에는 의미 있는 이름을 붙이는 것이 좋다.

좋은 군집 이름은 짧고, 행동 특성이 드러나며, 다음 행동을 떠올리게 만든다.

  • 생활형 반복 구매 고객

  • 고액 단발 구매 고객

  • 자주 방문하는 미구매 고객

  • 할인 반응형 고객

  • 이탈 위험 재활성화 고객

  • 특정 카테고리 충성 고객

이름을 붙일 때 조심할 점도 있다. 군집 이름은 해석이지 진실 그 자체가 아니다. 예를 들어 "가격 민감 고객"이라고 이름 붙였다고 해서 그 사용자가 정말 가격만 보는 사람이라고 단정해서는 안 된다. 우리가 가진 데이터에서 할인 쿠폰 사용률이 높고 저가 상품 구매 비중이 높았기 때문에 그렇게 추정하는 것이다.

군집 이름은 지도 위의 지명과 같다. 길을 찾기 쉽게 해 주지만, 그 지역의 모든 사람을 완벽하게 설명하지는 않는다.

군집별 마케팅 메시지 만들기

군집 분석의 장점은 사용자에게 같은 메시지를 반복해서 보내지 않아도 된다는 데 있다. 모든 사용자에게 "10% 할인!"이라는 메시지를 보내는 것은 편하지만 섬세하지 않다. 어떤 사용자에게는 할인보다 신뢰가 중요하고, 어떤 사용자에게는 신상품 정보가 중요하고, 어떤 사용자에게는 배송 혜택이 더 중요할 수 있다.

군집별로 메시지를 다르게 설계해 보자.

군집 유형가능한 메시지기대 효과
생활형 반복 구매 고객자주 사는 상품의 정기 구매 혜택 안내반복 구매 유지
고액 단발 구매 고객프리미엄 신상품, 보증, 비교 콘텐츠 제공고가 상품 재구매 유도
자주 방문하는 미구매 고객첫 구매 쿠폰, 무료 배송, 인기 후기 강조구매 장벽 낮추기
이탈 위험 고객최근 관심 상품 리마인드, 복귀 혜택 제공재방문 유도

여기서 중요한 것은 군집 분석만으로 캠페인 효과를 확신해서는 안 된다는 점이다. 군집은 가설을 만들어 준다. "이 그룹에는 이런 메시지가 잘 먹힐 것 같다"는 가설이다. 실제 효과는 A/B 테스트나 캠페인 결과 분석으로 확인해야 한다.

군집화는 답안지가 아니라 아이디어 생성기다. 하지만 좋은 아이디어 생성기는 실무에서 매우 강력하다.

상품 추천에 군집 활용하기

군집 분석은 추천 시스템에도 사용할 수 있다. 물론 다음 장에서 추천 시스템을 더 자세히 다루겠지만, 여기서는 군집화가 추천의 출발점이 될 수 있다는 감각만 잡아 보자.

가장 단순한 방식은 같은 군집 사용자가 많이 구매한 상품을 추천하는 것이다. 예를 들어 어떤 사용자가 "생활형 반복 구매 고객" 군집에 속한다면, 같은 군집의 다른 사용자들이 자주 재구매한 상품을 보여줄 수 있다. "전자기기 고액 구매 고객" 군집이라면 액세서리, 보증 서비스, 관련 신제품을 추천할 수 있다.

이 방식은 개인별 취향을 아주 정교하게 맞추지는 못한다. 하지만 데이터가 많지 않거나 추천 시스템을 처음 만들 때는 꽤 유용한 출발점이 된다. 개인을 완벽하게 이해하기 어렵다면, 먼저 비슷한 사용자 그룹의 행동을 참고하는 것이다.

추천의 기본 생각은 간단하다.

"당신과 비슷한 사람들이 관심을 보인 것을 당신도 좋아할 가능성이 있다."

군집 분석은 이때 "비슷한 사람들"을 찾는 한 가지 방법이다.

서비스 개선에도 쓸 수 있다

군집 분석은 마케팅에만 쓰이지 않는다. 제품과 서비스 개선에도 큰 힌트를 준다.

예를 들어 자주 방문하지만 구매하지 않는 군집이 크다면, 사용자는 관심이 있는데 구매 단계에서 막히고 있을 수 있다. 이때는 결제 과정, 배송비 노출 방식, 상품 정보의 신뢰도, 리뷰 품질을 점검해야 한다.

방문 간격이 점점 길어지는 군집이 있다면 알림, 콘텐츠 신선도, 재방문 동기가 약해졌을 수 있다. 특정 카테고리 충성 고객이 많다면 그 카테고리의 탐색 경험을 더 강화할 수 있다. 고액 구매 고객이 고객센터 문의를 많이 남긴다면 프리미엄 상담이나 사후 관리가 중요할 수 있다.

군집 분석은 사용자에게 "무엇을 팔 것인가"뿐 아니라 "서비스를 어디부터 고칠 것인가"를 알려준다. 데이터는 매출표만이 아니라 사용자의 불편과 기대가 남긴 흔적이기도 하다.

군집 결과를 믿기 전에 확인할 것들

군집 분석은 매력적이지만 조심해야 할 부분도 많다. 라벨이 없기 때문에 그럴듯한 해석을 붙이기 쉽다. 사람은 패턴을 좋아해서, 우연히 나뉜 그룹에도 의미를 부여하려는 경향이 있다.

그래서 군집 결과를 사용할 때는 몇 가지를 확인해야 한다.

  • 스케일링을 했는가

  • 너무 큰 금액 특징 하나가 군집을 지배하지는 않는가

  • 이상치 몇 명 때문에 중심점이 끌려가지는 않았는가

  • K를 바꿔도 비슷한 구조가 반복해서 나타나는가

  • 군집별 사용자 수가 실무적으로 활용 가능한 규모인가

  • 군집 이름이 데이터에 근거한 해석인가

  • 캠페인이나 추천 결과로 실제 효과를 검증했는가

특히 이상치에 주의해야 한다. 아주 큰 금액을 한 번 결제한 사용자가 몇 명 있으면 K-means 중심점이 그쪽으로 끌릴 수 있다. 이 경우 평균 결제액을 그대로 쓰기보다 로그 변환을 하거나, 극단값을 따로 살펴보는 방법을 고려할 수 있다.

또 군집은 시간이 지나면 변한다. 사용자는 계속 행동을 바꾼다. 처음에는 구경만 하던 사용자가 어느 순간 충성 고객이 될 수도 있고, 자주 구매하던 사용자가 관심을 잃을 수도 있다. 따라서 군집 분석은 한 번 하고 끝나는 작업이 아니라 주기적으로 갱신해야 하는 사용자 이해 도구에 가깝다.

사용자 한 명의 군집은 어떻게 바뀔까

군집 분석을 더 재미있게 활용하려면 사용자 이동을 보면 된다. 예를 들어 어떤 사용자가 지난달에는 "자주 방문하는 미구매 고객" 군집에 있었는데 이번 달에는 "생활형 반복 구매 고객" 군집으로 이동했다면, 이 사용자는 구매 전환에 성공한 것이다.

반대로 "생활형 반복 구매 고객"이 "이탈 위험 고객" 군집으로 이동했다면 주의 신호다. 이때는 최근 구매 품목이 품절되었는지, 배송 문제가 있었는지, 경쟁 서비스로 이동했는지 살펴볼 수 있다.

군집을 한 시점의 사진으로만 보지 말고 시간에 따른 영화처럼 보면 더 많은 이야기가 보인다. 사용자의 상태 변화가 보이고, 서비스가 어느 지점에서 사용자를 붙잡거나 놓치는지도 보인다.

이 관점은 앞 장의 고객 이탈 예측과도 연결된다. 이탈 예측 모델은 "이 사용자가 떠날 가능성이 높은가"를 묻는다. 군집 분석은 "이 사용자는 지금 어떤 행동 유형에 가까운가"를 묻는다. 두 질문을 함께 쓰면 훨씬 풍부한 사용자 전략을 세울 수 있다.

간단한 프로젝트 흐름 정리

사용자 군집 분석 프로젝트를 처음부터 끝까지 정리하면 다음과 같다.

  • 분석 목적을 정한다. 구매 행동을 나눌 것인지, 방문 패턴을 나눌 것인지, 콘텐츠 취향을 나눌 것인지 결정한다.

  • 사용자 단위의 데이터를 만든다. 한 행이 한 명의 사용자가 되도록 구매 횟수, 평균 결제액, 방문 주기, 카테고리 비율 등을 요약한다.

  • 특징을 점검한다. 결측값, 이상치, 너무 한쪽으로 치우친 값, 의미 없는 특징을 확인한다.

  • 숫자 스케일을 맞춘다. 거리 기반 군집화에서는 스케일링이 결과에 큰 영향을 준다.

  • 여러 K를 시도한다. 지표와 해석 가능성을 함께 보며 적절한 군집 수를 고른다.

  • 군집별 프로필을 만든다. 평균, 중앙값, 비율, 대표 행동을 확인한다.

  • 군집에 이름을 붙인다. 번호가 아니라 사람이 이해할 수 있는 사용자 유형으로 번역한다.

  • 액션을 설계한다. 마케팅 메시지, 상품 추천, 서비스 개선, 재방문 캠페인으로 연결한다.

  • 결과를 검증한다. 실제 캠페인 성과나 사용자 행동 변화로 군집 전략이 효과적인지 확인한다.

이 흐름은 앞에서 반복해 온 머신러닝의 기본 구조와도 닮아 있다. 데이터를 준비하고, 특징을 만들고, 모델을 적용하고, 결과를 해석하고, 새로운 데이터와 실제 행동에 연결한다. 다만 여기서는 정답 라벨이 없기 때문에 "맞혔다/틀렸다"보다 "의미 있는 구조를 찾았는가"가 더 중요하다.

군집 분석의 진짜 가치는 해석에 있다

K-means를 실행하는 것은 어렵지 않다. 몇 줄의 코드면 사용자에게 군집 번호를 붙일 수 있다. 하지만 좋은 군집 분석은 그다음부터 시작된다.

이 그룹은 왜 함께 묶였을까? 이 군집은 다른 군집과 무엇이 다를까? 이 사용자는 어떤 문제를 겪고 있을까? 어떤 메시지를 받으면 반응할까? 어떤 상품을 추천하면 자연스러울까? 어떤 서비스 개선이 이 그룹에 도움이 될까?

군집 분석은 모델이 사용자를 대신 설명해 주는 과정이 아니다. 모델이 던진 힌트를 바탕으로 사람이 사용자를 더 깊이 이해하는 과정이다.

정답이 있는 문제에서는 모델이 답을 맞히는지가 중요했다. 정답이 없는 문제에서는 모델이 우리가 더 좋은 질문을 하게 만드는지가 중요하다. 사용자 군집 분석은 바로 그런 도구다. 데이터를 몇 개의 무리로 나누는 것처럼 보이지만, 실제로는 사용자를 바라보는 눈을 더 섬세하게 만들어 준다.

다음 장에서는 이 군집화의 감각을 추천 시스템으로 이어 간다. 비슷한 사용자를 찾고, 비슷한 상품을 찾고, 그 연결을 이용해 "이 사용자에게 무엇을 보여줄 것인가"를 결정하는 세계로 들어가 보자.

책 목록

처음 만나는 머신러닝: 데이터가 스스로 규칙을 배우는 법

전체 목차 보기

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기