✅ 핵심내용
데이터셋은 라벨링이 되어 있지 않은 경우, 라벨링이 되어 있는 데이터셋을 마련하기 위해 많은 인적 자원이 필요하다. 이 문제를 해결하기 위해, 라벨링이 되어 있지 않은 데이터들 내에서 비슷한 특징이나 패턴을 가진 데이터들끼리 군집화 하는 비지도학습이 제시되었다.
비지도학습(Unsupervised learning) 이란, 지도학습과 달리 training data로 정답(label)이 없는 데이터가 주어지는 학습방법이다.
비지도학습은
등 정답이 없는 데이터를 이용한 학습 전체를 포괄한다.
K-means 알고리즘은 k 값이 주어져 있을 때, 주어진 데이터들을 k 개의 클러스터로 묶는 알고리즘으로 대표적인 클러스터링 기법 중 하나이다.
전체적인 K-mean 알고리즘의 순서는 다음과 같이 구성된다.
위 과정의 자세한 코드를 아래의 GitHub 링크에 기록하였다.
GitHub Link : FD17_Unsupervised_Learning
K-means 알고리즘은 다음과 같은 상황에서는 적합하지 않은 군집화 알고리즘이다.
아래는 K-means 알고리즘이 잘 동작하지 않는 예시이다.
가운데 작은 원, 비낕쪽 큰 원 원형으로 분포되어 있는 데이터
초승달 모양의 데이터
크게 3개의 대각선 방향으로 나열되어 있는 데이터
위 과정의 자세한 코드를 아래의 GitHub 링크에 기록하였다.
GitHub Link : FD17_Unsupervised_Learning
K-means 알고리즘을 사용하여 해결하기 어려웠던 문제들을 DBSCAN 알고리즘을 활용해 해결할 수 있다.
DBSCAN(Density Based Spatial Clustering of Applications with Noise) 알고리즘 은 가장 널리 알려진 밀도(density) 기반의 군집 알고리즘 이다.
DBSCAN 의 특징은 아래와 같다.
DBSCAN 를 이해하는데 필수적인 변수 및 용어는 아래 정리했다.
DBSCAN에서는 epsilon과 minPts 값을 미리 지정해 주어야 한다.
전체적인 DBSCAN 알고리즘의 순서는 다음과 같이 구성된다.
K-means로는 잘되지 않았던 예시들이 DBSCAN에서는 어떻게 처리되는지 비교해보자.
가운데 작은 원, 비낕쪽 큰 원 원형으로 분포되어 있는 데이터
초승달 모양의 데이터
크게 3개의 대각선 방향으로 나열되어 있는 데이터
위 과정의 자세한 코드를 아래의 GitHub 링크에 기록하였다.
GitHub Link : FD17_Unsupervised_Learning
위 과정의 자세한 코드를 아래의 GitHub 링크에 기록하였다.
GitHub Link : FD17_Unsupervised_Learning
비지도학습의 대표적인 방법 중 하나로 주성분분석(PCA)이라는 차원 축소(Dimensionality reduction) 알고리즘이 있다.
차원 축소는 쉽게 말해, 우선순위를 정해서 해당 요소를 기준으로 필터링을 하고, 특정 요소는 고려하지 않는 것이다.
비지도학습에서는 데이터를 나타내는 여러 특징(feature)들 중에서 어떤 특징이 가장 그 데이터를 잘 표현(represent) 하는지 알게 해주는 특징 추출(feature extraction) 의 용도로 사용된다.
PCA는 데이터 분포의 주성분을 찾아주는 방법이다. 여기서 주성분이라는 의미는 데이터의 분산이 가장 큰 방향벡터를 의미한다.
PCA는 데이터들의 분산을 최대로 보존하면서, 서로 직교(orthogonal)하는 기저(basis, 분산이 큰 방향벡터의 축) 들을 찾아 고차원 공간을 저차원 공간으로 사영(projection) 한다.
이렇게 찾은 가장 중요한 기저를 주성분(Principal Component) 방향 , 또는 pc축 이라고 한다.
또한 PCA에서는 기존 feature 중 중요한 것을 선택하는 방식이 아닌 기존의 feature를 선형 결합(linear combination) 하는 방식을 사용한다.
scikit-learn 을 사용해서 유방암 데이터셋에 PCA 알고리즘을 적용해보자.
위 과정의 자세한 코드를 아래의 GitHub 링크에 기록하였다.
GitHub Link : FD17_Unsupervised_Learning
단 2개의 주성분 feature 만으로 분류한 PCA classifier의 정확도가 30개의 feature를 모두 사용한 original classifier보다 훨씬 높은 분류 정확도를 보인다.
feature의 수가 적더라도, 악성/양성과 관련이 깊은 중요한 feature만을 이용한 분류의 정확도가 훨씬 더 높을 수 있다.
즉, PCA는 각 feature 간 상관관계가 있고 이를 추릴 필요가 있을 때 유용하게 사용되는 비지도학습 방법이다.
T-SNE(T-Stochastic Neighbor Embedding) 는 시각화에 많이 쓰이는 알고리즘이다.
T-SNE를 이용하여 기존 차원의 공간에서 가까운 점들은, 차원축소된 공간에서도 여전히 가깝게 유지하게 만든다.
PCA 와 T-SNE 이 각각 주력하는 점은 다음과 같다.
PCA는 데이터가 가진 고유한 물리적 정보량을 보존하는데 주력
T-SNE는 고유한 물리적 정보량보다는 데이터들 간의 상대적 거리를 보존하는데 주력
scikit-learn 제공하는 MNIST 데이터를 가져와 PCA와 T-SNE를 이용하여 차원축소를 하고 시각화를 하여 비교하였다.
PCA 를 이용한 차원 축소 시각화
T-SNE 를 이용한 차원 축소 시각화
위 과정의 자세한 코드를 아래의 GitHub 링크에 기록하였다.
GitHub Link : FD17_Unsupervised_Learning
PCA와 T-SNE로 차원 축소한 시각화 결과와 뚜렷한 차이점이 보인다.
시각화한 결과를 보고 다음과 같은 PCA 와 T-SNE 의 차이점을 확인 할 수 있다.
PCA를 통해 차원축소를 하면서 발생하는 정보 손실의 과정 중에는 두 점 사이의 거리라는 중요한 정보가 함께 손실
T-SNE에서는 고차원에서 먼 거리의 두 점은 저차원에서도 먼 거리에 있음. 경계가 뚜렷이 나타나는 장점
T-SNE는 분류기의 Feature Extractor 모델이 카테고리 간 분류 경계선을 뚜렷하게 유지하고 있는지를 확인하는 용도로 자주 쓰임
출처 : AIFFEL LMS