목차
군집분석
- 각 개체의 유사성을 측정하여 유사성이 높은 대상집단을 분류한다.
- 군집 내 유사성은 높고, 타군집과 상이하다.
- 비지도학습
- 특징
- 이상값 탐지에 사용됨(분류분석보다 효과가 좋다)
- 정해진 하나의 답이 없어서, 분석가의 판단에 따라 선택하고 판단한다.---> 서술이 중요하다.
- 데이터 탐색에 좋다.
- 특징
- ex) XL, L, M, S - 여러 사람들을 어깨, 몸무게, 키 등을 기준으로 옷 사이즈를 알려줌
요인분석 vs 판별분석 비교
- 요인분석 : 차원분석- PCA, FA: 여러 개의 차원을 공분산행렬을 이용해서 저차원으로 변환한다.
- 판별분석 : 군집분석- 새로운 데이터를 어떠한 집단에 할당한다.
거리를 측정하는 방법
- 관측 데이터 간 유사성이나 근접성을 거리로 판단하여 어느 군집으로 묶을지 판단한다.
- 유클리드 : 원형데이터
- 표준화: 이상값 피할 수 있음- 이상치가 있는 데이터
- 마할라노비스: 분포와 분포 사이의 거리를 계산 - GMM분포 이용할 때 쓰임- 타원형데이터
종류
- 계층적 군집분석
- 비계층적 군집분석
- 혼합분석 군집분석 - 다음차시
- SOM(자기조직화지도) - 다음차시
1. 계층적 군집분석
- n개의 군집으로 시작해 점차 군집의 개수를 줄여나가는 방법
- 군집화되는 덴드로그램을 보고 적절한 군집의 수를 분석가가 직접 판단함
- 데이터 포인트들 사이의 거리를 기반으로 순차적으로 군집을 형성함
- 최단연결법 : n x n 거리행렬에서 거리가 가장 가까운 데이터를 묶어서 군집을 형성함
- 최장연결법: 데이터와의 거리를 계산할 때 군집 간 최장거리인 경우를 계산함
- 평균연결법: 군집 중심 간 거리를 계산할 때 평균을 거리로 계산함
- ★ 와드연결법: 군집 내 편차 제곱합에 근거를 두고 군집화한다. 군집 내 편차는 작고, 군집 간 편차는 크게 군집화하여 정보의 손실을 최소화시킨다.
- 덴드로그램 : 최상단부터 세로축의 개수에 따라 가로선을 그어 군집 개수를 선택함
<실습>
- EDA
- 나누어지는 대상 (타겟 제외)
- 최단연결법
fcluster
계층적 군집의 결과를 특정 기준에 따라 군집으로 나누는데 사용된다.
- Z: 데이터, linkage함수에 의해 생성된 계층적 군집화 결과를 나타내는 연결행렬.
- t: 임계값, 군집을 결정하는 거리의 임계값
- criterion: 군집화 기준을 지정하는 문자열
- distance: 군집화할 때 기준으로 거리 임계값을 사용함. 각 군집의 관측값이 t보다 작은 거리를 가지도록 평면 군집을 형성
- inconsistent: 군집의 값이 t보다 작거나 같으면 모든 하위 항목이 동일한 군집에 속함.
- 최장연결법
- 평균연결법
- 와드연결법
- 동일 군집 내 거리가 촘촘하고, 군집 간 거리가 넓기 때문에 와드가 가장 적절하다. 와드는 각 데이터의 거리보다는 군집 내 편차들의 제곱합에 근거를 두고 군집화를 시키는 방법이기 때문에, 정보의 손실을 최소화시킬 수 있다. 상대적으로 계싼량이 많은 단점이 있지만, 군집 크기를 비슷하게 만들며 해석력이 좋다는 장점이 있다.
군집 배정 결과 확인
- 1번 군집에 비해 2번이, 2번에 비해 3번 군집이 범죄율이 낮기 때문에 살기가 좋다고 볼 수 있다. 1번 군집은 범죄율을 기반했을 때 고위험, 2번 군집은 보통, 3번 군집은 저위험의 집단이라고 결론을 내릴 수 있다.
2. 비계층적 군집분석
- 주어진 데이터를 k개의 클러스터로 묶는 알고리즘
- 랜덤하게 군집을 묶어가는 알고리즘 사용
- 각 클러스터와 거리 차이의 분산을 최소화 하는 방식으로 작동
- 응집도 최소가 되는 지점 찾기: (각 클러스터별 중심점~ 클러스터 내 객체) 제곱의 합
K- means
- centroid : 중심점을 임의로 선택해 가장 가까운 포인트들을 선택하는 방법
- 군집화에서 가장 일반적으로 사용하는 알고리즘으로 centroid를 임의로 선택해 거리 차이의 분산을 최소화 하는 방식으로 가장 가까운 포인트들을 선택하는 방법이다.
- 절차
1. 초깃값 설정: centroid 개수 정하고 아무대나 놓기
2. 클러스터 설정: centroid에서부터 각각의 데이터까지의 유클리드 거리를 계산해서 가장 가까운 곳으로 배정
3. 중심 재배치: 각 centroid에 모인 데이터들의 평균값을 계산하여 centroid 새로운 위치로 옮기기
4. 2~3 반복하다가 데이터가 이동하지 않거나 변화가 작아지면 알고리즘 반복 중지
- 특징
1. 알고리즘이 쉽고 간결하다
2. 변수가 많을 경우 군집의 정확도가 떨어진다 -> PCA 고려
3. centroid 개수를 스스로 판단하여 알고리즘에 적용해야한다.
- 최적의 군집 개수를 결정하는 방법
- 콜린스키 하라바츠 스코어: 점수 높을 수록 성능 좋다.
- 엘보우: 클러스터 내 SSE(오차제곱합)을 클러스터 개수마다 비교, SSE가 급격히 줄어드는 부분이 최적의 클러스터 개수이다.
- 실루엣스코어
<실습>
kmeans
★ 몇 개의 클러스터가 좋은지 평가?
- K-means는 초기 K값을 정해줘야 한다. 콜린스키 하라바츠/엘보우/실루엣스코어를 이용하여 적절한 k값을 탐색
- 시각화는 n차원에서는 평가가 쉽지 않다. 따라서 다른 방법으로 군집이 잘 되었는지 평가할 필요가 있다.
- 회귀모델은 label이 있기 때문에 결정계수, MSE, ROC, Precision, Recall 등의 평가가 가능하지만 군집모델은 비지도학습이기 때문에 이런 평가방법이 불가능하다.
- 좋은 군집화 모델이란 어떤 것인지를 생각해보자. 정답은 다른 군집 간 거리는 멀고, 군집 내에는 거리가 가까운 경우가 보편적이다.
1) Calinski-Harabasz 콜린스키 하라바츠 지수
- 모든 클러스터에 대한 (클러스터 간 분산/ 클러스터 내 분산)의 합의 비율
- 점수 높을 수록 성능 좋음
- 계산 빠름
- 밀도 기반 클러스터에서 점수가 더 높게 나타나는 경향 있음 --> DBSCAN을 사용해야함
-->2, 3개가 적당하다.
2) 엘보우 기법 Elbow, inertia
- 데이터 포인트들과 centroid 거리를 최소화하는 것이 목표
- 클러스터 내 오차제곱합 SSE을 클러스터 개수마다 비교
- 클러스터 개수를 늘려나가면서 계산한 SSE를 비교
- 어느순간 줄어드는 비율이 급격히 작아지는 부분과 기울기 소실 구간이 생김(팔꿈치 위치) -> 최적의 클러스터 개수
- inertia
- 클러스터 내의 데이터 포인트가 클러스터 중심과 얼마나 가깝게 모여있는지 측정하는 값
- inertia를 최소화하도록 중심을 이동시키며, 이를 반복하여 최적의 클러스터링 결과를 찾음
- inertia가 작을 수록 데이터포인트들이 클러스터의 중심과 가까이 모여있으며 클러스터링이 좋다고 평가(0과 가까울 수록 좋음)
- 다만 k가 많아질 수록 inertia의 값은 낮아지지만, 그것은 크게 의미가 없다.
--> 3 ~ 4로 갈 때 기울기가 소실되므로, 군집의 수는 2~3이 적당하다
3) 실루엣 스코어
- 각 군집 간의 거리가 얼마나 효율적으로 분리되어 있는지 나타낸다.
- 효율적으로 잘 분리되었다는 것은 타 군집과의 거리는 멀고, 동일 군집 내 거리는 가깝게 뭉쳐있다는 의미이다.
- 실루엣 계수(silhouette coefficient)=s 를 기반으로 분석한다.
- 각 군집별로 실루엣 계수의 합의 평균이 실루엣 점수이다.---> 높을 수록 좋음
- b: 가장 가까운 다른 군집 데이터 포인트와의 거리를 평균한 값
- a: 같은 군집 내에 있는 다른 데이터 포인트와의 거리를 평균한 값
- b-a : 두 군집 간의 거리가 얼마나 떨어져있는가?
- max(a,b) : 정규화 목적
1 |
|
0 |
|
- |
|
※ 개별 군집의 실루엣 평균값이 전체 실루엣 계수의 평균값에서 크게 벗어나지 않는 것이 좋다. 즉, 개별 군집의 평균값 편차가 작은 것이 좋다.
[0.6808136202936816,
0.5509643746707443,
0.4962850920616641,
0.4885175508886279,
0.36820569682713084,
0.3642825057023602,
0.3468458621054017,
0.33555904667682923]
결과해석 위해 데이터 요약_
- 시각화
[Unsupervised learning] K-means, centroid, Python (tistory.com)
[Cluster] Python, silhouette score, inertia, kmeans (tistory.com)
[Cluster] DBSCAN, Evaluation, inertia, silhouette score, Python (tistory.com)