본문 바로가기

deeplearning

혼공머신 5주차

기본미션!

k-평균 알고리즘

k-평균 알고리즘의 기본 아이디어는 군집화(그룹으로 묶음)하는 것이다. 정답을 알려주지 않고 알고리즘이 직접 샘플들을 분류하기 때문에 비지도 학습에 속한다. 방법은 다음과 같다.

 

1. k개의 무작위 점을 정한다. 이 k는 결국 그룹의 수가 되고, 각 점이 위치한 곳이 클러스터의 중심이 된다. 

2. 클러스터의 중심에서 가까운 친구들을 해당 클러스터의 그룹으로 넣는다. (여기서 가까운 친구들이 더욱 비슷한 특성을 가진다고 본다.)

3. 2번에서 넣은 친구들의 평균값을 계산해서 클러스터 중심을 변경한다.

4. 2-4 과정을 클러스터 중심이 변하지 않을 때까지 반복한다.

 

이렇기 때문에 군집이 상대적으로 평범하게 생겼을 때 (그룹이 복잡하게 나뉘게 되면 잘 안 돌아감) 잘 돌아간다는 특징이 있다.

 

sklearn에서 코드는 다음과 같다.

from sklearn.cluster import KMeans
km=KMeans(n_clusters=3)
km.fit(x)

n_clusters가 k이다. 이 k를 잘 정해 주는 것이 중요하다. 결과는 km.labels_를 출력하면 볼 수 있는데, 여기서는 0, 1, 2와 같은 숫자로 레이블이 주어지기 때문에 분류한 클러스터에 이름을 붙여 주는 것은 또 다시 우리가 해야 한다. (km은 그냥 거리가 짧은 순으로 분류만 할 줄 안다. 그게 뭔지는 모른다.) 또한 클러스터 중심은 km.cluster_center_를 사용하면 볼 수 있다. (학습한다고 2차원으로 바꿔 놨으니까 다 시 3차원으로 바꿔야 한다!!)

 

최적의 k를 찾기 위한 방법 중 하나로 엘보 (elbow) 방법이 있다. 클러스터 개수를 늘려 가면서 그래프를 그려 보면 이너셔(거리의 제곱 합)이 꺾이는 부분이 있는데, 이 부분이 최적의 k 값이다.

 

선택미션!

주성분 분석(PCA)

 

과적합을 막기 위해서 너무 많은 특성을 줄여 주는 것이 PCA이다. 주성분은 원본 차원과 같고, 주성분으로 바꾼 데이터는 차원이 줄어든다. 코드에서는 다음과 같이 사용한다.

from sklearn.decomposition import PCA
pca=PCA(n_components=50)
pca.fit(x)

x_pca=pca.transform(x)

주성분은 pca.components_.shape에서 확인할 수 있다.

06-3번 문제

2. 변환된 데이터셋은 100개인 특성을 10개로 줄여주었으므로 (1000,10)이 된다. 

3. 가장 큰 것부터 찾기 시작하므로 첫 번째 주성분의 분산이 가장 크다.

'deeplearning' 카테고리의 다른 글

혼공머신 6주차 (+pytorch keras 비교)  (0) 2021.08.15
혼공머신 4주차 (5. 트리 알고리즘)  (0) 2021.08.02
혼공머신 3주차  (0) 2021.07.25
혼공머신 2주차  (0) 2021.07.19
혼공머신 1주차  (0) 2021.07.11