군집화(Clustering)
[군집]
군집은 비슷한 샘플을 클러스터 또는 비슷한 샘플의 그룹으로 할당하는 작업으로, 데이터 분석, 고객 분류, 추천 시스템, 검색 엔진, 이미지 분할, 준지도 학습, 차원 축소 등에 사용할 수 있는 도구로서 비지도 학습 방법 중 하나이다.
분류와 마찬가지로 각 샘플은 하나의 그룹에 할당되나, 분류와 달리 군집은 비지도 학습이다.
[군집이 사용되는 분야]
◆ 이상치 탐지
'정상' 데이터(정상치)가 어떻게 보이는지를 학습한 뒤, 비정상 샘플(이상치)을 감지하는 데 사용한다. 이상치 탐지는 사기 탐지, 제조 과정에서 결함이 있는 제품 탐지, 시계열의 새로운 트렌드 파악, 다른 모델을 학습시키기 전에 데이터셋에서 이상치를 제거하여 결과 모델의 성능을 크게 개선하는 등 다양한 애플리케이션에서 유용하다.
◆ 밀도 추정
데이터셋 생성 확률 과정(random process)의 확률 밀도 함수(PDF)를 추정한다. 밀도 추정은 이상치 탐지에 널리 사용되며, 밀도가 매우 낮은 영역에 놓인 샘플이 이상치일 가능성이 높다. 또한 데이터 분석과 시각화에도 유용하다.
◆ 고객 분류
고객을 구매 이력이나 웹 사이트 내 행동 등을 기반으로 분류할 수 있으며, 이는 고객이 누구인지, 고객이 무엇을 원하는지 이해하는 데 도움이 된다. 고객 그룹마다 제품 추천이나 마케팅 전략을 다르게 적용할 수 있다.
◆ 데이터 분석
새로운 데이터셋을 분석할 때 군집 알고리즘을 실행하고 각 클러스터를 따로 분석하면 도움이 된다.
◆ 차원 축소 기법
한 데이터셋에 군집 알고리즘을 적용하면 각 클러스터에 대한 샘플의 친화성을 측정할 수 있다.
※ 친화성(affinity): 샘플이 클러스터에 얼마나 잘 맞는지 측정
◆ 특성 공학
클러스터 친화성은 종종 추가적인 특성으로 사용된다.
◆ 준지도 학습
레이블된 샘플이 적다면 군집을 수행하고 동일한 클러스터에 있는 모든 샘플에 레이블을 전파할 수 있다. 이 기법은 지도 학습 알고리즘에 필요한 레이블을 크게 증가시켜 성능이 매우 향상된다.
◆ 검색 엔진
이미지 검색 엔진 시스템을 구축하려면 먼저 데이터베이스에 있는 모든 이미지에 군집 알고리즘을 적용해야 한다. 사용자가 찾으려는 이미지를 제공하면 훈련된 군집 모델을 사용해 이미지의 클러스터를 찾고, 이 클러스터의 모든 이미지를 반환한다.
◆ 이미지 분할
색을 기반으로 픽셀을 클러스터로 모으고, 각 픽셀의 색을 해당 클러스터의 평균 색으로 바꾼다. 이는 이미지에 있는 색상의 종류를 크게 줄이며, 이렇게 하면 물체의 윤곽을 감지하기 쉬워지므로 물체 탐지 및 추적 시스템에서 이미지 분할을 많이 활용한다.
군집 알고리즘 - K 평균(K mean)
K-평균의 경우 거리 기반으로 군집 중심점을 이동시키면서 군집화를 수행한다. 매우 쉽고 직관적인 알고리즘으로 많은 군집화 애플리케이션에서 애용되나, 복잡한 구조를 가지는 데이터 세트에 적용하기에는 한계가 있으며, 군집의 개수를 최적화하기가 어렵다. K-평균은 군집이 잘 되었는지의 평가를 위해 실루엣 계수를 이용한다.
군집 알고리즘 - DBSCAN
DBSCAN(Density Base Spatial Clustering of Applications with Noise)은 밀도 기반 군집화의 대표적인 알고리즘이다. DBSCAN은 입실론 주벼ㄴ 영역 내에 포함되는 최소 데이터 개수의 충족 여부에 따라 데이터 포인트를 핵심 포인트, 이웃 포인트, 경계 포인트, 잡음 포인트로 구분하고 특정 핵심 포인트에서 직접 접근이 가능한 다른 핵심 포인트를 서로 연결하면서 군집화르 구성하는 방식이다. DBSCAN은 간단하고 직관적인 알고리즘으로 돼 있음에도 데이터의 분포가 기하학적으로 복잡한 데이터 세트에도 효과적인 군집화가 가능하다.
군집 알고리즘 - 평균 이동(Mean Shift)
평균 이동은 K-평균과 유사하지만 거리 중심이 아니라 데이터가 모여 있는 밀도가 가장 높은 쪽으로 군집 중심점을 이동하면서 군집화를 수행한다. 일반 업무 기반의 정형 데이터 세트보다는 컴퓨터 비전 영역에서 이미지나 영상 데이터에서 특정 개체를 구분하거나 움직임을 추적하는 데 뛰어난 역할을 수행하는 알고리즘이다.
평균 이동은 DBSCAN과 유사한 특징이 있다. 모양이나 개수에 상관없이 클러스터를 찾을 수 있으며, 하이퍼파라미터도 매우 적으며 국부적인 밀집도 추정에 의존한다. 그러나 DBSCAN과 달리 평균-이동은 클러스터 내부 밀집도가 불균형할 때 클러스터를 여러 개로 나누는 경향이 있고, 계산 복잡도는 O(m^2)라 대규모 데이터셋에는 적합하지 않다.
군집 알고리즘 - GMM(Gausian Mixture Model, 가우시안 혼합 모델)
GMM 군집화는 군집화를 적용하고자 하는 데이터가 여러 개의 가우시안 분포를 모델을 섞어서 생성된 모델로 가정해 수행하는 방식이다. 전체 데이터 세트에서 서로 다른 정규 분포 형태를 추출해 이렇게 다른 정규 분포를 가진 데이터 세트를 각각 군집화하는 것이다. GMM의 경우는 K-평균보다 유연하게 다양한 데이터 세트에 잘 적용될 수 있다는 장점과 군집화를 위한 수행 시간이 오래 걸린다는 단점이 있다.
이상치 탐지와 특이치 탐지를 위한 알고리즘
사이킷런에는 이상치 탐지와 특이치 탐지 전용으로 사용할 수 있는 몇 가지 알고리즘이 구현되어 있다.
1) Fast-MCD
EliipticEnvelope 클래스에서 구현된 Fast-MCD 알고리즘은 이상치 탐지에 유용하다. 특히 데이터셋을 정재할 때 사용되는데, 보통 샘플이 하나의 가우스 분포에서 생성되었다고 가정한다. 또한 이 가우스 분포에서 생성되지 않은 이상치로 이 데이터셋이 오염되었다고 가정한다.
알고리즘이 가우스 분포의 파리미터를 추정할 때 이상치로 의심되는 샘플을 무시한다. 이런 기법은 알고리즘이 타원형을 잘 추정하고 이상치를 잘 구분하도록 돕는다.
2) 아이솔레이션 포레스트
고차원 데이터셋에서 이상치 탐지에 효율적인 알고리즘이다. 이 알고리즘은 랜덤으로 성장한 결정 트리로 구성된 랜덤 포레스트를 만들고, 각 노드에서 특성을 랜덤하게 선택한 다음 (최솟값-최댓값 사이) 랜덤한 임곗값을 골라 데이터셋을 둘로 나눈다.
이런 식으로 데이터셋은 점차 분리되어 모든 샘플이 다른 샘플과 격리될 때까지 진행된다. 이상치는 일반적으로 다른 샘플과 멀리 떨어져 있으므로 평균적으로 정상 샘플과 적은 단계에서 격리된다.
3) LOF(local outlier factor)
주어진 샘플 주위에 밀도와 이웃 주위의 밀도를 비교하며, 이상치는 종종 k개의 최근접 이웃보다 더 격리된다.
4) one-calss SVM
이 알고리즘은 특이치 탐지에 잘 맞는다. 먼저 모든 샘플을 고차원 공간에 매핑한 다음 이 고차원 공간에서 선형 SVM 분류기를 사용해 두 클래스를 분리한다. 여기서는 샘플의 클래스가 하나이기 때문에 대신 one-class SVM 알고리즘이 원본 공간으로부터 고차원 공간에 있는 샘플을 분리한다. 이 알고리즘은 특히 고차원 데이터셋에 잘 작동하나, 모든 SVM과 마찬가지로 대규모 데이터셋으로의 확장은 어렵다.
5) PCA
그외의 군집 알고리즘
1) 병합 군집(agglomerative clustering)
병합 군집은 반복마다 인접한 클러스터 쌍을 연결하고, 병합된 클러스터 쌍을 트리로 그리면 클러스터의 이진 트리를 얻을 수 있다. 병합 군집은 다양한 형태의 클러스터를 감지할 수 있고, 클러스터 개수를 선택하는 데 도움이 되는 유용한 클러스터 트리를 만들 수 있다. 그러나 연결 행렬이 없으면 대규모 데이터셋으로 확장하기 어렵다.
2) BIRCH (Balanced iterative reducing and clustering using hierarchies)
BIRCH 알고리즘은 특별히 대규모 데이터셋을 위해 고안되었다. 특성 개수가 너무 많지 않다면 (20개 이하) 배치 k-평균보다 빠르고 비슷한 결과를 만든다. 훈련 과정에서 새로운 샘플을 클러스터에 빠르게 할당할 수 있는 정보를 담은 트리 구조를 만든다. 이 트리에 모든 샘플을 저장하지 않는다.
이 방식은 제한된 메모리를 사용하므로 대용량 데이터셋을 다룰 수 있다.
3) 유사도 전파
이 알고리즘에서 모든 샘플은 자신을 대표할 다른 샘플(또는 자신)을 선택할 때까지 샘플 간에 메시지를 반복적으로 교환하며, 이렇게 선출된 샘플을 예시(exemplar) 라고 한다. 각 예시와 이를 선출한 모든 샘플은 하나의 클러스터를 형성한다.
선호도 전파는 k-평균과 유사하게 클러스터의 중심 근처에 위치한 예시를 선택하는 경향이 있으나, k-평균과 달리 미리 클러스터의 수를 정할 필요가 없으며 훈련 중에 결정된다.
또한 선호도 전파는 다양한 크기의 클러스터를 잘 처리할 수 있으나, 이 알고리즘은 대규모 데이터 세트에는 적합하지 않다.
4) 스펙트럼 군집
이 알고리즘은 샘플 사이의 유사도 행렬을 받아 저차원 임베딩을 만든다. (행렬의 차원 축소) 그다음 이 저차원 공간에서 또 다른 군집 알고리즘을 사용한다.
이 군집은 복잡한 클러스터 구조를 감지하고 그래프 컷(graph cut)을 찾는 데 사용될 수 있으나, 샘플 개수가 많으면 잘 적용되지 않고 클러스터의 크기가 매우 다르면 잘 작동하지 않는다.
군집화 실습
군집 평가
비지도학습의 특성상 어떠한 지표라도 정확하게 성능을 평가하기는 어려우나, 군집화의 성능 평가에는 실루엣 분석을 대표적으로 사용한다.
다음 내용
[출처]
사이킷런 공식 홈페이지
파이썬 머신러닝 완벽 가이드
핸즈온 머신러닝
'[파이썬 Projects] > <파이썬 머신러닝>' 카테고리의 다른 글
[머신러닝] 군집화: 군집 평가 (3) | 2024.10.25 |
---|---|
[머신러닝] 군집화: k-평균 (0) | 2024.10.25 |
[머신러닝] 차원 축소 - SVD (0) | 2024.10.24 |
[머신러닝] 차원 축소 - NMF (1) | 2024.10.24 |
[머신러닝] 차원 축소 - LDA (0) | 2024.10.24 |