본문 바로가기
파이썬 라이브러리를 활용한 머신러닝

Comparing and Evaluating Clustering Algorithms

by 지식광부키우기 2019. 12. 2.

 

군집 알고리즘 요약

 

군집 알고리즘을 적용하고 평가하는 것이 매우 정성적인 분석 과정이며 탐색적 데이터 분석 단계에 크게 도움될 수 있다는 것을 보았습니다. 

 

k-평균, DBSCAN, 병합 군집이라는 세 가지 군집 알고리즘을 살펴보았습니다.

 

세 알고리즘 모두 군집을 세밀하게 조절할 수 있는 방법을 제공합니다.

 

이 세 모델은 실제 대량의 데이터셋에 사용할 수 있고 비교적 쉽게 이해할 수 있으며 여러 개의 클러스터로 군집을 만들 수 있습니다. 

 

각 알고리즘은 조금씩 다른 장점을 가지고 있습니다. 

 

k-평균은 클러스터 중심을 사용해 클러스터를 구분합니다. 이 알고리즘은 각 데이터 포인트를 클러스터의 중심으로 대표할 수 있기 때문에 분해 방법으로 볼 수도 있습니다.

 

계층 군집은 전체 데이터의 분할 계층도를 만들어주며 덴드로그램을 사용해 손쉽게 확인할 수 있습니다. 

 

DBSCAN은 클러스터에 할당되지 않는 잡음 포인트를 인식할 수 있으며 클러스터의 개수를 자동으로 결정합니다. 다른 두 알고리즘과는 달리 tow_moons 예에서처럼 복잡한 클러스터의 모양을 인식할 수 있습니다. DBSCAN은 크기가 많이 다른 클러스터를 만들어내곤 하는데, 장점이기도 하고 단점이 될 수도 있습니다. 

 

 

클러스터 평가 

 

왜 클러스터 평가가 필요한가요?

 

데이터 셋의 군집 경향을 결정하기 위함입니다. (비확률적 구조가 실제로 데이터에 존재하는지 구별하기 위해)

 

외부로부터 알려진 결과와 클러스터 분석의 결과를 비교하기 위함입니다.

 

외부 정보 참고 없이 클러스터 분석의 결과가 데이터에 얼마나 잘 들어맞는지 평가하기 위함입니다.

 

서로 다른 두 개의 클러스터링 결과를 비교하여 어느 것이 더 나은지 결정하기 위함입니다.

 

'정확한' 클러스터의 수를 결정하기 위함입니다. 

 

 

지도 학습 분류에서는 모델의 좋음을 평가하는 다양한 방법이 있었습니다. ex) 정확도, 정밀도, 재현율

 

비지도 학습 클러스터링도 클러스터 결과의 "좋음"을 판단하는 유사한 질문이 있을 수 있습니다.

 

클러스터의 평가는 매우 어렵고 난해한 부분입니다.

 

그러나 이 것에 힘쓰지 않으면 클러스터링의 결과는 아무런 의미가 없을 것입니다.

 

 

타깃값으로 클러스터링 평가하기

 

군집 알고리즘의 결과를 실제 정답 클러스터와 비교하여 평가할 수 있는 지표들이 있습니다. 

 

1 (최적일 때)과 0 (무작위로 분류될 때) 사이의 값을 제공하는 adjusted rand index (ARI)가 가장 널리 사용하는 지표 중 하나입니다 (ARI는 음수가 될 수 있습니다).

 

군집 모델을 평가할 때 흔히 하는 실수가 accuracy_score를 사용하는 것입니다.

 

정확도를 사용하면 할당된 클러스터의 레이블 이름이 실제 레이블 이름과 맞는지 확인합니다.

 

클러스터 레이블은 그 자체로 의미가 있는 것이 아니며 포인트들이 같은 클러스터에 속해 있는가만이 중요합니다. 

 

 

Two_Moon 데이터셋 - ARI

 

ARI를 사용해서 k-평균, 병합 군집, DBSCAN 알고리즘을 비교합니다. 

 

그림1

 

무작위로 할당했을 떄의 ARI 점수는 0이고, DBSCAN은 점수가 1입니다. 

 

 

타깃값 없이 군집 평가하기

 

군집 알고리즘을 적용할 때 보통 그 결과와 비교할 타깃값이 없습니다. 

 

타깃값이 필요 없는 군집용 지표로 실루엣 계수 (silhouette coeffcient)가 있습니다. 

 

실루엣 점수는 클러스터의 밀집 정도를 계산하는 것으로, 높을 수록 좋으며 최대 점수는 1입니다.

 

밀집된 클러스터가 좋긴 하지만 모양이 복잡할 때는 밀집도를 활용한 평가가 잘 들어맞지 않습니다.

 

이 지표는 실제로 잘 동작하진 않습니다. 

 

 

군집 응집도 : 클러스터 안의 데이터 포인트들이 얼마나 밀접한 연관이 있는지를 측정합니다. 

 

군집 분리도 : 다른 클러스터들로부터 한 클러스터가 얼마나 잘 분리되었는지를 측정합니다.

 

그림2

 

 

실루엣 계수 (Silhouette Coefficient)

 

실루엣 계수는 응집도와 분리도의 아이디어를 모두 결합한 것입니다.

 

개별 데이터 포인트, i에 대해

 

a를 계산합니다 = 클러스터 내의 포인트에 대한 i의 평균 거리  

 

b를 계산합니다 = 다른 클러스터의 포인트에 대한 i의 평균 거리의 최솟값

 

포인트에 대한 실루엣 계수는 s = (b - a) / max(a,b) 입니다.

 

일반적으로 0과 1사이이며, 1에 가까울 수록 더 좋습니다.

 

클러스터 또는 클러스터링에 대한 평균 실루엣 계수를 계산할 수 있습니다. 

 

 

Two_Moon 데이터셋 - Silhouette Score

 

실루엣 점수를 사용해서 k-평균, 병합 군집, DBSCAN 알고리즘을 비교합니다. 

 

그림3

 

DBSCAN의 결과가 더 낫지만 k-평균의 실루엣 점수가 높습니다. 

 

 

Interpretation

 

Interpretation (매우 중요합니다)

 

목표 : 의미있고 융용한 클러스터를 획득합니다.

 

전제 : 

 

1) 무작위 할당은 종종 명백한 클러스터를 만들 수 있습니다.

 

2) 클러스터의 방법이 서로 다른 결과를 생성합니다.

 

해결 : 

 

요약 통계를 가져옵니다.

 

변수 측면에서 클러스터를 검토합니다.

 

클러스터에 레이블을 지정합니다 (전문가의 지식에 기반하여)

 

 

Takeaway

 

명심해야 할 점

 

좋은 성능을 위해서는 적절한 하이퍼 파라미터를 설정하는 것이 중요합니다.

 

일부 알고리즘은 입력 데이터를 어떻게 표현하는지에 민감합니다.

 

모델의 가정과 하이퍼파라미터 세팅의 의미를 이해하지 않고 데이터셋에 맹목적으로 알고리즘을 적용하면 정확한 모델로 이어질 수 없습니다. 

 

보통 애매모호한 알고림즘을 잘못 적용하는 것보다 일반적인 알고리즘을 정확하게 적용하면 훨씬 더 잘 할 수 있습니다. 

 

 

Quick Summary

 

이번 장에서는 탐색적 데이터 분석과 데이터 전처리에 사용할 수 있는 여러 가지 비지도 학습 알고리즘을 소개했습니다.

 

주어진 데이터에 대한 이해를 높이기 위한 필수 도구이며, 레이블 정보가 없을 때 데이터를 분석할 수 있는 유일한 방법이기도 합니다.

 

비지도 학습의 성과를 정량화하기가 어려울 때가 많지만, 데이터에 대한 통찰을 얻을 수 있는 이런 도구들을 사용하지 않을 이유는 없습니다.

 

지도 학습에서도 데이터 탐색 도구는 데이터의 특성을 잘 이해하는 데 중요합니다.

 

 

파이썬 라이브러리를 활용한 머신러닝 책과 성균관대학교 강석호 교수님 수업 내용을 바탕으로 요약 작성되었습니다.

'파이썬 라이브러리를 활용한 머신러닝' 카테고리의 다른 글

Binning (Discretization)  (0) 2019.12.06
Categorical Variables  (0) 2019.12.04
DBSCAN  (0) 2019.11.28
Hierarchical Clustering  (0) 2019.11.26
K-Means Clustering  (0) 2019.11.25

댓글