공부정리/Deep learnig & Machine learning

[핵심 머신러닝] 군집분석

sillon 2022. 8. 17. 16:00
728x90
반응형

이 게시글은 김성범 교수님의 유튜브 강의를 정리한 내용입니다.

내용과 사진의 각 출처는 김성범 교수님께 있음을 미리 알립니다.

해당 게시글 강의 영상: https://www.youtube.com/watch?v=8zB-_LrAraw 


[핵심 머신러닝] 군집분석

군집화 개념

유사한 속성들을 갖는 관측치들을 묶어 전체 데이터를 몇개의 군집(그룹)으로 나누는 것

 

  • 동일한 군집에 소속된 관측치들은 서로 유사할 수록 좋음
  • 상이한 군집에 소속된 관측치들은 서로 다를 수록 좋음

 

 

분류(Classification)  VS 군집화(Clustering)

분류모델 : Y가 있다. (예측하려는 것이 목적) -

군집: Y 가 없다. (예측이 목적이 아님) - > decision boudary가 없음

 

적용사례

1. 고객

회사는 고객의 정보를 가지고 있음 -> 각각의 고객을 마케팅 하기에는 비효율 적 -> 비슷한 특징을 가진 고객끼리 모운다.

2. 문서

유사 문서를 군집화한다.

3. 지역 패턴 군집화

관측치에서 오존 농도를 계산했을 때, 비슷한 오존 농도를 가진 구 끼리 묶는다.

4. 웨이퍼 Fail bit map 군집화

웨이퍼 : 여러개의 칩으로 이루어짐

칩의 상태에 따라 데이터화 된 이미지

 

해당 패턴에 따라서 불량이 나타나는가?

군집 분석으로 웨이퍼의 불량이 어디에 나타나는지 위, 옆, 가운데 등으로 구분할 수 있었다.

 

군집화 수행 시 주요 고려사항

  • 어떤 거리 척도를 사용하여 유사도를 측정할 것인가?
  • 어떤 군집화 알고리즘을 사용할 것인가?
  • 어떻게 최적의 군집의 수를 결정할 것인가?
  • 어떻게 군집화 결과를 측정/평가할 것인가?

 

군집화: 유사도 척도

어떤  거리 척도를 사용하여 유사도를 측정할 것인가?

  • 유클리디안 거리 (Euclidean Distance)
  • 맨하탄 거리 (Manhattan Distance)
  • 마할라노비스 거리 (Mahalanobis Distance)
  • 상관 계수 거리 (Correlation Distance)

...등 여러가지가 있지만 일단 대표적인 것만 가져왔다!

거리에 대한 것 - > KNN 강의를 참고하면 됨

 

유클리디안 거리 (Euclidean Distance)

  • 일반적으로 사용하는 거리 척도
  • 대응되는 관측치 X,Y 값 간 차이 제곱합의 제곱근으로써, 두 관측치 사이의 직선 거리를 의미함

 

 

맨하탄 거리 (Manhattan Distance)

 

X에서 Y로 이동시 각 좌표 축 방향으로만 이동할 경우에 계산되는 거리

 

 

마할라노비스 거리 (Mahalanobis Distance)

  • 변수 내 분산, 변수 간 공분산을 모두 반영하여 X,Y 간 거리를 계산하는 방식
  • 데이터의 covariance matrix가 identity matrix인 경우는 유클리드 거리와 동일

마할라노비스 거리로는 A가 중점에 더 가까운 것을 알 수 있다.

 

상관 계수 거리 (Correlation Distance)

  • 데이터 간 Pearson correlation을 거리 척도로 직접 사용하는 방식
  • 데이터 패턴의 유사도/ 비유사도를 반영할 수 있음

빨간색과 검은색의 패턴은 정방향 -> 코릴레이션 거리 0

빨간색과 검은색의 패턴은 정반대 -> 코릴레이션 거리 2

 

스피어만 상관계수거리 

데이터가 순위로 나왔을 때 측정 가능한 거리

 

 

군집화: 알고리즘

1. 계층적 군집화

  • 개체들을 가까운 집단 부터 차근차근 묶어나가는 방식
  • 군집화 결과 뿐만 아니라 유사한 개체들이 결합되는 dendrogram 생성

2. 분리형 군집화

  • 전체 데이터의 영역을 특정 기준에 의해 동시에 구분
  • 각 개체들은 사전에 정의된 개수의 군집 중 하나에 속하게 됨

3. 자기조직화 지도

  • 2차원의 격자에 각 개체들이 대응하도록 인공신경망과 유사한 학습을 통해 군집 도출

4. 분포 기반 군집화

  • 데이터의 분포를 기반으로 높은 밀도를 갖는 세부 영역들로 전체 영역을 구분

 

계층적 군집화

  • 계층적 트리모형을 이용하여 개별 개체들을 순차적/계층적으로 유사한 개체/군집과 통합
  • 덴드로그램(Dendrogram)을 통해 시각화 가능
    • 덴드로그램: 개체들이 결합되는 순서를 나타내는 트리형태의 구조
  • 사전에 군집의 수를 정하지 않아도 수행 가능

덴드로그램: 계층적 군집화

첫번째 그림을 먼저 자세히 보자.

Q. 몇개의 관측치가 있는 예제인가?

A. 관측치의 갯수는 밑에있는 수. 6개가 있다.

 

Q. 그러면 어떤 관측치가 유사한가?

1,3 -> 높이가 가장 낮음 -> 가장 유사

2,5,          4

6

 

Y축의 값은 상대적인 거리라고 보면 된다.

 

그림을 미루어 보면 6번째 관측치는 다른 관측치와는 다른 값을 가질 것

 

2번그림은 관측치가 굉장히 많아졌다.

 

이러한 그림들을 덴드로그램이라고 부른다. 

 

계층적 군집화 수행 예시

모든 개체들 사이의 거리에 대한 유사도 행렬 계산

 

해당 표에는 개체간의 거리가 나타나있음

 

첫번째로 가장 가까운 것은 A와 D 이다.

따라서 A와 D가 같은 군집으로 묶이게 되었따.

그다음으로 AD군집과C가 가까운 것을 알 수 있음

최종 나타나는 군집

 

 

Q.군집화 되었을 때, 군집과 군집사이의 거리는 어떻게 계산하는가?

A. 평균 - 평균을 계산하거나 다양한 척도가 있음

 

네가지 기법이 존재함

  • Min distance
  • Max distnace
  • Group average distance
  • Between ceontroids distance

 

그리고...하나 더 있음

 

Ward 방법론

두개의 군집이 있을 때 A와 B가 있음

 

군집이 떨어져있는 경우

AB가 하나의 군집이라고 생각하고

거기의 군집으로부터 각 데이터의 합을 계산한 것이 10

 

 

 

 

 

 

군집 각각 내부에서 각 거리의 차이의 제곱의 합

 

군집이 붙어있는 경우

 

A와 B 사이의 군집이 최대한 떨어져야 값이 크게 나온당!!

 

K-평균 군집화 (K-Means Clustering)

대표적인 분리형 군집화 알고리즘

  • 각 군집은 하나의 중심(centroid)을 가짐
  • 각 개체는 가장 가까운 중심에 할당되며, 같은 중심에 할다오딘 개체들이 모여 하나의 군집을 형성
  • 사전에 군집의 수 K가 정해져야 알고리즘을 실행할 수 있음

 

군집과 군집사이에는 공집합이 존재(Overlab 되지 않게)

 

데이터가 주어졌을 때 군집이 몇개 있는지는 대충 알 순 있지만,(양성/음성, 불량품/양품, ... 등)

또는 덴드로그램을 통해서도 알 수 있음

 

데이터가 들어왔을 때 군집의 개수를 제한해줄 수도 있음! 그 방법을 우리가 알아보자..

 

군집화 수행 예시 K=2일때

1. 2개의 중심(point)을 임의로 생성

 

2. 생성된 중심을 기준으로 모든 관측치에 군집 할당

- 각각의 데이터로부터 중심과의 거리를 측정해서 군집 에 할당

3. 각 군집의 중심을 다시 계산 - > 이동한 중심을 기준으로 군집이 업데이트됨

 

K- 평균 군집화 수행 절차

1. 초기 중심을 K개 임의로 생성

2. 개별 관측치로부터 각 중심까지의 거리를 계산 후, 가장 가까운 중심이 이루는 군집에 관측치 할당

3. 각 군집의 중심을 다시 계산

4. 중심이 변하지 않을 때 까지 2,3의 과정을 반복

 

초기 중심은 종종 무작위로 설정됨: 군집화 결과가 초기 중심 설정에 따라 다르게 나타나는 경우가 발생할 수도 있음

초기점을 잘 찍어내면 결과가 바람직함

 

 

이러한 바람직하지 않은 결과는 어떻게 해결하였을까?

 

무작위 초기 중심 설정의 위험을 피하고자 다양한 연구 결과가 존재하였다.

  • 반복적으로 수행하여 가장 여러번 나타나는 군집을 사용
  • 전체 데이터 중 일부만 샘플링하여 계층적 군집화를 수행한 뒤 초기 군집 중심 설정
  • 데이터 분포의 정보를 사용하여 초기 중심 설정
  • 하지만 많은 경우 초기 중심 설정이 최종 결과에 큰 영향을 미치지는 않음

 

유클리디안 거리를 사용하여 계산하면 이렇게 지역적인 패턴이 존재했을 때 판별하기 어려워진다.

 

이런 지역적 패턴이 존재할 때는

해당 거리를 이용해본다.

 

군집화: 최적의 군집의 수 결정

 

여러개로 나눌 수 있을 것이다.

이렇듯 군집이 많을 때 어떠한 값이 나오는지를 객관적인 평가를 나타내는 척도가 없을까?

-> 여러가지 방법론이 있다.

 

군집의 개수를 늘렸더니 어떤 지점에서 stable한 결과가 나오면 해당 지점을 이용하자!

 

 

 

1. 군집화 평가지표 : SSE(Sum of Squared Error)

K개인 여러 군집 내에서 SSE를 구하고

K개에 대한 SSE를 표현

 

2. 군집화 평가 지표 : Sillhouette 통계량

SSE의 단점을 보완한 것

단점:군집 간의 거리를 최대화하지 못함!!

 

 

군집 분석을 할 때

군집 내의 거리는 최소,

군집 간의 거리는 최대로 해야한다.

 

분모는 스케일링하는 역할, 분자를 잘 봐야함

 

 

 

해당 그림은 K= 4인 예제임

 

i번째 관측치가 속한 군집의 다른 점들간의 거리를 구한다.

 

i가 속해있지 않은 군집간의 거리

A(i)는 작을 수록 좋다 -> 군집 내의 거리이기 때문에

B(i)는 크면 클수록 좋다 -> i가 속해있지 않은 군집 간의 거리이기때문에

실루엣 평균이 1에가까우면 좋고

-1에 가까우면 안좋은 것임

실루엣으로 평가할 때는 보통 2일때 실루엣 값이 가장 크다.

따라서 second Best를 보는 것이 적절하다!

 

 

728x90
반응형