이 게시글은 김성범 교수님의 유튜브 강의를 정리한 내용입니다.
내용과 사진의 각 출처는 김성범 교수님께 있음을 미리 알립니다.
해당 게시글 강의 영상: 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가 정해져야 알고리즘을 실행할 수 있음
데이터가 주어졌을 때 군집이 몇개 있는지는 대충 알 순 있지만,(양성/음성, 불량품/양품, ... 등)
또는 덴드로그램을 통해서도 알 수 있음
데이터가 들어왔을 때 군집의 개수를 제한해줄 수도 있음! 그 방법을 우리가 알아보자..
군집화 수행 예시 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를 보는 것이 적절하다!
'공부정리 > Deep learnig & Machine learning' 카테고리의 다른 글
[딥러닝] 활성화 함수 정리 (0) | 2022.08.22 |
---|---|
[딥러닝] 활성화 함수 요약 정리 (0) | 2022.08.22 |
[핵심 머신러닝] Boosting (0) | 2022.08.12 |
[핵심 머신러닝] 뉴럴네트워크모델 2 (Backpropagation 알고리즘) (0) | 2022.08.12 |
[핵심 머신러닝]뉴럴네트워크모델 1 (구조, 비용함수, 경사하강법) (0) | 2022.08.12 |