갓생 살고 싶은 대학생 블로그
article thumbnail
혼공머신( 머신러닝 + 딥러닝 ) 5주차 미션

 

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

 

오늘은 비지도 학습의 방식 중 하나인 k평균 알고리즘을 실습해보겠다

 

k평균 알고리즘은 기본적으로 3가지 단계로 움직인다

 

1. 무작위로 k개의 클러스터 중심을 정한다2. 각 샘플에서 가장 가까운 클러스터 중심을 찾아 해당 클러스터의 샘플로 지정한다3. 클러스터에 속한 샘플의 평균값으로 클러스터 중심을 변경한다

 

클러스터 중심에 변화가 없을 때까지 2번으로 돌아가 반복하는 것이 이 알고리즘의 작동 방식이다이러한 단계들을 그림으로 나타내면 다음과 같다

 

k평균 알고리즘

1번 그림에서처럼 클러스터 중심(파란 점)을 랜덤하게 지정한 뒤 클러스터 중심에서 가장 가까운 샘플을 클러스터로 묶는다

그리고 클러스터의 중심을 조금 이동시킨다

이동시킨 다음 그 중심을 기준으로 다시 클러스터를 묶는다 (2번 그림)

 

K-평균 알고리즘 코드를 통해 확인해보았다

 

 

먼저 데이터를 불러와준다 

 

 

n_clusters는 클래스터 개수를 지정하는 매개변수이다

3으로 지정했다

 

샘플들을 확인해보면 n_clusters를 3으로 했기 때문에 0,1,2로 되어있는 것을 확인할 수 있다

 

 

각 클러스터가 어떤 이미지를 가지고 있는지를 확인하기 위한 함수를 만들어준다draw_fruits()는 (샘플 개수, 너비, 높이)의 3차원 배열을 입력값으로 받아 가로로 10개씩 이미지를 출력하는 함수이다figsize는 ratio 매개변수에 따라 커지는데, 기본값은 1이다

그리고 각 클러스터별로 샘플 이미지들을 출력한다여기서는 레이블 0, 레이블 1, 레이블 2에 각각 파인애플, 사과, 바나나가 각각 포함되어 있었다레이블0의 경우 파인애플이 대부분이었지만 바나나와 사과가 섞여있었다

 

 

KMeans가 찾은 최종 클러스터 중심은 cluster_centers_에 저장되어 있다이를 2차원 배열로 바꾸어 이미지로 출력했다

 

k평균 알고리즘은 클러스터에 속한 샘플 사이의 거리를 잴 수 있는데, 이 거리의 제곱 합을 이너셔(inertia)라고 부른다이너셔는 클러스터에 속한 샘플이 얼마나 가까이 모여 있는가를 나타내는 값으로도 볼 수 있다클러스터 개수가 늘어나면 클러스터 개개의 크기가 줄어들게 되므로 이너셔도 줄어든다

 

 

과일 데이터셋을 사용해 이너셔를 개산해보면 k=3에서 그래프의 기울기가 조금 바뀐 것을 확인할 수 있다엘보우 지점(줄어드는 지점)보다 클러스터 개수가 많아지면 이너셔의 변화가 줄어들면서 군집효과가 줄어들게 된다이 그래프에서는 명확하게 나타나지는 않은 편이다

 

선택 미션 : 06-3 확인문제 풀고 풀이과정 설명

 

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

 

답 : 20개

주성분 벡터의 원소 개수는 원본 데이터셋에 있는 특성 개수와 같기 때문에 특성이 20개인 데이터셋에서 찾을 수 있는 주성분 개수는 20개이다

 

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

 

답 : (1000,10)

기존 데이터셋의 크기는 (1000,100)이었다 이는 100개의 픽셀을 가진 1000개의 이미지이다10개의 주성분을 찾은 PCA 모델을 이용하면 이를 (1000,10) 크기의 배열로 변환할 수 있다

 

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

 

답 : 첫 번째 주성분

주성분은 가장 분산이 큰 방향이기 때문에 설명된 분산이 가장 큰 주성분은 첫 번째이다

profile

갓생 살고 싶은 대학생 블로그

@파도의 물보라

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!