My Data Story
[차원 축소] t-SNE 본문
◈ '차원 축소' 목차 ◈
6. t-SNE
사이킷런은 다양한 차원 축소 알고리즘을 제공한다. 다음은 그 중 널리 사용되는 알고리즘이다.
1. 랜덤 투영 random projection
◎ from sklearn.random_projection import SparseRandomProjection
랜덤한 선형 투영을 사용해 데이터를 저차원 공간으로 투영한다.
이런 랜덤 투영이 실제로 거리를 잘 보존한다고 한다.
차원 축소 품질은 샘플의 수, 목표 차원 수에 따라 다르다.
하지만 놀랍게도 초기 차원 수에는 의존적이지 않다.
▶ sparseRandomProjection클래스 구현에 대해 더 자세히 알고 싶다면 >> 참고 URL - sparseRandomProjection
2. 다차원 스케일링 Multi Dimensional Scale (MDS)
◎ sklearn.manifold import MDS
샘플 간의 거리를 보존하면서 차원을 축소한다.
즉 샘플 간의 거리 데이터만 주어졌을 때, 그 거리를 재현하는 것처럼 좌표계를 역산하는 방법으로 그 거리를 보존하면서 축소된 좌표 공간 상에 표현한다.
▶ MDS클래스 구현에 대해 더 자세히 알고 싶다면 >> 참고 URL - MDS
3. Isomap
◎ from sklearn.manifold import Isomap
각 샘플을 가장 가까운 이웃과 연결하는 식으로 그래프를 만든다.
그런 다음 샘플의 지오데식 거리를 유지하면서 차원을 축소한다.
PCA와 MDS의 특징을 결합하여 모든 점 사이의 측지선 거리를 유지하는 더 낮은 차원의 임베딩을 추구한다.
step1. 인접한 이웃 그래프 구축
어떤 점들이 매니폴드 상에서 서로 가까이 위치하는 지 측정한다.
(방법1) 특정 epslion 이하인 점들끼리 연결
(방법2) 가까운 k개 연결하여 knn 기법 적용
step2. 두 점간의 최단 경로 그래프 계산
step3. MDS 방법론 사용하여 d차원의 임베딩 구축
샘플 간의 거리를 보존하여 축소된 차원의 좌표 공간에 표현한다.
▶ Isomap클래스 구현에 대해 더 자세히 알고 싶다면 >> 참고 URL - Isomap
4. t-SNE
◎ from sklearn.manifold import TSNE
비슷한 샘플은 가까이, 비슷하지 않은 샘플은 멀리 떨어지도록 하면서 차원을 축소한다.
주로 시각화에 많이 사용되며 특히 고차원 공간에 있는 샘플의 군집을 시각화할 때 사용된다.
PCA와 달리, 군집이 중복되지 않는다. (그래서 시각화에 유용) 지역적인 구조도 잘 잡고 글로벌적인 특징도 놓치지 않는다.
하지만 매번 실행할 때마다 임의로 데이터 포인트를 선정하기에 축의 위치가 계속 변해 모델 학습용으로 안 좋다.
SNE 란, 고차원 공간 상에서 유클리드 거리를 포인트들간의 유사성으로 포현하여 조건부 확률로 변환하는 방법이다.
SNE 알고리즘 계산을 위해, 고차원 공간의 데이터 포인트간의 거리 정보를 보존하는 저차원 공간의 데이터 포인트를 정의해야 한다. 잘 보존되었다면, 고차원 상의 조건부 확률값과 저차원 상의 조건부 확률 값이 동일할 것이다.
두 확률분포의 유사도를 측정하는 kL-divergence 를 최소로 하도록 학습을 진행한다.
이때 저차원 상의 조건부 확률 계산 시, t-분포를 적용한 것이 t-SNE 방식이다.
▶ tsne클래스 구현에 대해 더 자세히 알고 싶다면 >> 참고 URL - tsne
5. 선형 판별 분석 Lineear Discriminant Analysis
◎ from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
사실 분류 알고리즘이다. 하지만 훈련 과정에서 클래스 사이를 가장 잘 구분하는 축을 학습한다.
이 축은 데이터가 투영되는 초평면을 정의하는데 사용할 수 있다.
이 알고리즘의 장점은 투영을 통해 가능한 한 클래스를 멀리 떨어지게 유지시키므로 SVM 분류기 같은 다른 분류 알고리즘을 적용하기 전에 차원을 축소시키면 좋다.
■ 접근1
LDA는 데이터를 특정 한 축에 투영하여, 두 클래스를 잘 구분할 수 있는 직선(결정 경계)를 찾는 것이다.
이때 LDA의 결정 경계는 투영축에 직교하는 선이다.
LDA 는 몇 가지 가정 사항이 존재한다.
첫 번째, 각 클래스는 정규 분포 형태의 확률 분포를 갖는다.
두 번째, 각 클래스는 비슷한 공분산을 갖는다.
두 클래스를 잘 구분한다는 것은 투영 후, 두 범주의 중심(평균)이 멀고 분산이 작도록 해야 한다. (두 클래스가 서로 겹치면 안되니깐)
이를 반영한 LDA 목적 함수 J(W)는 다음가 같다.
J(W)를 최대화하는 W축(투영축) 을 구한다. (W축을 이용해 투영되는 초평면을 정의하는데 사용할 수도 있다.)
이후 새로운 데이터에 대해 분류할 때, 새로운 데이터를 사영시킨 Wt*X_new 값을 바탕으로 C1과 C2 클래스 중 분류한다. Wt*X_new 이 일정값 이상이면 C1 클래스로, Wt*X_new이 일정값 미만이면 C2 클래스로 할당한다.
■ 접근2
베이지안 정리를 활용하여 클래스를 분류하는 문제에서 활용되기도 한다.
▶ LinearDiscriminantAnalysis 클래스 구현에 대해 더 자세히 알고 싶다면 >> 참고 URL - LinearDiscriminantAnalysis
'Machine Learning > 3. 비지도 학습 알고리즘' 카테고리의 다른 글
[군집] DBSCAN (0) | 2023.08.19 |
---|---|
[군집] K-평균 (0) | 2023.08.19 |
[차원 축소] 지역 선형 임베딩 LLE (0) | 2023.08.19 |
[차원 축소] 커널PCA (0) | 2021.08.13 |
[차원 축소] PCA, 랜덤 PCA, 점진적 PCA (0) | 2021.08.13 |