본문 바로가기

혼자 공부하는 머신러닝+딥러닝

[혼공 학습단 10기] 혼자 공부하는 머신러닝 + 딥러닝 5주차

 

진도 : Chapter 06

기본미션 : k-평균 알고리즘 작동 방식 설명하기

선택미션 : Ch.06(06-3) 확인 문제 풀고, 풀이 과정 정리하기

 


기본 미션

 

 

비지도학습은 머신러닝의 한 종류로 훈련 데이터에 타깃이 없다. 타깃이 없기 때문에 외부의 도움 없이 스스로 유용한 무언가를 학습해야 한다. 대표적인 비지도 학습 작업은 군집, 차원 축소 등이 있다.

 

k- 평균 알고리즘(k-Means clustering)비지도 학습군집화(Clustering)에 해당하는 알고리즘이다.

 

 

머신러닝의 종류

 

 

k- 평균 알고리즘의 작동 방식은 다음과 같다.

 

1. 무작위k개의 클러스터 중심을 정한다.

2. 각 샘플에서 가장 가까운 클러스터의 중심을 찾아 해당 클러스터의 샘플로 지정한다.

3. 클러스터에 속한 샘플의 평균값으로 클러스터 중심을 변경한다.

4. 클러스터 중심에 변화가 없을 때 까지 2번으로 돌아가 반복한다.

 

처음에는 랜덤하게 클러스터 중심을 선택하고 점차 가까운 샘플의 중심으로 이동하는 비교적 간단한 알고리즘이다.

 

평균값은 클러스터의 중심에 위치하기 때문에 클러스터 중심(cluster center)또는 센트로이드(centroid)라고 부른다.

클러스터 중심은 k-평균 알고리즘이 만든 클러스터에 속한 샘플의 특성 평균값이다. 가장 가까운 클러스터 중심을 샘플의 또 다른 특성으로 사용하거나 새로운 샘플에 대한 예측으로 활용할 수 있다.

 

 

 

k - 평균 알고리즘 간단하게 구현해보기

 

 

사이킷런의 k- 평균 알고리즘은  sklearn.cluster 모듈 아래 KMeans 클래스에 구현되어 있다.

자세한 사용법은 사이킷런 웹사이트(https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html) 참고

 

 

2차원의 넘파이 배열

import numpy as np
X = np.array([[1, 2], [1, 4], [1, 0],
             [10, 2], [10, 4], [10, 0]])

 

 

sklearn.cluster 모듈에서 KMeans 클래스를 임포트한다. 이 클래스에서 설정할 매개변수는 클러스터 개수를 지정하는 n_clusters이다. 여기에서는 클러스터 개수를 2으로 지정하였다. KMeans는 비지도 학습이므로 fit() 메서드에서 타깃  데이터를 사용하지 않는다. 

from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=2, random_state=0, n_init="auto").fit(X)

 

 

군집된 결과는 Kmeans 클래스 객체의 labels_ 속성에 저장된다. labels_ 배열의 길이는 샘플 개수와 같다.

이 배열은 각 샘플이 어떤 레이블에 해당되는지 나타낸다. n_clusters = 2으로 지정했기 때문에 labels_ 배열의 값은 0, 1 중 하나이다.

print(kmeans.labels_)

 

 

KMeans 클래스가 최종적으로 찾은 클러스터 중심은 cluster_centers_ 속성에 저장되어 있다. 

KMeans 클래스는 가장 가까운 클러스터 중심으로 예측 클래스로 출력하는 predict() 메서드를 제공한다.

print(kmeans.predict([[0, 0], [12, 3]]))
print(kmeans.cluster_centers_)

 


선택미션

 

 

확인 문제 

 

1. 특성이 20개인 대량의 데이터셋이 있습니다. 이 데이터셋에서 찾을 수 있는 주성분 개수는 몇 개일까요?

 

20개-  특성의 개수만큼 주성분을 찾을 수 있다.

 

 

2. 샘플 개수가 1,000개이고 특성 개수는 100개인 데이터셋이 있습니다. 즉 이 데이터셋이 크기는 (1000, 100) 입니다. 이 데이터를 사이킷런의 PCA  클래스를 사용해 10개의 주성분을 찾아 변환했습니다. 변환된 데이터셋의 크기는 얼마일까요?

 

(1000, 10) -  10개의 주성분을 찾아 변환하면 샘플 개수는 바뀌지 않고 특성 개수가 100에서 10으로 바뀐다.

 

 

3. 2번 문제에서 설명된 분산이 가장 큰 주성분은 몇 번째인가요?

 

첫 번째 주성분 - 주성분 분석은 가장 분산이 큰 방향부터 순서대로 찾기 때문이다.

 

 


출처

 

https://towardsdatascience.com/types-of-machine-learning-algorithms-you-should-know-953a08248861