본문 바로가기
Archive/데이터 분석 관련

[Data] Data Clustering 정리

by 다람이도토리 2021. 9. 30.

데이터 클러스티링이란?

비지도학습의 일종으로, 학습 데이터가 주어지지 않은 상태에서 유의미한 결과를 찾아내야 한다.

여기서 Clustering에서 하고 싶은 것은 주어진 데이터를 적당한 군집으로 나눠주고자 하는 것이다.

여러가지 방법이 있지만 크게 다음 두가지에 대해 정리하고자 한다.

(1) K-means (K-means ++)
(2) DBSCAN

K-means

K-means는 kNN과 유사한 방법을 사용한다. 구체적으로는 평균을 계속 적용하여 중심점을 지속적으로 조절하는 방법을 사용한다. 이를 통해 각 클러스터 내에서 분산을 최소화 해서 군집화 하는 방식이다.

K-means의 작동 원리

(1) K값을 정해 몇 개의 클러스터로 나눌지 결정한다. (K값은 중심점의 개수가 된다)
(2) 최초의 중심점은 랜덤한 K개의 점으로 결정된다.
(3) 감 점별로 중심점으로부터 거리를 구해, 가장 가까운 중심점으로 cluster들을 할당한다.
(4) 각 cluster별로 중심점을 다시 계산한다.
(5)  (3), (4)를 반복한다.

개선점 : K-means++

(2)를 보면 최초 중심점이 무작위라는 부분이 있는데, 이의 단점을 해결하는 방법이 K-means++이다. 최초 K개의 점의 선택법을 다음과 같이 개선하였다.

(1) 가지고 있는 데이터 포인터들 중 1개의 점은 무작위로 골라, 최초의 중심점으로 한다.
(2) 나머지 데이터 포인터들과 1개의 점의 거리를 계산한다.
(3) 두번째 중심점이 선택을 랜덤이 아닌, (2)에서 계산한 거리에 비례한 확률로 1개를 고른다.
(4) 이를 K개의 점을 고를때까지 반복한다.  즉, 거리가 먼 점을 우선적으로 선택할 수 있게 되었다.

이후의 (3)부터 K-means와 동일한 과정을 거친다.

문제점 : 분류하기 어려운 문제

K-means만으로 완벽하게 clustering 하기 어려운 상황 또한 존재한다.

DBSCAN

DBSCAN은 K-means에서 해결하지 못했던 특이한 형태의 모양의 분포를 가진 데이터를 군집화 하는데 사용할 수 있다. DBSCAN의 경우는 밀도 기반 방법을 사용한다.

점별로 반경 내에 일정 개수의 점이 있는지를 확인하는 방식을 사용하여, 경계를 넓혀나가는 방식으로 모델을 적용한다.

core point : 해당 점에서 주어진 거리 내에 사전에 정해둔 이상의 개수의 점이 있으면 해당 점을 core로 본다. 
border pont : 자체로는 corepoint가 아니라, 다른 corepoint의 군집에 해당되며 cluster를 연결해주는 역할을 하게 된다.
noise point : 어떤 군집에도 포함되지 않는 점들

즉 dbscan에서는 거리와, 점의 개수에 대해서 parameter를 주는 방식을 사용한다.

이 방법을 사용하면 위의 반달 문제를 의도한 방향대로 clustering 할 수 있다.

실습코드

https://github.com/SeongwonTak/TIL_swtak/blob/master/DataScience/210929_Clustering_Review.ipynb

 

GitHub - SeongwonTak/TIL_swtak: Today, I learned.

Today, I learned. Contribute to SeongwonTak/TIL_swtak development by creating an account on GitHub.

github.com