Scikit-Learn 을 이용한 다양체 학습

Beginner

This tutorial is from open-source community. Access the source code

소개

이 실습에서는 비선형 차원 축소 (non-linear dimensionality reduction) 방법인 다양체 학습 (manifold learning) 을 탐색합니다. 차원 축소는 3 차원 이상의 데이터를 해석하기 어려운 경우, 고차원 데이터셋을 시각화하는 데 자주 사용됩니다. 다양체 학습 알고리즘은 기본 구조를 보존하는 데이터의 저차원 표현을 찾으려고 합니다.

이 실습에서는 scikit-learn 라이브러리를 사용하여 다양한 데이터셋에 다양체 학습을 수행합니다. 다양한 알고리즘을 탐색하고 성능과 출력을 비교해 봅니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접근합니다.

때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업 검증은 자동화될 수 없습니다.

학습 중 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.

Isomap

Isomap 알고리즘은 다양체 학습의 초기 접근 방식 중 하나입니다. 모든 점 사이의 지오데식 거리를 유지하는 저차원 임베딩을 찾습니다.

from sklearn.manifold import Isomap

## Isomap 알고리즘의 인스턴스를 생성합니다.
isomap = Isomap(n_components=2)

## 알고리즘을 데이터에 맞추고 데이터를 저차원 공간으로 변환합니다.
X_transformed = isomap.fit_transform(X)

Locally Linear Embedding (LLE)

Locally Linear Embedding (LLE) 는 또 다른 다양체 학습 알고리즘입니다. 데이터의 국소 이웃 내 거리를 보존하는 저차원 투영을 찾습니다.

from sklearn.manifold import LocallyLinearEmbedding

## LLE 알고리즘의 인스턴스를 생성합니다.
lle = LocallyLinearEmbedding(n_components=2)

## 알고리즘을 데이터에 맞추고 데이터를 저차원 공간으로 변환합니다.
X_transformed = lle.fit_transform(X)

t-distributed Stochastic Neighbor Embedding (t-SNE)

t-SNE 는 데이터 포인트의 친화도를 확률로 변환하는 인기 있는 다양체 학습 방법입니다. 특히 고차원 데이터를 시각화하는 데 효과적입니다.

from sklearn.manifold import TSNE

## t-SNE 알고리즘의 인스턴스를 생성합니다.
tsne = TSNE(n_components=2)

## 알고리즘을 데이터에 맞추고 데이터를 저차원 공간으로 변환합니다.
X_transformed = tsne.fit_transform(X)

결과 비교

다양한 다양체 학습 알고리즘의 결과를 비교합니다. 변환된 데이터를 시각화하여 각 알고리즘이 데이터의 기본 구조를 얼마나 잘 보존했는지 확인합니다.

import matplotlib.pyplot as plt

## 변환된 데이터의 산점도를 생성합니다.
plt.scatter(X_transformed[:, 0], X_transformed[:, 1], c=y)
plt.title('다양체 학습')
plt.xlabel('컴포넌트 1')
plt.ylabel('컴포넌트 2')
plt.show()

요약

다양체 학습은 고차원 데이터셋을 시각화하는 강력한 도구입니다. 데이터의 차원을 줄이면서 기본적인 구조를 보존하는 데 도움이 됩니다. 이 실험에서는 Isomap, Locally Linear Embedding(LLE), 그리고 t-SNE 라는 세 가지 다른 다양체 학습 알고리즘을 탐색했습니다. 이 알고리즘들을 다양한 데이터셋에 적용하고 결과를 비교했습니다. 다양체 학습을 사용함으로써 복잡한 데이터셋의 구조를 이해하고, 고차원 데이터를 더 효과적으로 분석하고 시각화할 수 있습니다.