머신러닝 스터디

[핸즈온 머신러닝 3판] 9장 비지도 학습

min-sk 2024. 11. 26. 11:39

 

 

9.1 군집

군집은 비슷한 샘플을 구별해 하나의 클러스터 또는 비슷한 샘플의 그룹으로 할당하는 작업이라고 정의할 수 있습니다.

 

군집은 비지도 학습입니다.

만약 이런 식으로 오른쪽과 같이 레이블이 없어서 분류 알고리즘을 사용할 수 없을 대, 군집 알고리즘을 사용할 수 있습니다. 모든 특성을 활용하여 군집 알고리즘을 통해 클러스터 세 개를 잘 구분할 수 있습니다.

군집은 다양한 애플리케이션에 사용됩니다.

1. 고객 분류: 고객을 구매 이력이나 웹 사이트 내 행동 등을 기반으로 분류할 수 있습니다.
2. 데이터 분석
3. 차원 축소 기법: 한 데이터셋에 군집 알고리즘을 적용하면 각 클러스터에 대한 샘플의 친화성을 측정할 수 있습니다.
4. 특성 공학
5. 이상치 탐지: 웹 사이트 내 행동을 기반으로 사용자의 클러스터를 만들었다먼 초당 웹 서버 요청을 비정상적으로 많이 하는 사용자를 감지할 수 있습니다.
6. 준지도 학습: 레이블된 샘플이 적다먼 군집을 수행하고 동일한 클러스터에 있는 모든 샘플에 레이블을 전파할 수 있습 니다.
7. 검색 엔진: 일부 검색 엔진은 제시된 이미지와 비슷한 이미지를 찾이줍니다. 이런 시스템을 구축하려면 먼저 데이터 베이스에 있는 모든 이미지에 군집 알고리즘을 적용해야 합니다.
8. 이미지 분할

 

이제 유명한 군집 알고리즘인 k-평균과 DBSCAN을 살펴보고 비선형 차원 축소, 준지도 학습, 이상치 탐지와 같은 애풀리케이션을 알아봅시다.

 

9.1.1 k-평균

1. K-평균 알고리즘의 개요

K-평균은 데이터를 KK개의 그룹(클러스터)으로 나누는 알고리즘입니다. 각 클러스터는 중심점(centroid)으로 정의되며, 데이터 포인트는 가장 가까운 중심점에 속하는 방식으로 클러스터가 형성됩니다.

 

2. K-평균 알고리즘의 작동 원리

  1. 초기화: 클러스터 개수 KK를 설정합니다. 그 후 KK개의 중심점을 무작위로 초기화합니다(보통 데이터 포인트 중에서 무작위로 선택).
  2. 할당 단계: 각 데이터 포인트를 가장 가까운 중심점에 할당합니다. 이때 거리는 보통 유클리드 거리(Euclidean distance)를 사용합니다.
  3. 업데이트 단계: 각 클러스터에 속한 데이터 포인트의 평균을 계산해 중심점을 업데이트합니다.
  4. 수렴 조건 확인: 중심점이 더 이상 변하지 않거나, 변화가 특정 기준 이하로 작아지면 알고리즘이 수렴했다고 판단하고 종료합니다.

 

3. k-평균 초기화

 

  • 첫 번째 중심점은 무작위로 선택합니다.
  • 이후의 중심점은 데이터 포인트와 기존 중심점 간 거리의 제곱에 비례하여 선택합니다.
  • 이렇게 초기화하면 클러스터링 품질이 향상되고 수렴 속도가 빨라집니다.

4. 적절한 KK값 선택 방법

적절한 클러스터 개수 KK를 선택하는 데 흔히 사용되는 방법으로 엘보우(elbow) 방법이 있습니다.

  1. 여러 KK값에 대해 K-평균 알고리즘을 실행합니다.
  2. KK에 대해 SSE(Sum of Squared Errors, 오류 제곱 합)를 계산합니다.
  3. SSE를 그래프로 그렸을 때, SSE의 감소율이 급격히 줄어드는 KK값을 선택합니다.

 

9.1.2 k-평균의 한계

k-평균은 특히 속도기- 빠르고 확장이 용이합니다. 하지만 여러 한계점이 존재합니다.

 

1. 클러스터 개수 KK를 미리 정해야 함

  • K-평균은 클러스터 개수 KK를 알고리즘 실행 전에 지정해야 합니다.
  • 적절한 KK값을 찾는 것은 쉽지 않은 문제이며, 잘못된 KK값은 부적절한 클러스터링 결과를 초래합니다.
  • 이를 해결하기 위해 엘보우 방법(Elbow Method)이나 실루엣 분석(Silhouette Analysis) 등을 사용하지만, 이 방법들도 최적 KK를 보장하지는 못합니다.

2. 초기 중심점 선택에 따라 결과가 달라짐

  • 초기 중심점이 랜덤으로 설정되기 때문에, 중심점의 초기화에 따라 최적해가 아닌 **지역 최적해(Local Optimum)**에 빠질 수 있습니다.
  • 이를 해결하기 위해 **K-평균++(K-Means++)**와 같은 개선된 초기화 방법이 사용되지만, 문제를 완전히 해결하지는 못합니다.

3. 구형(구조화된 형태) 클러스터만 잘 작동

  • K-평균은 각 클러스터를 중심점에서 일정 거리 내에 있는 데이터 포인트들로 정의합니다.
  • 따라서 구형(spherical) 또는 원형 데이터에 적합하지만, 클러스터가 불규칙한 모양(예: 긴 타원형, 복잡한 형태)을 가질 경우 성능이 떨어집니다.

4. 클러스터 크기와 밀도에 민감

  • K-평균은 클러스터 내 데이터 포인트의 밀도와 크기가 동일하다는 가정을 합니다.
  • 밀도가 다르거나 크기가 크게 차이 나는 클러스터에서는 정확한 결과를 얻기 어렵습니다.

 

9.1.3 군집을 사용한 이미지 분할

1. 이미지 분할이란?

이미지 분할은 이미지를 구성하는 픽셀을 그룹화하여 의미 있는 영역으로 나누는 과정입니다.

  • 목표: 이미지를 색상, 밝기, 텍스처 등과 같은 기준에 따라 비슷한 픽셀끼리 클러스터링.
  • 군집 알고리즘은 이미지의 픽셀 데이터를 처리하여 각 클러스터를 의미 있는 영역으로 분할합니다.

2. 군집을 이용한 이미지 분할의 기본 원리

  1. 이미지를 픽셀 데이터로 변환:
    • 이미지는 H×W×C 형태(높이, 너비, 채널)로 표현되며, 이를 행렬로 변환합니다.
    • NN은 전체 픽셀 수, CC는 각 픽셀의 채널(RGB의 경우 3).
  2. 픽셀 간 유사성을 계산: 픽셀 간의 유클리드 거리(Euclidean Distance)를 기반으로 군집화.
  3. 군집 알고리즘 적용:
    • K-평균을 사용하여 픽셀을 KK개의 클러스터로 나눕니다.
    • 각 클러스터는 특정 색상이나 영역으로 매핑됩니다.
  4. 결과 시각화: 각 클러스터에 고유 색상을 할당하여 분할된 이미지를 생성.

 

9.1.4 군집을 사용한 준지도 학습

1. 군집을 활용한 준지도 학습의 기본 아이디어

  • 라벨이 없는 데이터를 군집화하여 유사한 데이터끼리 그룹화.
  • 각 클러스터에 대해 가장 가까운 라벨이 있는 데이터의 레이블을 할당.
  • 할당된 라벨을 활용해 전체 데이터를 학습 데이터로 사용.

-> 이를 위해서 K-평균(K-Means) 알고리즘을 활용합니다.

1. 군집화 수행
라벨이 없는 데이터를 포함하여 모든 데이터를 군집화합니다.
2. 레이블  전파(Label Propagation)
각 클러스터에 대해 가장 가까운 라벨이 있는 데이터를 기반으로 해당 클러스터에 라벨을 할당합니다.
3. 분류 모델 학습
클러스터 기반으로 새로 할당된 라벨을 포함하여 전체 데이터를 학습 데이터로 사용해 분류기를 훈련합니다.

 

9.1.5 DBSCAN

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)은 밀도 기반 군집화 알고리즘으로, K-평균과 같은 전통적인 군집 알고리즘의 한계를 극복하는 강력한 비지도 학습 방법입니다.

 

작동 방식

1. 알고리즘이 각 샘플에서 작은 거리인 ε 내에 샘플이 몇 개 놓여 있는지 셉니다. 이 지역을 샘플의 ε-이웃이라고 부릅니다.
2. 자기 자신을 포함하여 ε -이웃 내에 적어도 min_samples개 샘플이 있다면 이를 핵심 샘플로 간주합니다. 즉, 핵심 샘플은 밀집된 지역에 있는 샘플입니다.
3. 핵심 샘플의 이웃에 있는 모든 샘플은 동일한 클러스터에 속합니다. 이웃에는 다른 핵심 샘플이 포함될 수 있습니다. 따라서 핵심 샘플의 이웃의 이웃은 계속해서 하나의 클러스터를 형성합니다.
4. 핵심 샘플이 아니고 이웃도 아닌 샘플은 이상치로 판단합니다.

 

DBSCAN의 주요 하이퍼파라미터

ϵ (eps): 각 포인트 주변의 밀도를 측정할 반경입니다. 너무 작으면 클러스터가 과분할되고, 너무 크면 클러스터가 합쳐질 수 있습니다.

min_samples (최소 포인트 개수): 핵심 포인트로 간주되기 위해 ϵ 내에 있어야 하는 최소 데이터 포인트 수입니다. 일반적으로 min_samples  ≥ 데이터 차원 수 + 1로 설정합니다.

 

9.1.6 다른 군집 알고리즘

1. 병합 군집

계층적으로 데이터를 병합하거나 분할하여 클러스터를 형성합니다. 덴드로그램(Dendrogram)**을 통해 클러스터링 과정을 시각화 가능합니다.

장점: 클러스터 개수(KK)를 미리 지정할 필요 없으며, 복잡한 형태의 클러스터 탐지 가능합니다.

단점: 계산 비용이 높아 대규모 데이터셋에 비효율적이고 이상치에 민감합니다.

 

2. BIRCH (Balanced Iterative Reducing and Clustering using Hierarchies)

대규모 데이터셋에서 효과적인 메모리 효율적 군집 알고리즘입니다. 데이터 포인트를 압축된 요약 정보(CF Tree)로 저장하고, 이를 기반으로 클러스터 형성합니다.

장점: 대규모 데이터셋에 적합하며, 메모리와 시간 복잡도가 낮습니다.

단점: 클러스터의 밀도가 균일하지 않을 경우 성능이 저하될 수 있으며, 이상치 탐지에는 약합니다.

 

3. 평균-이동

밀도 기반 알고리즘으로, 데이터 밀도가 높은 영역을 중심으로 클러스터를 형성합니다. 자동으로 클러스터 개수를 결정합니다.

장점: 비구형 클러스터를 탐지 가능하며, 클러스터 개수를 사전에 지정할 필요가 없습니다.

단점: 계산 비용이 높아 고차원 데이터에 비효율적이고 반경(대역폭) 설정에 민감합니다.

 

4. 유사도 전파

데이터 포인트 간 유사도 행렬을 기반으로 클러스터링합니다. 데이터 포인트가 클러스터 중심점으로 선택되고 클러스터를 형성합니다.

장점: 클러스터 개수를 자동으로 결정하며, 비대칭 유사도를 처리 가능합니다.

단점: 계산 비용이 높아 대규모 데이터셋에는 비효율적이며, 유사도 행렬 설계가 까다로울 수 있습니다.

 

5. 스펙트럼 군집

데이터의 그래프 표현(인접 행렬)을 사용하여 클러스터링합니다. 그래프의 라플라시안 행렬의 고유 벡터를 활용.

장점: 복잡한 클러스터 구조(예: 비구형, 비선형)를 탐지 가능하고, 다양한 커널 함수와 결합 가능합니다.

단점: 계산 비용이 높아 대규모 데이터에 비효율적이며 인접 행렬의 품질에 크게 의존합니다.