ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [분석/통계] 비지도학습 - 군집(K-MEANS, 병합군집)
    Study/Statistics 2019. 5. 28. 18:26

    군집(clustering)이란?

    데이터셋을 그룹으로 묶어서 나누는 작업

    클러스터(그룹) 내 동질 클러스터 간 이질

     

    K-평균군집(K-MEANS)

    데이터의 어떤 영역을 대표하는 클러스터 중심을 찾기

     

    알고리즘

    1. 데이터 포인트를 가까운 클러스터 중심에 할당

    2. 클러스터에 할당된 데이터 포인트들의 평균으로 클러스터 중심 다시 지정

    3. 1,2 반복

    4. 더이상 데이터 포인트에 변화가 없을 때 종료

    * 중간에 있어서 계속 왔다 갔다하는 경우엔 최대 시행횟수를 정해줘 종료시키기

    입력 데이터와 k-평균 군집 알고리즘이 세 번 진행되기까지의 과정

    * 유의할 점 : 초기화 과정에서 임의로 선택된 점에 클러스터 레이블이 붙기 때문에클러스터 레이블 번호 자체에 대한 의미는 존재하지 않고알고리즘을 시행할 때마다 다른 레이블 번호가 부여될 수 있어 확인을 해봐야 함

     

    k-평균군집 실패

    군집을 동글동글한 모양으로 만들어서 => 모여있는 모양이 동글한 모양이 아니면 잘 안나뉨

    모든 클러스터의 반경이 똑같다고 가정해서 클러스터 중심 사이의 정확히 중간에 경계를 그림

    => 밀도(모여있는 정도)가 다른 경우 잘 안나뉨

     

    1. 밀도가 다른 클러스터

    서로 모여있는 정도가 다른 경우 

    클러스터의 밀도가 다를 때 k-평균으로 찾은 클러스터 할당

    클러스터0과 클러스터1은 중심에서 멀리 떨어진 포인트도 포함함

     

    2. 원형이 아닌 클러스터

    원형이 아닌 클러스터를 구분하지 못하는 k-평균 알고리즘

    대각선 모양으로 3개가 선택되어야 하지만 떨어져있는 것이 같은 클러스터로 묶임

     

    3. 복잡한 모양의 클러스터

    복잡한 모양의 클러스터를 구분하지 못하는 k-평균 알고리즘

    곡선 2개로 선택되어야 하지만 원형모양으로 잘못 클러스터링함

     

    k-평균군집 실패 극복 방법

    복잡한 형태의 경우 클러스터를 여러개로 만들어 합쳐 구분할 수 있음

    복잡한 형테의 데이터셋을 다루기 위해 많은 클러스터를 사용

     

    장점

    이해하기 쉽고 구현이 쉽고 비교적 구현이 빨라 많이 사용됨

    대용량 데이터셋에서도 잘 작동

     

    단점

    무작위 초기화를 사용해 난수 초깃값에 따라 알고리즘 출력이 달라짐

    클러스터의 모양을 가정하고 있어 활용 범위가 제한적

    클러스터의 개수를 지정해줘야함

     

    pca nmf k-means 차이 비교

    PCA

    데이터에서 분산이 가장 큰 방향을 찾으려함

    데이터 포인트를 어떤 성분의 합으로 표현

    NMF

    데이터의 극단 또는 일부분에 상응되는 중첩할 수 있는 성분을 찾음

    데이터 포인트를 어떤 성분의 합으로 표현

    K-means

    클러스터 중심으로 각 데이터 포인트를 표현

    각 데이터 포인트가 클러스터 중심(하나의 성분)으로 표현 됨

    => 백터 양자화(vector quantization, 각 포인트가 하나의 성분으로 분해됨)

     

    병합군집

    각 포인트를 하나의 클러스터로 지정하고가장 비슷한 두 클러스터를 합쳐나가는 알고리즘

     

    알고리즘

    1. 각 포인트를 하나의 클러스터로 지정

    2. 가장 비슷한(가까운) 두 클러스터를 합침

    3. 2반복 두 클러스터씩 계속 합치기

    4. 종료조건을 만족하면 종료 

     

    이미 병합된 클러스터와 합쳐야 되는 경우

    1. 모든 클러스터 내 분산을 가장 작게 증가시키는 두 클러스터 합치기

       크기가 비교적 비슷한 클러스터가 만들어짐

       python skit-learn에서는 ward옵션

    2. 클러스터 포인트 사이의 평균 거리가 가장 짧은 두 클러스터 합치기

       python skit-learn에서는 average옵션

    3. 클러스터 포인트 사이의 최대 거리가 가장 짧은 두 클러스터 합치기

       python skit-learn에서는 complete옵션

     

    종료조건

    python skit-learn에서는 클러스터 개수로 지정된 개수의 클러스터가 남을 때까지 비슷한 클러스터를 합침

     

    두 인접 클러스터를 반복적으로 합쳐나가는 병합 군집

     

    시각화

    계층적 군집

     

     

     

     

    덴드로그램

    어떤 과정으로 클러스터들이 합쳐지는 지 알 수 있음

    클러스터 간 거리가 얼마나 되는지 알 수 있음

     

    몇 개의 클러스터를 사용해야하는지 알 수 있음

     

    장점

    k-means의 단점을 극복함{

    무작위 초기화를 사용해 난수 초깃값에 따라 알고리즘 출력이 달라짐 => 무작위 초기화를 사용하지 않음, 그냥 가까운!

    클러스터의 모양을 가정하고 있어 활용 범위가 제한적 => 클러스터의 모양과는 상관없이 가까운걸로 구분

    클러스터의 개수를 지정해줘야함 => 덴드로그램을 보면 몇 개의 클러스터를 사용할 지 알 수 있음

    }

     

    단점

    복잡한 모양일 땐 구분하기 어려움

     

    DBSCAN

    KNN이랑 비슷한 개념

    데이터가 붐비는 지역의 포인트를 찾아 밀집 지역이 한 클러스터를 구성해 비교적 비어있는 지역을 경계로 다른 클러스터와 구분

     

    밀집 지역(dense region) : 데이터가 많아 붐비는 지역

    핵심 샘플(=핵심 포인트) : 밀집 지역에 있는 포인트, 한 데이터 포인트에서 eps 거리 안에 데이터가 min_samples 개수만큼 들어있는 경우 

     

    알고리즘

    1. 무작위로 포인트 선택

    2. 포인트에서 eps 거리안의 모든 포인트를 찾음

       eps 거리 안에 있는 포인트 수가 min_samples보다 적은 경우 : 잡음으로 레이블(클래스에 속하지 않는 포인트 

       eps 거리 안에 있는 포인트 수가 min_samples보다 많은 경우 : 핵심 샘플로 새로운 클러스트 레이블 할당

    3. 핵심샘플의 eps 거리 안에 있는 모든 이웃에 핵심샘플의 클러스트 레이블 할당

    4. eps 거리 안에 더 이상 핵심 샘플이 없을 때까지 반복

    min_samples와 eps매개변수를 바꿔가며 DBSCAN으로 계산한 클러스터

     

    장점

    클러스터의 개수를 지정할 필요가 없음

    복잡한 모양에서도 구분할 수 있음

    어떤 클래스에도 속하지 않은 포인트를 구분할 수 있음

    큰 데이터셋에도 적용 가능

     

    단점

    병합군집이나 k-means보다 느림

    댓글

Designed by Tistory.