사망년/머신러닝

비지도 학습

stop-zero 2023. 12. 7. 13:23

차원 축소

차원의 저주(Curse of Dimensionality)

고차원 공간에서는 대부분의 데이터가 경계(테두리) 부근에 집중되는 경향이 있다. 데이터의 밀도가 낮아지고 학습이 어려워지는 문제가 발생하며 이를 해결하기 위한 적절한 전처리 기법이나 차원 축소 방법 등을 사용하여 모델을 개선해야 한다. 

  • 데이터 희소성 : 고차원 공간에서 데이터 매우 희소하게 분포한다.
  • 데이터 포인트 간 거리 증가 : 데이터 포인트들이 점점 멀어진다.
  • 학습 시간 증가와 모델 복잡성
  • 일반화 성능 감소

이로 인해 모델의 예측 불안정성이 증가하고 과대적합 위험이 커진다.

 

샘플 분포의 특징 

학습 데이터의 분포는 고차원 공간에서 균일하게 퍼져 있는 것이 아니라, 특정한 패턴이나 규칙을 따르는 경우가 많다. 이미지 데이터 같은 경우 MNIST와 같은 손글씨 숫자 데이터셋에서는 이미지 테두리는 거의 항상 검정색으로 나타나며, 숫자가 작성된 부분만 흰색 또는 그레이 스케일로 표현된다. 이것은 이미지의 많은 부분이 변화가 거의 없는 픽셀들(검은색)로 채워져 있어 차원이 크게 줄어든다는 것을 의미한다. MNIST 이미지의 대부분은 실제 숫자가 쓰인 부분과 이미지의 테두리 등에 해당하는 부분을 제외하면 상당히 작은 차원의 부분 공간에 놓여 있다고 본다.

 

투영

데이터를 저차원 부분 공간에 투영하여 새로운 특성을 만드는 방식이다. (=고차원 ->저차원)

 

매니폴드 학습

매니폴드 학습(Manifold Learning)은 고차원 데이터가 실제로 놓여 있는 저차원 매니폴드에 가깝게 있다는 가정을 기반으로 한 차원 축소의 한 방법이다. 이는 고차원 데이터가 휘어지거나 뒤틀린 모양으로 표현될 수 있으며, 국부적으로 저차원의 초평면과 유사하다는 가정이다.

매니폴드 학습은 데이터의 구조와 패턴을 더 잘 파악하기 위해 차원을 축소하는 데 사용된다. 이 가정에 따르면 고차원 데이터셋은 사실상 훨씬 더 낮은 차원의 매니폴드 공간에 가깝게 배치되어 있다는 것을 의미한다.

하지만, 모든 데이터가 매니폴드에 가깝게 위치한다는 가정은 항상 성립하지 않는다. 데이터가 저차원 매니폴드에 잘 표현되지 않을 수도 있다. 이러한 가정이 옳은지 판단하기 위해서는 데이터셋의 특성을 신중하게 분석하고, 차원 축소가 실제로 데이터의 구조를 잘 파악하고 표현하는 데 도움이 되는지 평가해야 한다.

차원 축소는 데이터의 복잡성을 줄여 학습 속도를 빠르게   있으나, 항상  나은 결과를 보장하지는 않는다. 데이터셋과 모델에 따라 차원 축소가 성능 향상에 도움이 되는 경우도 있지만, 때로는 정보의 손실이나 모델의 성능 저하를 가져올 수도 있다. 따라서 매니폴드 학습을 사용하기 전에 데이터의 특성을 신중하게 고려하고, 실제 성능 향상 여부를 검증하는 것이 중요하다.

 

PCA

PCA(주성분 분석)는 데이터의 차원을 축소하는 기법 중 하나로, 데이터의 가장 중요한 정보를 보존하면서 차원을 줄인다. 이를 위해 데이터에 가장 잘 맞는 초평면(hyperplane)을 찾고, 해당 초평면으로 데이터를 투영하여 새로운 좌표로 변환한다. PCA는 원본 데이터셋과 투영된 데이터 사이의 평균 제곱 거리를 최소화하는 방식으로 초평면을 선택한다.

PCA는 데이터의 분산을 최대한 보존하는 방식으로 주성분을 찾는다. 먼저 데이터에서 분산이 가장 큰 첫 번째 축을 찾은 후, 이 축에 직교하면서 남은 분산을 최대한 보존하는 두 번째 축을 찾는다. 그리고 이전의 두 축에 직교하는 세 번째 축을 찾는 방식으로 진행된다. 이렇게 구한 각 축은 데이터의 주성분(Principal Component, PC)이 된다.

PCA는 특이값 분해(SVD)를 사용하여 데이터의 주성분을 찾는다. SVD를 통해 주성분을 계산하고, 주성분 방향을 나타내는 단위 벡터를 찾는다. 이후 주어진 주성분의 수에 따라 데이터를 해당 주성분으로 투영하여 차원을 축소할 수 있다.

PCA 기존 방법은 전체 학습 집합을 메모리에 올려 SVD 알고리즘을 실행하는 방식이다. 하지만 학습 집합이  경우 메모리에 올리는 것이 어려울  있다. 이러한 문제를 해결하기 위해 점진적 PCA(IPCA) 사용된다. IPCA 학습 집합을 미니배치로 나눈  IPCA 알고리즘에  번에 하나의 미니배치를 주입하여 온라인으로 PCA 적용하는 방법이다.

 

클러스터링

클러스터링은 유사한 속성을 가진 데이터를 그룹화하는 작업이다.

1. 고객 분류 (Segmentation): 고객들을 유사한 행동이나 속성을 기반으로 클러스터로 나누어, 그룹 간 특성을 분석하고 상이한 전략을 적용한다.

2. 데이터 분석: 데이터를 클러스터링하여 각 클러스터의 특성을 파악하고, 해당 클러스터에서의 동향이나 특징을 이해하는 데 사용한다.

3. 차원 축소: 클러스터링을 통해 샘플을 클러스터에 할당하고, 클러스터마다의 친화성을 측정하여 데이터의 차원을 축소한다.

4. 이상치 탐지 (Anomaly Detection): 친화성이 낮은 샘플들을 이상치로 간주하여 결함이나 부정 거래 등을 감지하는 데 사용된다.

5. 준지도 학습 (Semi-Supervised Learning): 클러스터링을 통해 레이블되지 않은 데이터의 클러스터에 레이블을 할당하여 지도 학습을 보완한다.

6. 이미지 검색 엔진: 이미지를 클러스터링하여 질의 이미지와 유사한 이미지를 검색하거나 분할하여 물체의 윤곽을 감지하는  사용한다.

7. 이미지 분할(Segmentation): 색을 기반으로 픽셀들을 클러스터링하고 각 픽셀의 색을 해당 클러스터의 평균 색으로 변경하면 색상 종류가 감소되고 물체 윤곽 감지가 쉬워진다. ( =물체 탐지 및 추적 시스템)

 

K-평균

K-평균 클러스터링은 데이터를 여러 개의 클러스터로 그룹화하는 알고리즘이다. 각 클러스터는 중심이 되는 센트로이드로 표현된다. 

1. 센트로이드 초기화: 클러스터의 초기 센트로이드 위치를 무작위로 선택한다. k-평균++ 알고리즘을 사용하여 센트로이드를 초기화할 수 있다.

2. 샘플 할당: 각 샘플과 센트로이드 사이의 거리를 계산하고, 각 샘플을 가장 가까운 클러스터에 할당한다.

3. 센트로이드 업데이트: 각 클러스터에 속한 샘플들의 평균 위치를 새로 클러스터 센트로이드를 업데이트한다.

4. 반복: 센트로이드의 위치가 더 이상 변하지 않을 때까지 2번과 3번 단계를 반복한다.

 

k-평균 ++ 알고리즘은 센트로이드를 초기화하는 방법 중 하나로, 센트로이드를 멀리 떨어진 위치에서 선택함으로써 최적이 아닌 솔루션으로 수렴할 가능성을 낮춘다. 또한, 미니배치 k-평균은 전체 데이터셋이 아닌 미니배치를 사용하여 센트로이드를 이동시키는 방식으로 동작한다. 이로 인해 속도가 향상되지만 이너셔(inertia)가 약간 나빠질 수 있다. 

 

적절한 클러스터 개수(k)를 선택하는 것이 매우 중요하다. 클러스터 개수를 결정하는 데 도움이 되는 지표로는 이너셔(inertia)와 실루엣 점수(sihouette score)가 있다. 

1. 이너셔 : 각 클러스터 내 샘플과 해당 클러스터 센트로이드 간의 거리의 제곱의 합이다. 이너셔는 클러스터 내 샘플들이 센트로이드에 얼마나 가깝게 모여 있는지를 나타낸다. 그러나 클러스터 개수(k)가 증가함에 따라 이너셔는 일반적으로 감소하므로 단독으로 사용하기엔 적절한 성능 지표가 아니다.

2. 실루엣 점수 : 각 샘플의 실루엣 계수를 평균한 값이다. 실루엣 계수는 해당 샘플이 자신이 속한 클러스터 내부와 다른 클러스터와의 거리를 얼마나 잘 반영하는지를 나타낸다. 실루엣 점수는 -1에서 1 사이의 값이고 1에 가까울수록 좋은 클러스터링을 나타낸다. 

 

클러스터 개수를 결정하기 위해 실루엣 점수를 사용할 때, 실루엣 다이어그램을 그려서 각 클러스터마다의 실루엣 계수를 시각적으로 확인할 수 있다. 이를 통해 어떤 클러스터가 더 잘 형성되었는지 쉽게 파악할 수 있다.

k-평균 알고리즘은 빠르고 확징이 쉽지만, 최적이 아닌 솔루션에 수렴할 수 있으므로 여러 번 실행하여 최적의 클러스터 개수를 찾아야 한다. 또한, 클러스터의 크기나 모양에 따라 잘 작동하지 않을 수 있으며, 이를 보완하기 위해 전처리 과정에서 특성 스케일링이 필요할 수도 있다. 

'사망년 > 머신러닝' 카테고리의 다른 글

분류  (1) 2023.12.07
서울시 공공자전거 수요 예측을 위한 데이터 수집 및 통합 과정  (2) 2023.12.02
04_회귀(Regression)  (0) 2023.09.22
02_학습과 평가  (0) 2023.09.21
01_머신러닝 개요  (0) 2023.08.31