PCA, K-means and Hierarchical clustering
비 지도 학습(Unsupervised Learning)은 기계 학습의 일종으로, 데이터가 어떻게 구성되었는지를 알아내는 문제의 범주에 속한다. 이 방법은 지도 학습(Supervised Learning) 혹은 강화 학습(Reinforcement Learning)과는 달리 입력값에 대한 목표치가 주어지지 않는다. 위키피디아에서 가져왔습니다..
네이버에 보여주세요_고양이 편
비지도학습은 정답이 주어지지 않습니다. 마치 고양이를 닮은 동물사진만 주어질뿐 정확히 어떤 동물인지는 알려주지 않는 것처럼요. 그러면 도대체 어떻게 학습을 수행할 수 있을까요?
기계학습의 목표가 입력들이 주어졌을 경우 그 입력에 대한 결정을 하고,
새로운 입력이 들어올 경우 결과를 예측하는 모델을 만드는 것이기 때문에
이것을 가능하게 하는 프레임워크를 만들 수 있습니다.
비지도학습의 대표적인 2가지 예는 차원축소와 분류입니다. 특성이 많은 고차원 데이터를 특성의 수를 줄이면서 꼭 필요한 특징을 포함한 데이터로 표현하는 방법을 차원 축소라고 합니다. 차원 축소의 대표적인 예는 시각화를 위해 데이터셋을 2차원으로 변경하거나 이미지 데이터를 압축하는 경우가 있습니다.
분류 알고리즘은 데이터를 비슷한 것끼리 그룹으로 묶는 것을 말합니다. 예를 들면 소셜 미디어 사이트에 업로드된 사진을 분류하기 위해 같은 사람이 찍힌 사진을 같은 그룹으로 묶는 경우입니다.
이렇게 차원축소와 분류를 사용하는 이유는 데이터를 새롭게 표현하여 사람이나 다른 머신러닝 알고리즘이 원래 데이터를 보다 쉽게 해석할 수 있도록 하기위해서 입니다.
우리가 살펴볼 USArrests.csv 데이터에는 1973 년 미국 50 개 주에서 폭행, 살인 및 강간에 대한 10 만 명의 주민을 체포하는 통계가 포함되어 있습니다. 또한 도시 지역에 거주하는 인구의 비율도 제공됩니다.
지역별로 폭행, 살인 및 강간 그리고 도시지역 거주 인구비율이 제공됩니다[2] 특성별로 최대,최소값이 다르기 때문에 scale을 사용해서 전처리를 합니다[4]
# PCA (Principal component analysis)
주성분 분석(PCA)은 특성들이 통계적으로 상관관계가 없도록 데이터셋을 회전시키는 기술입니다. 먼저 성분1 이라고 쓰여 있는 분산이 가장 큰 방향을 찾습니다. 이 방향(또는 벡터)이 데이터에서 가장 많은 정보를 담고 있는 방향입니다.
다음으로 첫 번째 방향과 직각인 방향 중에서 가장 많은 정보를 담은 방향을 찾습니다. 2차원에서는 가능한 직각 방향이 하나뿐이지만 고차원에서는 많은 직각 방향이 있을수 있습니다.
2개 주성분으로 구성한 USArrests data
위 산점도는 첫 번째 주성분과 두 번째 주성분을 사용하여 만들었습니다. 주성분은 원본 데이터에 있는 어떤 방향에 대응하는 여러 특성이 조합된 형태라
그래프의 두 축을 해석하기가 쉽지않다는 단점이 있습니다.
첫번째 주성분은 Murder, Assault, Rape의 비율이 높은것으로 보아 범죄가 발생하는 도시를 기록한 것으로 보이며 두번째 주성분은 도시인구 를 담고 있는 것으로 보입니다PCA 변환은 데이터를 회전시키고 분산이 작은 주성분을 덜어내는 과정입니다.
첫번째 주성분만으로도 분산의 62%를 설명할수있습니다. 주성분을 특성수만큼 사용하면 변환후에 어떤 정보도 잃지 않게 되므로데이터를 완벽하게 재구성할 수 있습니다[32]
# K-means
분류 알고리즘은 데이터셋을 클러스터 라는 그룹으로 나누는 작업입니다. 한 클러스터 안의 데이터 포인트끼리는 매우 비슷하고, 다른 클러스터의 데이터 포인트와는 구분되도록 데이터를 나누는 것이 목표입니다.
K-평균 알고리즘은 먼저 데이터의 어떤 영역을 대표하는 클러스터 중심을 찾습니다. 그리고 나서 알고리즘은 다음 두 단계를 반복합니다.
1. 데이터 포인트를 가장 가까운 클러스터 중심에 할당
2. 클러스터에 할당된 데이터 포인트의 평균으로 클러스터 중심을 지정
클러스터에 할당되는 데이터 포인트에 변화가 없을때 알고리즘이 종료됩니다.
K-평균 알고리즘으로 찾은 세 개의 클러스터 중심(삼각형)과 클러스터 할당K-평균 알고리즘으로 클러스터를 두 개 사용했을 때와 네 개 사용했을때 의 클러스터 할당
K-평균은 클러스터 중심으로 각 데이터 포인트를 표현합니다. 이를 각 데이터 포인트가 클러스터 중심, 즉 하나의 성분으로 분해되는 관점으로 보는 것을 벡터 양자화라고 합니다.
# 병합 군집 (agglomerative clustering)
병합 군집 알고리즘은 시작할 때 각 포인트를 하나의 클러스터로 지정하고, 그 다음 특정한 종료조건을 만족할 때까지 가장 비슷한 두 클러스터를 합쳐나갑니다. 지정된 개수의 클러스터가 남을 때까지 비슷한 클러스터를 합칩니다.
병합 군집은 계층적 군집(Hierarchical clustering)을 만듭니다. 군집이 반복하여 진행되면 모든 포인트는 하나의 포인트를 가지게 됩니다. 클러스터에서 시작하여 클러스터까지 이동하게 됩니다. 각 중간 단계는 데이터에 대한 (각기 다른 개수의) 클러스터를 생성합니다. 계층 군집을 시각화하는 도구인 덴드로그램은 다차원 데이터셋을 처리할 수 있습니다.
덴드로그램에서 데이터 포인트는 맨 아래 나타납니다. 각각이 하나의 클러스터인 이 포인트들을 잎이라고 하며, 잎을 포함하는 트리가 만들어집니다.
# DBSCAN (Density-based spatial clustering of applications with noise)
특성 공간에서 가까이 있는 데이터가 많아 붐비는 지역의 포인트를 찾습니다. 이런 지역을 특성 공간의 밀집지역이라 합니다.
DBSCAN의 아이디어는 데이터의 밀집 지역이 한 클러스터를 구성하며 비교적 비어있는 지역을 경계로 다른 클러스터와 구분된다는 것입니다.
밀집 지역에 있는 포인트를 핵심 샘플이라고 하며 DBSCAN 에는 두 개의 매개변수 min_samples, eps가 있습니다. 한 데이터 포인트에서 eps 거리 안에 데이터가 min_samples 개수만큼 들어 있으면 이 데이터 포인트를 핵심 샘플로 분류합니다. eps 보다 가까운 핵심 샘플은 DBSCAN 에 의해 동일한 클러스터로 합쳐집니다.
위키피디아와 파이썬 라이브러리를 활용한 머신러닝 책을 참고했습니다.
전체코드를 포함하는 노트북은 아래 링크에 있습니다https://github.com/parksunwoo/DBSZeroToAll/blob/master/5th_week/01_PCA_Kmeans.ipynb