Certificate/ADP

[ADP 데이터분석 전문가- 통계편] 군집분석, 계층적 군집분석, 최단, 평균, 와드 연결법, 비계층적 군집분석, kmeans, calinski-harabasz, elbow, inertia, 실루엣스코어

Olivia-BlackCherry 2023. 10. 25. 18:30

목차

    군집분석

    • 각 개체의 유사성을 측정하여 유사성이 높은 대상집단을 분류한다.
    • 군집 내 유사성은 높고, 타군집과 상이하다.
    • 비지도학습
      • 특징
        • 이상값 탐지에 사용됨(분류분석보다 효과가 좋다)
        • 정해진 하나의 답이 없어서, 분석가의 판단에 따라 선택하고 판단한다.---> 서술이 중요하다.
        • 데이터 탐색에 좋다.
    • ex) XL, L, M, S - 여러 사람들을 어깨, 몸무게, 키 등을 기준으로 옷 사이즈를 알려줌

     

    요인분석 vs 판별분석 비교

    • 요인분석 : 차원분석- PCA, FA: 여러 개의 차원을 공분산행렬을 이용해서 저차원으로 변환한다.
    • 판별분석 : 군집분석- 새로운 데이터를 어떠한 집단에 할당한다.

     

    거리를 측정하는 방법

    • 관측 데이터 간 유사성이나 근접성을 거리로 판단하여 어느 군집으로 묶을지 판단한다.  
    • 유클리드 : 원형데이터
    • 표준화: 이상값 피할 수 있음- 이상치가 있는 데이터
    • 마할라노비스: 분포와 분포 사이의 거리를 계산 - GMM분포 이용할 때 쓰임- 타원형데이터

     

     

    종류

    • 계층적 군집분석
    • 비계층적 군집분석
    • 혼합분석 군집분석 - 다음차시
    • SOM(자기조직화지도) - 다음차시

     

     

     

    1. 계층적 군집분석

    • n개의 군집으로 시작해 점차 군집의 개수를 줄여나가는 방법
    • 군집화되는 덴드로그램을 보고 적절한 군집의 수를 분석가가 직접 판단함
    • 데이터 포인트들 사이의 거리를 기반으로 순차적으로 군집을 형성함 
      • 최단연결법 : n x n 거리행렬에서 거리가 가장 가까운 데이터를 묶어서 군집을 형성함
      • 최장연결법: 데이터와의 거리를 계산할 때 군집 간 최장거리인 경우를 계산함
      • 평균연결법: 군집 중심 간 거리를 계산할 때 평균을 거리로 계산함
      • ★ 와드연결법: 군집 내 편차 제곱합에 근거를 두고 군집화한다. 군집 내 편차는 작고, 군집 간 편차는 크게 군집화하여 정보의 손실을 최소화시킨다.

    • 덴드로그램 : 최상단부터 세로축의 개수에 따라 가로선을 그어 군집 개수를 선택함

     

    <실습>

     

    - EDA

    USArrests.csv
    0.00MB

     

     

    - 나누어지는 대상 (타겟 제외)

     

     

    - 최단연결법

     

    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가 급격히 줄어드는 부분이 최적의 클러스터 개수이다.
        - 실루엣스코어

     

     

     

     

    <실습>

    iris.csv
    0.00MB

     

     

    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
    • 1에 가까울수록 근처 군집과 더 멀리 떨어져 있음
    0
    • 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)

     

    [Unsupervised learning] K-means, centroid, Python

    목차 K-means models - Unsupervised learning(using unlabled data) - Partitioning algorithm - Clusters unlabeled data - centroid : each cluster is defined by a central point or a centroid that is center of a cluster determined by the mathematical mean of a

    olivia-blackcherry.tistory.com

     

    [Cluster] Python, silhouette score, inertia, kmeans (tistory.com)

     

    [Cluster] Python, silhouette score, inertia, kmeans

    목차 data 1. 라이브러리 import numpy as np import pandas as pd from sklearn.cluster import KMeans from sklearn.metrics import silhouette_score from sklearn.preprocessing import StandardScaler import matplotlib.pyplot as plt import seaborn as sns 2.

    olivia-blackcherry.tistory.com

    [Cluster] DBSCAN, Evaluation, inertia, silhouette score, Python (tistory.com)

     

    [Cluster] DBSCAN, Evaluation, inertia, silhouette score, Python

    목차 DBSCAN Density based Spatial Clustering of Applications with Noise 밀도 기반 군집화의 대표 알고리즘으로 데이터 분포가 기하학적으로 복잡한 데이터 세트에 효과적이다. 높은 밀도의 데이터 포인트의 군

    olivia-blackcherry.tistory.com