군집분석
군집분석 Clustering
• 비슷한 사례들을 '군집'으로 묶음
예: 비슷한 성향의 고객들을 묶어 군집별로 프로모션/상품 추천 등
• K-means, 위계적 군집분석, 가우시안 혼합 모형 등의 방법
군집분석의 필요성
보통 고객을 성별, 연령 등 인구학적 변수에 따라 그룹화하는 것이 흔함.
그러나, 고객들은 그렇게 단순하게 나눠지지 않으며, 정확성도 떨어짐
∴ 데이터에 기반해서 고객들을 그룹화할 필요가 있음 → '군집 분석' 필요
분류분석과 군집분석의 차이
로지스틱 회귀분석과 같은 분류분석에서는 각 사례의 범주가 관찰변수
군집분석에서는 각 사례의 범주가 직접 관찰되지 않은 잠재변수
K-Means
가장 널리 사용되는 클러스터링 방법
> 군집의 평균(중심점)을 구해서, 사례를 중심점이 가장 가까운 군집에 포함시킴
Python에서의 K-Means
> 데이터 불러오기
# iris 데이터 불러오기
import pandas as pd
iris = pd.read_excel('iris.xlsx')
x = iris.iloc[:, 0:4]
x
> 데이터 학습 & 예측하기
from sklearn.cluster import KMeans
# 훈련
km = KMeans(n_clusters=군집개수)
km.fit( )
# 예측
cluster = km.predict( )
cluster
# 학습
from sklearn.cluster import KMeans
km = KMeans(n_clusters=3)
km.fit(x)
# 예측
cluster = km.predict(x)
cluster
# Cluster
import seaborn
seaborn.scatterplot(x=pc[:,0], y=pc[:,1], hue=cluster,
palette=['#ff7f0e', '#1f77b4', '#2ca02c'])
> Clustering이 잘 된것인지 확인해보기 위해 이전에 PCA 해본 것과 비교해보면,
# PCA분석
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
pca.fit(x)
pc = pca.transform(x)
import seaborn
seaborn.scatterplot(x=pc[:,0], y=pc[:,1], hue=iris.species)
PCA scatterplot | Cluster(K-Means) scatterplot |
🛠 정답이 없는 경우에는 Clustering이 잘 된지 어떻게 알 수 있을까?
> 이럴때는 Clustering 기반으로 실행한 광고나 프로모션이 얼마나 잘 되었는지를 통해서 확인해볼 수 있음.
K-Means 장/단점
장 점 👍🏻 | 단 점 👎🏻 |
• k만 정해주면 돼서 간단함. • 거리를 정할 수 있고, 중심점 주변에 사례들이 몰려있는 경우에 사용 • 소수의 사례만 무작위로 뽑아 클러스터링도 가능 (미니배치 k-Means) |
• 초기값에 따라 결과가 달라질 수 있음 • 연속변수에만 적용가능 • 볼록하지 않은 모양의 군집에는 성능이 떨어짐 • 군집 수 결정이 어려움 • 이상값에 크게 영향 받음 |
'기초통계' 카테고리의 다른 글
[텍스트 분석] 희소행렬 (0) | 2022.10.11 |
---|---|
[텍스트 분석] 자연어 : 문서 단어 행렬 (0) | 2022.10.04 |
[기초통계] 차원 축소와 군집 분석 (0) | 2022.09.15 |
상호작용과 인과 : 횡단 비교와 종단 비교 (0) | 2022.09.13 |
상호작용과 인과 : 인과효과 (0) | 2022.09.13 |