아래 글은 모두 'step by step [파이썬 비즈니스 통계분석]' 교재를 기초로 진행한 내용입니다. 모든 장은 이전 장과 이어져 있으니, 세부 내용 및 이전 글이 궁금하시다면 해당 블로그의 이전 장과 교재를 참고해주시면 되겠습니다.~~
군집분석이란?
집단 또는 범주에 대한 사전 정보가 없는 데이터의 경우, 주어진 관측값을 사용해 전체를 몇 개의 유사한 집단으로 그룹화하는 작업이다. 그룹화한 뒤, 각 집단의 성격을 파악하기 위해 사용하는 통계분석기법!
Ex) 일반적인 집단 분류: 연령, 성별, 구매금액수준, 고객등급 등 구체적인 분류기준을 정한 뒤 이에 따라 그룹으로 나누는 경우가 많다.
하지만 집단을 구분하기 위해 정해진 분류기준이 없거나, 몇 개의 집단으로 분류할지 객관적인 기준이 없다면..?
이 때 사용하는 것이 바로 군집분석. 어떻게 분류해야 하고, 객관적인 기준도 모르겠다 할 때 '유의미한 동질적 그룹'으로 분류해줄 수 있는 방법이다. 이 말씀!!
Ex) 고객이나 상품과 같은 분류 대상 개체들 간의 유사성을 측정하여 유사성이 높은 대상들을 묶어 전체를 세분화하고, 데이터 전체의 구조와 특성을 파악한다! 그렇게 함으로써, 추후 해당 군집으로 편입될 고객들을 예측하기도 하고, 군집분석 결과를 바탕으로 다른 통계분석기법을 접목하여 활용이 가능하다~!!
군집분석 과정은?
1. 군집분석 방법결정: 목적과 데이터의 특성에 따라 최적의 군집분석 방법을 결정한다. *탐색적인 목적이 강하거나 분류 개체의 규모가 크지 않을 경우에는 1) 계층적 군집분석을, *내부적으로 확정된 군집 수에 의해 대규모 분류 개체를 적용할 경우 2) 비계층적 군집분석 방법을 채택한다.
2. 분석변수 지정: 개체들을 군집화하기 위해 유사성(거리)을 측정하는데 사용될 분석변수를 지정한다. 기본적으로 분석변수 모두에 대해 계산을 수행하므로 지정한 분석변수가 무엇이냐에 따라 군집의 품질이 좌우된다.
cf) 개체 간의 유사성은 거리를 바탕으로 측정되기 때문에, 수치형 변수를 권장한다.
3. 이상치 제거: 선정된 분석변수들을 기준으로 분류대상 개체들의 분포를 파악해 극단값을 갖는 이상치를 분석에서 제거한다. 이상치에 해당하는 개체는 소속된 군집의 속성 값을 왜곡시켜 군집 간의 유사성 계산 시 잘못된 거리 값을 파생시키기 때문에, 비현실적 군집결과를 예방하고자 이상치를 제거한다.
4. 유사성 측정: 분석변수들의 특성을 바탕으로 가장 적합한 유사성 측정방식을 채택해 개체 혹은 군집 간의 유사성을 평가한다. 군집분석에서 주로 사용되는 거리측정 방식은 유클리디안 거리, 맨하탄 거리, 피어슨 거리, 민코프스키 거리, 마할라노비스 거리 측정 방식 등이 있다.
5. 군집화: 군집분석 과정에서 계산된 군집 간의 거리(비유사성 여부)를 바탕으로 유사한 개체 혹은 군집들을 묶어 동질적인 집단으로 형성한다. 1) 계층적 군집분석에서의 군집화 방법은 *최단 연결법, 최장 연결법, ward 방법 등이 있고, k-평균 군집분석과 같은 2) 비계층적 군집분석에서는 *순차적 군집화, 동시 군집화, 최적할당 군집화 등의 방법이 있다.
6. 군집특성 파악: 군집분석 결과로 도출된 각 군집들의 특성을 파악하고, 각 특성에 적합한 군집명을 지정한다. 분석목적에 따라 군집분석에 사용된 분석변수 외에도 다른 외생변수들의 관점에서 군집들 간의 특성을 비교할 수 있으며, 추가적인 분석을 수행할 수도 있다.
군집분석의 종류
1. 계층적 군집분석
모든 개체들에 대해 순차적 혹은 계층적으로 군집을 형성시켜 나아가는 군집분석 방법. 나무모양의 계층구조로 이루어져 있어 군집의 형성 과정을 정확하게 파악할 수 있다! 군집화 되어가는 과정에서 가장 적절한 군집단계를 지정함으로써 해당 군집단계의 군집 수를 최종 군집분석의 결과로 활용하게 된다.
또한 내재된 자료의 특성에 따라 자연적인 계층구조를 만들기 때문에, 자료의 구조적 특성에 가장 적합한 군집 수를 결정할 수 있다는 점과 군집이 형성되어 가는 과정을 명확하게 파악할 수 있다.
그러나 계층적 군집분석의 경우 분석 자료의 크기가 커질수록 연산이 오래 걸리고, 적절한 군집단계를 파악하기 어려워져 효율성이 떨어질 수있다. 주로 군집의 수가 지정되지 않은 상태에서 분류대상 개체를 탐색적으로 그룹화하기 위한 군집분석 방법. 계층을 이루는 방향에 따라 병합방법(bottom-up), 분할방법(top-down)으로 구분한다.
▶ 병합방법: 전체 개체 수 N개로부터 시작해 최종적으로 하나의 군집이 남을 때까지 순차적으로 유사한 개체들을 병합해 나가는 방식.
▶ 분할방법: 모든 개체들을 포함하고 있는 하나의 군집에서 시작해 최종적으로 전체 개체 수인 N개의 군집으로 분할될 때까지 순차적으로 상이한 개체들을 분할해 나가는 방식.
> 주로 병합방법을 사용!
*병합방식의 계층적 군집화 방법
계층적 군집분석에서 측정된 유사성을 근거로 각 군집들을 결합해 나가는 방법!!
- 최단 연결법: 각 군집에 속하는 임의의 두 개체들 사이의 거리 중 최단거리를 두 군집 간의 거리로 정의하는 방식.
- 최장 연결법: " 최장거리를 두 군집 간의 거리로 정의하는 방식.
- 평균 연결법: 각 군집에 속하는 모든 개체들의 평균거리를 두 군집 간의 거리로 정의하는 방식
- 중심 연결법: " 중심 위치에 있는 개체 간의 거리를 두 군집 간의 거리로 정의하는 방식.
- 중위수 연결법: 각 군집에 속하는 임의의 두 개체들의 거리 평균을 함해 2로 나눈 값. 즉, 중위수에 해당하는 거리를 두 군집 간의 거리로 정의하는 방식.
- ward의 방법: 각 군집에 속한 개체가 해당 군집의 평균과의 거리 편차를 제곱한 값인 잔차 제곱합의 증가를 최소화할 수 있는 지점 간의 거리를 두 군집 간의 거리로 정의하는 방식. (계층적 군집분석에서 가장 많이 적용되는 방식이다.)
*군집 수 결정 방법
덴드로그램을 활용한 방법. 군집화 일정표의 결과를 시각적으로 옮긴 군집 현황 도표로써 각 단계에서 관측치의 군집화를 통해 형성된 그룹과 이들의 유사성을 표시하는 트리 다이어그램이다.

가지의 길이(distance)는 군집이 서로 얼마나 멀리 떨어져 있는지를 보여준다. 따라서 가지의 길이를 바탕으로 적절한 군집의 개수를 정할 수 있다. 위 덴드로그램에서는 2개 군집으로 나뉘어졌을 때 가장 길게 나타나므로, 최적의 군집 수는 2라고 할 수 있다!
# 실전 분석
A 쇼핑은 RFM 기반의 고객세분화를 수행하고자 500명의 고객을 무작위로 샘플링하여 Recency, Frequency, Monetary 세 가지 변수를 통한 계층적 군집분석을 진행하고자 한다.
import pandas as pd
import numpy as np
from scipy.cluster.hierarchy import linkage
df = pd.read_csv(".../Ashopping.csv", sep = ',' , encoding = 'CP949')
data_temp = df.sample(n = 500, random_state = 111)
X = data_temp[['Recency', 'Frequency', 'Monetary']]
cluster = linkage(X, method = 'average', metric = 'euclidean')
print(cluster[490:])

from scipy.cluster.hierarchy import dendrogram
import matplotlib.pyplot as plt
%matplotlib inline
plt.title("Dendrogram")
plt.xlabel("index")
plt.ylabel("distance")
dendrogram(cluster)
plt.show()

# 결과 해석
군집분석 결과로 제시된 덴드로그램을 바탕으로 적절한 군집의 수를 결정할 수 있다. 후보 군집의 개수는 가지의 길이(거리)가 긴 2개 군집 혹은 3개 군집을 선택할 수 있다.
한편 해당 분석에서는 RFM을 중심으로 고객세분화가 주 목적이다. 때문에, 2개 그룹보다는 3개 고객그룹으로 고객들을 관리하는 것이 마케팅 관점에서 더욱 유용하다. 이처럼 계층적 군집분석의 결과는 기계적으로 해석하기 보다는 실무적 관점에서 융통적으로 갖고 판단해야 한다!

사용자별로 얼마나 최근에, 얼마나 자주, 얼마나 많은 금액을 지출했는지에 따라 사용자들의 분포를 확인하거나 사용자 그룹(또는 등급)을 나누어 분류하는 분석 기법.
구매 가능성이 높은 고객을 선정할 때 용이한 데이터 분석방법이라고 알려져 있고, 또 사용자들의 평소 구매 패턴을 기준으로 분류를 진행하기 때문에 각 사용자 그룹의 특성에 따라 차별화된 마케팅 메시지를 전달할 수 있다!
RFM 고객 세분화 분석이란 무엇일까요
CRM 타겟팅을 하는 방식 중 가장 범용적으로 사용할 수 있는 RFM 고객 세분화 분석에 대해 알아보겠습니다
datarian.io
2. 비계층적 군집분석
계층적 군집분석의 특징은 분류할 군집의 개수가 지정되지 않은 채 탐색적으로 군집을 나누어 보는 방법이다. 하지만 계층적 군집분석 방법은 비교적 작은 규모의 데이터에 적용할 수 있는 군집분석 방법으로, 빅데이터를 대상으로 적용하기에는 무리가 있다. 이에 대한 해결책으로 사용할 수 있는 것이 비계층적 군집분석 방식이다.
이는 사용자의 관점에서 계층적 군집분석 방법과 가장 큰 차이점이라고 볼 수 있는데, 우선 군집의 수를 미리 지정해야 한다. 따라서 군집형성의 과정을 일일이 모니터링할 필요가 없을 뿐더러, 주어진 군집 수에 의해 효율적인 군집형성이 빠르게 진행되기 때문에 대용량 데이터의 적용에도 용이하다.
- 순차적 군집화: 군집의 중심이 정해지고, 사전에 지정된 값의 거리 안에 있는 모든 개체들이 같은 군집으로 분류된 후 새로운 군집의 중심에 따라 순차적으로 군집화가 반복되는 과정. (일반적으로 k-평균 군집분석이 순차적인 군집화에 해당한다.)
- 동시 군집화: 사전에 지정된 일정 값 안에 해당하는 개체들을 소속시킴으로써 몇 개의 군집을 동시에 결정하는 군집분석 방법.
- 최적할당 군집화: 사전에 주어진 군집의 수를 형성하기 위해 군집 내의 평균거리를 계산하는 최적화 기준을 도출하고, 이에 따라 최초의 군집에서 다른 군집으로 다시 할당될 수 있는 방법이다.
(해당 교재에서는 순차적 군집화의 예시로 k-평균 군집분석을 다루었다!)
*K-평균 군집분석
비계층적 군집분석에서 가장 많이 활용되는 군집분석으로, 주어진 분류 대상 개체를 k개의 군집으로 형성해나간다. 각 군집과 개체 간의 거리 편차의 분산을 최소화하는 방향으로 군집 형성이 진행되며, 군집화 속도가 빠르다!
(초기 설정값(군집의 개수 = k)에 따라 결과가 상이하게 나타날 수 있는 단점이 있다. 그럼에도 많이 사용한다는 것 ㅎㅎ)
# 실전분석
앞서 다뤘던 군집분석의 실습에서 RFM 기반의 고객세분화를 k 평균 군집분석으로 수행한다.



# 결과 해석
K-평균 군집분석 결과 K의 수를 지정한 대로 총 3개의 군집으로 결과가 나타났다. 계층적 군집 분석과는 다르게 군집의 수를 미리 지정해주었기 때문에 3개의 군집에 대한 정보를 간단하게 확인할 수 있다. 군집의 규모에서는 군집1 > 군집3 > 군집2 순으로 나타났고, 군집 별 3가지 변수의 평균을 보았을 때 군집3이 우량고객 그룹임을 알 수 있다.
Monetary와 Frequency 변수의 평균값을 보았을 때 군집1과 군집2는 유사한 그룹이지만, Recency 값이 매우 큰 차이를 보이므로, 군집2는 최근 구매이력이 없는 잠재 이탈고객 그룹으로 보아야 한다.
'데이터 분석(DA) > 📊 통계분석' 카테고리의 다른 글
| 회귀분석 (1) | 2024.02.22 |
|---|---|
| 분산분석 (2) | 2024.02.03 |
| 신뢰성 분석 (0) | 2024.01.23 |
| 범주형 데이터의 분석 (0) | 2024.01.12 |
| 상관관계 분석 (0) | 2024.01.06 |
