Clustering(군집화)는 비지도 학습 중 한가지 기법으로, 비슷한 유형의 데이터를 그룹화함으로써 unlabeled 데이터에 숨겨진 구조를 파악한다.
군집화를 통해 다음과 같은 것들을 구현할 수 있다.
- Recommendation Engine: 개인화된 사용자 경험을 제공하기 위해 상품들을 그룹화 한다.
- Search Engines: 뉴스 토픽과 검색 결과를 그룹화 한다.
- Market Segmentation: 지역, 인구, 행동 등을 바탕으로 고객을 그룹화한다.
K-Means Clustering
K Means 알고리즘은 주어진 K, 즉 그룹화 할 그룹의 개수에 따라 주어진 데이터를 군집화 하는 알고리즘이다. Means는 각 클러스터의 중심(centroids)과 데이터들의 평균 거리를 의미한다.
K- Means Algorithm
- 데이터 셋에서 K개의 centroids를 임의로 지정한다.
- 각 데이터들을 가장 가까운 centroids가 속한 그룹에 할당한다.
- 2번 과정에서 할당된 결과를 바탕으로 centroids를 새롭게 지정한다.
- 2-3번 과정을 centroids가 더 이상 변하지 않을 때까지 반복한다.
Elbow method
최적의 K를 찾기 위해서는 elbow method를 사용한다. 그룹에 포함된 데이터들이 퍼져있는 정도를 inertia라고 하는데, inertia는 각 클러스터의 중심인 centroid와 각 데이터들 사이의 거리를 나타낸다. 따라서 intertia가 낮은 그룹을 '좋은' 그룹으로 정의할 수 있다.
클러스터링의 목표는 클러스터의 수(K)의 수를 최소화 시키는 것과 동시에, inertia도 최소화 시키는 것이다. 이때 최적의 클러스터 수를 결정하는 방법이 elbow method 이다.
해당 그래프에서 기울기의 차이가 적어지는 지점을 찾으면 된다. 이 경우에서는 k가 최적의 클러스터수가 된다.
분류 검증 방법 - Cross tabulation
Label이 주어진 데이터들에 대해서는, 해당 데이터들이 맞는 그룹으로 할당되었는지 검증해볼 수 있다.
Pandas의 내장 함수인 crosstab 함수를 사용할 수 있다.
scikit learn의 데이터 셋 iris 데이터에 관한 군집화 결과이다. setosa: 1, versicolor: 0, virginica: 2라고 했을 때, 각 데이터들의 분포 결과를 확인할 수 있다.
species b'setosa' b'versicolor' b'virginica'
labels
0 0 48 14
1 50 0 0
2 0 2 36
'Data Science > ML&AI' 카테고리의 다른 글
[NLP] Word Embedding with Lookup table - nn.Embedding() (0) | 2021.06.03 |
---|---|
[NLP] Embedding - fastText란? (0) | 2021.04.14 |
[NLP] BERT란? - 자연어 처리 모델 알아보기 (0) | 2021.03.20 |
[NLP] NLP 사전 훈련 변천사: 1. Word Embedding & ELMo (0) | 2021.03.17 |
[머신러닝] Undersampling과 Oversampling이란? (0) | 2020.09.20 |