진도 : 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
'혼자 공부하는 머신러닝+딥러닝' 카테고리의 다른 글
[혼공 학습단 10기] 혼자 공부하는 머신러닝 + 딥러닝 4주차 (0) | 2023.07.30 |
---|---|
[혼공 학습단 10기] 혼자 공부하는 머신러닝 + 딥러닝 3주차 (0) | 2023.07.30 |
[혼공 학습단 10기] 혼자 공부하는 머신러닝 + 딥러닝 2주차 (0) | 2023.07.16 |
[혼공학습단 10기] 혼자 공부하는 머신러닝 + 딥러닝 1주차 (0) | 2023.07.09 |