안녕하세요! 제리입니다.
오늘은 클러스터링 알고리즘에 대해서 소개해볼까 합니다.
클러스터링이란?
흔히 군집화라고 하며 비지도 학습 (unsupervised learning)의 가장 일반적인 형태 중 하나라고 할 수 있습니다.
이것은 데이터 내에서 자연적인 그룹을 자동으로 발견을 하며 특히 아무것도 모르는 데이터를 탐색을 할 때 유용합니다.
그래서 흔히 데이터 분석할 때 많이 사용하여 군집별로 어떤 특성을 가지고 있는 지 파악해 아이디어를 도출합니다.
비지도 학습이란?
학습에는 지도학습, 비지도학습, 강화학습이 있습니다. (준지도학습도 있긴합니다.)
지도 학습 - 정답이 있는 데이터를 활용해 데이터 학습
비지도 학습 - 정답이 없는 데이터를 확룔해 비슷한 특징끼리 묶어 새로운 데이터 결과 예측 학습
강화학습 - 행동에 대한 보상을 받으며 학습 (이는 추후에 더 다루겠습니다.)
우선 지금 다룰 것은 비지도 학습이기에 비지도 학습을 좀 더 다뤄보면!
정답이 딱히 정해진 것은 아니기에 지도 학습보다 좀 더 예측이 어렵고 그렇기에 복잡한 처리 작업을 해야합니다.
대표적인 방법이 오늘 다뤄볼 클러스터링 (clustering)입니다!
예시로는 이상탐지(anomaly detection, 카드 사기 탐지 등), 고객 행동 분류 등 여러 가지가 있습니다.
그렇다면 어떤 종류가 있을까요?
클러스터링 알고리즘은 다양한 종류가 있습니다. 여러 가지 클러스터링 알고리즘과 다른 설정을 탐색하는 것이 좋습니다. 주어진 데이터에 가장 적합한 클러스터링 알고리즘을 찾는 데는 시간이 걸릴 수 있지만, 찾으면 데이터에 대한 귀중한 통찰력을 얻을 수 있습니다.
1. 중심기반 (Centroid-based)
이러한 알고리즘은 데이터 내의 여러 중심점을 기준으로 데이터 포인트를 분리합니다. 각 데이터 포인트는 중심점으로부터의 제곱 거리에 따라 클러스터에 할당됩니다.
이것은 가장 일반적으로 사용되는 클러스터링 유형입니다. K-Means 알고리즘은 중심 기반 클러스터링 알고리즘 중 하나입니다. 여기서 k는 클러스터의 개수이며 알고리즘의 하이퍼파라미터입니다.
위 그림은 K-means 알고리즘이 어떤 방식으로 진행이 되는지에 대해서 보여주는 그림입니다.
순서는 아래와 같습니다.
1. 클러스터의 개수 k개를 저희가 임의로 선정하고 랜덤하게 초기 중심점을 잡고 시작합니다.
(이때 랜덤하게 설정하기에 시간이 오래 걸릴 수 있고, 분포가 다르게 나타날 수 있습니다. => 그래서 등장한 것이 k-medians clustering입니다.)
2. 중심점과 각 데이터 점들과의 거리를 계산하여 어느 그룹의 중심에 가까운지 분류합니다.
(유클리드 거리 사용)
3. 각 그룹의 벡터 평균을 계산해 다시 군집의 중점을 계산합니다.
4. 1~3번을 계속 진행하여 변화가 크지 않을때까지 진행합니다.
장점 - 시간이 꽤나 빠릅니다.
단점 - k를 저희가 선정해야한다는 것, 랜덤 초기 중심점 (계속 바뀌는 결과)
2. 계층 기반 (연결성 기반) Hierarchical-based (Connectivity-based)
이 아이디어는 객체가 더 가까운 객체와 멀리 떨어진 객체보다 더 관련이 있는 핵심 아이디어에 기반합니다. 클러스터의 트리를 구축하여 모든 것을 위에서 아래로 구성합니다. 처음에는 각 데이터 포인트가 개별 클러스터로 간주됩니다. 각 반복에서 유사한 클러스터가 다른 클러스터와 병합됩니다. 최종적으로 하나의 클러스터 또는 K개의 클러스터가 형성됩니다.
이 방법은 각 포인트를 별도의 클러스터로 간주하는 것으로 시작하여 거리에 따라 계층적 방식으로 포인트를 클러스터에 결합하기 시작합니다. 계층적 클러스터링을 위한 최적의 클러스터 수를 구하기 위해 클러스터의 병합 또는 분할 순서를 보여주는 트리형 차트인 덴드로그램을 사용합니다.
사실 별로 사용하지 않은 것이긴 합니다,,,,ㅎ
3. 밀도 기반 (Density-based)
데이터는 데이터 포인트가 높은 농도의 영역으로 그룹화되며 낮은 농도의 데이터 포인트로 둘러싸인 영역입니다. 기본적으로 알고리즘은 데이터 포인트가 밀도가 높은 위치를 찾아 해당 위치를 클러스터로 지정합니다.
클러스터는 어떤 모양이든 될 수 있습니다. 예상된 조건에 제한되지 않습니다.
이 유형의 클러스터링 알고리즘은 이상치를 클러스터에 할당하려고 하지 않으므로 무시됩니다.
주로 DBSCAN을 많이 사용합니다.
불규칙한 형태의 클러스터를 찾을 수 있습니다. 저밀도 영역별로 영역을 분리하기 때문에 이상값을 매우 잘 감지할 수 있습니다. 이 알고리즘은 이상한 모양의 데이터로 작업할 때 K-평균보다 낫습니다.
장점 - 불규칙한 모양 클러스터링 좋음, 이상값 처리에 용이, k 지정할 필요 없음
단점 - 범주형 피처는 힘듦, 변수의 규모에 따라 조정 필요, 고차원 데이터 어려
4. 분포 기반 (Distribution-based)
이것은 데이터가 동일한 분포에 속할 가능성에 따라 데이터를 적합시키는 클러스터링 모델입니다.
분포 기반 군집화에서는 중심점을 설정합니다. 데이터 포인트와 중심점 간의 거리가 멀어질수록 해당 군집에 속할 확률이 감소합니다. 이 모델은 가짜 데이터와 크기가 다양한 군집에 대해 잘 작동합니다.
하지만 모델 복잡도에 제약이 없으면 과적합 문제가 발생할 수 있습니다. 더 복잡한 모델은 데이터를 더 잘 설명할 수 있어서 적절한 모델 복잡도를 선택하는 것이 어렵게 만듭니다.
Gaussian Mixture Models (GMM) 을 주로 사용하여 특정 분포가 있을 때 자주 사용합니다.
장점 - 다양한 크기의 클러스터 수용, 각 클러스터에 속할 확률적 추정, 규모에 덜 민감
단점 - 범주형 특징 힘듦, 정규 분포 가정, k 지정 필요, 느림
위 그림과 같이 데이터 셋들이 어떤 특정한 모양을 보이는데
이를 어떻게 하면 잘 구분하고 표현할 수 있을지에 대해서 고민을 많이 한것이 바로 군집화 방법입니다.
이를 어떻게 코드로 할 수 있는 지는 다음 편에 마저 작성하겠습니다!
감사합니다.
참고 :
https://towardsdatascience.com/the-5-clustering-algorithms-data-scientists-need-to-know-a36d136ef68
https://www.kaggle.com/datasets/joonasyoon/clustering-exercises
'머신러닝' 카테고리의 다른 글
시계열 공부 (1) - 시계열회귀분석 (0) | 2023.06.27 |
---|---|
Statsmodels 이용한 시계열 분석에 대해 (0) | 2023.05.04 |
pandas를 이용한 시계열 데이터 처리에 대해 (0) | 2023.05.03 |
Pandas에 대해 (Series, DataFrame) (0) | 2023.04.30 |
Numpy에 대해 (0) | 2023.04.30 |