지금까지는 입력특성과 레이블이 같이 주어지는 지도학습에 대해서 알아보았습니다.
이번 글에서는 비지도학습의 대표적 알고리즘인 K-means와 DBSCAN에 대해서 알아보도록 하겠습니다.
먼저 K-means 알고리즘에 대해서 알아보도록 하겠습니다.
K-means는 centroid라는 클러스터의 중심점을 이용하여 군집화합니다.
과정은 아주 간단합니다.
1. k개 만큼의 centroid를 정의하고, 각 데이터셋은 가장 가까운 centroid에 해당하는 레이블을 가지게 됩니다.
2. centroid를 각 레이블을 가진 데이터셋의 중심으로 정의합니다.
위 과정을 더 이상 centroid가 변경되지 않을때까지 반복합니다.
처음 centroid를 정의하는 데에는 크게 세가지 방법이 존재합니다.
1. 랜덤하게 정의합니다.
2. 사용자가 직접 정의합니다.
3. K-means++ 방법을 이용합니다.
여기서 K-means++는 centroid를 정의하는 훌륭한 아이디어로 가장 많이 쓰이는 방법입니다.
첫번째 데이터샘플을 첫번째 centroid로 정의합니다. 두번째 centroid는 첫번째 centroid와 가장 멀리 떨어진 데이터샘플로 정의하게 되고, 세번째 centroid는 첫번째와 두번째 centroid와 가장 멀리 떨어진 데이터샘플로 정의하는 식으로 k번째까지 반복하게 됩니다.
그렇다면 cluster의 개수를 나타내는 k는 어떻게 정하는 것이 좋을까요?
k-means알고리즘을 평가하는 방법으로, 각 데이터샘플에 해당하는 centroid와의 평균제곱거리인 이너셔가 있을 수 있겠지만 과대적합이 된 경우가 있을 수 있기 때문에 그닥 좋은 방법은 아닙니다.
그렇게 새로 나온 평가방법인 실루엣 점수가 있습니다.
실루엣 점수는 모든 샘플의 실루엣 계수의 평균입니다.
위의 식은 데이터샘플 o에 대한 실루엣 계수입니다.
a(o)는 클러스터 내부의 평균 거리이고, b(o)는 자신이 속한 클러스터를 제외하고 가장 가까운 클러스터의 샘플까지의 평균거리입니다.
그리고 실루엣 다이어그램이라는 평가 그래프로 k를 결정할 수 있습니다.
각 그래프는 서로 다른 k에 대해 그려진 실루엣 다이어그램입니다.
세로로 그어진 빨간 파선은 전체 실루엣 점수이고, 각 그래프의 높이는 클러스터에 해당하는 데이터샘플의 개수입니다.
각 그래프의 높이가 서로 비슷하고, 각 클러스터의 실루엣 점수가 전체 실루엣 점수보다 높은 그래프가 좋은 그래프입니다.
위의 경우에는 오른쪽 위의 그래프가 제일 좋아보이네요.
하지만 학습시간도 아주 빠르고 좋은 성능을 보여주는 k-means에도 치명적인 단점이 있습니다.
같은 클러스터에 해당하는 데이터샘플의 분포가 원형이여야 한다는 점입니다.
데이터샘플의 분포가 원형이 아닐때 사용할 수 있는 알고리즘인 DBSCAN이 존재합니다.
하지만 이 알고리즘에서는 같은 클러스터에 해당하는 데이터샘플이 서로 밀집되어 있어야 합니다.
DBSCAN은 한 데이터샘플에서 epsilon 거리 안에 위치하는 데이터샘플의 개수가 min_samples개 이상 있다면 핵심샘플로 간주하게 되고, 같은 클러스터로 판단하게 됩니다. 그리고 한 데이터샘플에서 epsilon 거리 안에 존재하는 데이터샘플을 서로 이웃이라고 부릅니다. 이 알고리즘에서는 epsilon과 min_samples 의 하이퍼 파라미터만이 존재합니다.
모든 데이터샘플에 대해서 위의 과정을 진행하게 되면 군집화가 끝이 납니다.
핵심 샘플이 아니고, 이웃도 아닌 샘플은 이상치 데이터로 판단하게 됩니다.
DBSCAN은 형태에 상관없이 군집화를 할 수 있다는 아주 큰 장점이 있습니다.
하지만 같은 클러스터에 해당하는 데이터샘플이 서로 많이 밀집되어 있어야 한다는 단점도 있습니다.
'인공지능 > 이론' 카테고리의 다른 글
(17) 심층 신경망 (0) | 2021.10.26 |
---|---|
(16) 인공 신경망 (0) | 2021.10.24 |
(14) 차원 축소 PCA (0) | 2021.10.22 |
(13) 앙상블 (0) | 2021.10.14 |
(12) 결정 트리 (0) | 2021.10.12 |