1. K-means 클러스터링
개요
K-means 클러스터링은 주어진 데이터를 k개의 클러스터로 나누는 알고리즘입니다. 각 클러스터는 중심점을 가지며, 데이터 포인트는 가장 가까운 중심점에 할당됩니다.
장점
- 단순성: 구현이 쉽고 이해하기 쉽습니다.
- 효율성: 대규모 데이터셋에도 적용할 수 있으며, 계산 속도가 빠릅니다.
단점
- 클러스터의 수를 사전에 지정해야 함: 클러스터의 수를 미리 알아야 합니다.
- 구형 클러스터에 적합: 클러스터가 구형인 경우에 잘 작동합니다.
- 잡음과 이상치에 민감: 이상치(outliers)에 민감하게 반응합니다.
사용처
- 고객 세분화
- 이미지 분할
- 문서 분류
2. DBSCAN (Density-Based Spatial Clustering of Applications with Noise)
개요
DBSCAN은 밀도 기반 클러스터링 알고리즘으로, 밀도가 높은 지역을 클러스터로 정의하고, 밀도가 낮은 지역을 노이즈로 간주합니다.
장점
- 비정형 클러스터를 잘 처리함: 비구형 클러스터를 잘 발견합니다.
- 클러스터 수를 사전에 지정할 필요 없음: 클러스터의 수를 미리 알 필요가 없습니다.
- 잡음 처리: 노이즈와 이상치를 잘 처리합니다.
단점
- 밀도 파라미터 설정이 어려움: 밀도를 정의하는 파라미터(eps, min_samples) 설정이 어렵습니다.
- 비슷한 밀도를 가진 클러스터만 발견 가능: 밀도가 크게 다른 클러스터를 발견하기 어렵습니다.
사용처
- 지리적 데이터 분석
- 이상 탐지
- 공간 데이터 클러스터링
3. 계층적 클러스터링 (Hierarchical Clustering)
개요
계층적 클러스터링은 데이터 포인트를 계층적으로 그룹화하여 덴드로그램(dendrogram)을 생성하는 알고리즘입니다. 데이터 포인트를 병합(agglomerative)하거나 분할(divisive)하는 방식으로 클러스터링을 수행합니다.
장점
- 덴드로그램 제공: 데이터의 계층적 구조를 시각적으로 분석할 수 있습니다.
- 클러스터 수를 사전에 지정할 필요 없음: 클러스터의 수를 미리 지정할 필요가 없습니다.
단점
- 계산 복잡도: 대규모 데이터셋에는 비효율적입니다.
- 구형 클러스터에 적합: 구형 클러스터에서 더 잘 작동합니다.
사용처
- 유전자 데이터 분석
- 문서 분류
- 시장 세분화
4. Mean Shift
개요
Mean Shift는 데이터의 밀도가 높은 지역(모드)을 찾는 방식으로 클러스터를 형성하는 알고리즘입니다.
장점
- 비정형 클러스터를 잘 처리함: 비구형 클러스터를 잘 발견합니다.
- 클러스터 수를 사전에 지정할 필요 없음: 클러스터의 수를 미리 알 필요가 없습니다.
단점
- 계산 복잡도: 계산 비용이 많이 들 수 있습니다.
- 밀도 파라미터 설정이 어려움: 밴드폭 파라미터 설정이 어렵습니다.
사용처
- 이미지 분할
- 객체 추적
- 밀도 기반 데이터 분석
5. Gaussian Mixture Model (GMM)
개요
GMM은 데이터가 여러 개의 가우시안 분포로 구성된다고 가정하여 클러스터를 형성하는 알고리즘입니다.
장점
- 유연성: 타원형 클러스터를 잘 처리할 수 있습니다.
- 확률적 모델링: 클러스터 내 데이터의 확률 분포를 제공하여 더욱 정교한 분석이 가능합니다.
단점
- 클러스터 수를 사전에 지정해야 함: 클러스터의 수를 미리 알아야 합니다.
- 잡음과 이상치에 민감: 이상치에 민감하게 반응합니다.
사용처
- 신호 처리
- 이미지 분할
- 패턴 인식
6. Spectral Clustering
개요
Spectral Clustering은 데이터의 유사도 행렬을 기반으로 그래프 분할 기법을 사용하여 클러스터를 형성하는 알고리즘입니다.
장점
- 복잡한 구조를 잘 처리함: 복잡한 클러스터 구조를 잘 발견합니다.
- 비선형 관계를 잘 처리함: 비선형 데이터 구조를 잘 처리합니다.
단점
- 계산 복잡도: 대규모 데이터셋에는 비효율적입니다.
- 유사도 행렬 구성 필요: 유사도 행렬을 구성해야 하므로 메모리 사용이 많습니다.
사용처
- 이미지 분할
- 소셜 네트워크 분석
- 문서 클러스터링
새로운 프로젝트를 준비하기 앞서 클러스터링에 관해 알아보았다.
K-means알고리즘이 역시나 가장 무난했다.
다른 알고리즘들은 장단점이 확실한 경우가 많았다. 정말 기가맥힌 장점을 가졌지만 쉽지않은 단점을 가진 알고리즘들이 있었다. 자원소모가 크다는 문제를 안고있었다. 클러스터를 지정해줘야 한다는것은 원하는 결과가 나올때 까지 돌려봐야 한다는뜻일것이고, GPT가 대규모 데이터셋에 비효율적이고 계산 비용이 많다는건 tensorflow 실험해볼 때 느꼈기에 맞는말일 것 같다.
그래서 일부러 사용처와 함께 같이 물어봤다. 장단점이 분명할수록 쓰이는 섹터는 한정적일것이며, 그 섹터에서만큼은 최고효율을 낼 것이기 때문이다. 가우시안이 그럴 것 같은데 신호처리와 패턴인식이라는 개념이 관련 데이터셋을 본적이 없어서 때문인지 와닿지 않는다. 다만 확률 분포까지, 세부적인 지표들을 계산해주기때문에 신호처리 섹터에 자주 쓰이지 않을까 싶다.
새롭게 알게된 부분은 클러스터링이 단순 수치형 데이터 뿐만 아니라 딥러닝과 더불어 이미지, 자연어처리에도 쓰인다는 것이었다.
아마 딥러닝의 발전 이전에 개와 고양이를 구분하지 못하는 까닭이 이목구비를 군집으로 나누어 비교를 했기 때문이 아닐까 하는 생각이 든다.
이번 프로젝트를 진행할 때 클러스터링을 한다면 Spectral Clustering, 계층적 클러스터링, K-means 정도를 우선적으로 사용해 볼 것 같다.
'python > MLDL' 카테고리의 다른 글
Cross Entropy, Categorical Cross Entropy, Sparse Categorical Cross Entropy (0) | 2024.06.05 |
---|---|
Spooky Author Identification (클러스터링, PCA) (0) | 2024.06.04 |
GPT에게 자연어처리 배우기(문자열 전처리) (0) | 2024.05.24 |
GPT에게 자연어처리 배우기(모델 구현) (0) | 2024.05.24 |
캐글 playground spaceship titanic (0) | 2024.05.13 |