클러스터링 실습 (1) (EDA,Sklearn)

Assignment3. #3 Clustering 해보기 : Mall_Customer.csv

  1. Preprocessing EDA

  2. Clustering ( 수업시간에 배운 세 가지 방법 + α )

  3. Evaluation

우수과제 선정이유

과제 중간중간 개념 정리가 잘 되어있고, 클러스터링 방법에 따라 핵심적인 부분을 잘 수행해주셨습니다. 특히 마지막에 실루엣 스코어에 대한 해석이 인상깊어 우수과제로 선정되었습니다.

1. Preprocessing, EDA

Gender

Age

Annual Income (k$)

Spending Score (1-100)

count

200.000000

200.000000

200.000000

200.000000

mean

0.560000

38.850000

60.560000

50.200000

std

0.497633

13.969007

26.264721

25.823522

min

0.000000

18.000000

15.000000

1.000000

25%

0.000000

28.750000

41.500000

34.750000

50%

1.000000

36.000000

61.500000

50.000000

75%

1.000000

49.000000

78.000000

73.000000

max

1.000000

70.000000

137.000000

99.000000

2. Clustering

ML은 크게 supervised learning, unsupervised learning, reinforcement learning으로 나뉘는데, clustering은 target이 존재하지 않는 unsupervised learning에 속한다.

clustering에 대한 전체적인 구분은 아래와 같다.

  • clustering

  1. hierarchical clustering (중첩 허용) 거리측정 방식(L1 norm, L2 norm, mahalanobis, corr distance 등) + 군집과 군집 사이 거리(single, complete, average, centroid, ward)

    • bottom up ex) AgglomerativeClustering -> proximity matrix에서 점점 군집의 크기를 키워나감

    • top down

  2. partitional clustering (중첩 비허용)

    • 거리 기반 ex) KMeans (결정해야 하는 것 : K + 초기 centroid의 위치)

    • 밀도 기반 ex) DBSCAN (결정해야 하는 것 : eps + minpts)

1) Hierarchical Clustering

중복을 허용하여 clustering 하는 방법 (=군집 내에 군집이 속할 수 있음) 일정 높이에서 dendrogram을 잘라서 군집의 수 결정한다.

  1. 거리를 측정하는 방법

    • L1 norm (manhattan distance)

    • L2 norm (euclidean distance)

    • mahalanobis (feature간의 공분산 행렬을 고려한 거리)

    • corr distance (상관계수 높을수록 거리 짧게)

  2. cluster 간의 거리를 측정하는 방법

    • single linkage (군집 간 element끼리의 거리 중 min을 군집 간 거리로 설정)

    • complete linkage (군집 간 element끼리의 거리 중 max를 군집 간 거리로 설정)

    • average linkage (군집 간 element끼리의 모든 거리를 average)

    • centroid (군집의 centroid끼리의 거리)

    • ward (두 군집 간 제곱합 - (군집 내 제곱합의 합))

2) KMeans

공식 문서
K-means++ 설명

kmeans는 비계층적 군집화 방법 중 distance 기반 알고리즘에 속한다. kmenas는 k개의 init centroid를 설정해놓고, 각각의 데이터를 가까운 centroid cluster로 할당한 후, 그리고 cluster 내 centorid를 update하고, 다시 각각의 데이터를 가까운 centroid cluster로 할당하는 과정을 반복한다. 이 과정을 centorid가 변하지 않을 때 까지 반복 수행된다. (=즉 각 centroid cluster에 할당된 데이터가 더이상 변하지 않을 때 까지) (혹은 iteration 횟수를 지정해두기도 한다.)

kmeans에서 중요한 변수는 군집의 개수인 Kinit centroid이다. init centroid가 어디인지에 따라 최종 수렴된 clustering 결과가 달라질 수 있기 떄문에 일부 데이터를 sampling해 hierarchical clusteirng을 수행한 후, 이에 기반해 init centorid를 지정하기도 한다. scikit learn의 KMeans ‘k-means++’ 방법으로 초기 centroid를 결정하는데, 이 방법은 k개의 초기 centroid를 결정할 때 centroid_1 하나 지정하고 그 다음 centorid_2는 이전의 centroid_1와 멀리 떨어지게 잡는 것이다. 또한 군집의 수인 K는 x축을 K, y축을 군집 내 거리 제곱합의 합으로 두고 급격하게 꺽이는 elbow point를 찾는다. (=당연히 군집의 수 늘어날수록 군집 내 거리제곱합은 줄어드는 것이다. elbow point를 찾는 이유는 군집의 수를 늘렸음에도 불구하고 거리제곱합이 크게 줄어들지 않는 지점을 찾고자 하는 의도)

3) DBSCAN

dbscan은 clustering 방법 중 partitional clustering에 속하며 밀도 기반 알고리즘이다. dbscan에서 중요한 hyperparameter는 minpts와 eps이다.

dbscan은 eps, minpts에 기반하여 모든 데이터를 core point, border point, noise point로 구분한다.

  • core point : eps 반경 내에 minpts 이상개의 데이터 보유

  • border point : eps 반경 내에 minpts개의 데이터는 없지만, core point를 neighbor로 가진다.

  • noise point : eps 반경 내에 minpts개의 데이터도 없고, core point도 neighbor로 가지지 않는다.

core point가 다른 core point의 eps 반경내에 포함되면 하나의 cluster가 되는 방향으로 군집을 형성해 나간다. 이 때 border point는 cluster의 경계를 형성하는 역할을 하며, noise point는 어떠한 cluster에도 포함되지 않는다.

eps와 minpts는 k-dist를 통해 적절한 값이 결정된다. 각 데이터마다 k번째로 가까운 거리를 구하고, 이 거리를 정렬하여 plot을 그린다. 이 때 급격히 k-dist가 증가할 때 이 때의 dist값이 eps가, k가 minpts가 된다. (이렇게 되면 대부분의 경우 eps 반경내에 k개의 데이터를 갖고 있다는 의미)

4) spectralClustering

  1. Construct a similarity graph

  2. Determine the Adjacency matrix W, Degree matrix D and the Laplacian matrix L

  3. Compute the eigenvectors of the matrix L

  4. Using the second smallest eigenvector as input, train a k-means model and use it to classify the data

Meanshift KDE(kernal density estimation)을 이용하여 데이터 포인트들이 분포가 높은 곳으로 이동하며 clustering이 수행된다. 별도의 cluster 개수를 지정하지 않으며 데이터 분포도에 기반하여 자동으로 cluster 개수가 정해짐

KDE는 kernal 함수를 통해 어떤 변수의 확률밀도 함수를 추정하는 방식이다. 확률 밀도를 추정하는 방식에는 모수적 방식과 비모수적 방식이 있는데, KDE는 비모수적 방식에 속한다. (모수적 방식은 분포를 가정하고 그 때의 모수를 추정하는 방식) KDE는 개별 데이터에 커널 함수를 적용한 뒤 커널함수의 적용 값을 합한 후 데이터의 건수로 나누어 확률밀도함수를 추정하는 방식이다. (커널함수로는 가우시안 분포함수가 대표적이다.) meanshift에서 주요 hyperparameter는 bandwidth인데, 만약 가우시안 커널 함수를 사용한다고 했을 때 bandwidth가 작으면 표준편차가 작은 커널함수가 만들어진다. 따라서 bandwidth가 작으면 overfitting될 확률이 높고, bandwidth가 작으면 smoothing되어 underfitting될 확률이 높다. 또한 bandwidth가 작을수록 많은 클러스터 중심점을, 클수록 적은 클러스터 중심점을 갖게 된다.

3. Evaluation

Last updated

Was this helpful?