본문 바로가기
AI 입문/Machine Learning

6장 - 비지도 학습

by jhwannabe 2022. 11. 30.

파이썬 코드

https://github.com/JHWannabe/self-taught_machine_learning_code.git

 

6.1 군집 알고리즘

비지도 학습(Unsupervised Learning): 타깃이 없을 때 사용하는 머신러닝 알고리즘

히스토그램

- 값이 발생한 빈도를 그래프로 표시한 것

- 보통 x축이 값의 구간(계급),  y축은 발생 빈도(도수)

 

평균값과 가까운 사진 고르기

3장에서 봤던 절댓값 오차를 사용

numpy의 abs() : 절댓값을 계산하는 함수 (ex. np.abs(-1) = 1)

 

군집(Clustering) : 비슷한 샘플끼리 그룹으로 모으는 작업

ㄴ 대표적인 비지도 학습 작업

클러스터(Cluster) : 군집 알고리즘에서 만든 그룹


6.2 k-평균

k-평균(k-means) 군집알고리즘 : 평균값을 자동으로 찾아줌

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

 

k-평균 알고리즘 작동 방식

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

 

사이킷런으로 k-평균 모델 구현

KMeans 클래스

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

 ㄴ 이 클래스에서 설정할 매개변수: 클러스터 개수를 지정하는 n_clusters

 

군집된 결과는 KMeans 클래스 객체의 labels_ 속성에 저장됨.

labels_ 배열의 길이 = 샘플의 개수

 

 

클러스터 중심

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

이 배열은 fruits_2d 샘플의 클러스터 중심이기 때문에 각 중심을 이미지로 출력하려면 100 x 100 크기의 2차원 배열로 바꿔야 함.

 

transform() 메서드 : 훈련 데이터 샘플에서 클러스터 중심까지 거리로 변환해 주는 메서드

 

 

최적의 k 찾기

k-평균 알고리즘의 단점 : 클러스터 개수를 사전에 지정해야 하는 것

 

엘보우(elbow) 방법

- 적절한 클러스터 개수를 찾기 위한 대표적인 방법

- 이너셔(inertia) : 클러스터 중심과 클러스터에 속한 샘플 사이의 거리의 제곱 합

  ㄴ 클러스터에 속한 샘플이 얼마나 가깝게 모여 있는지를 나타낸 값

- 엘보우 방법은 클러스터 개수를 늘려가면서 이너셔의 변화를 관찰하여 최적의 클러스터 개수를 찾는 방법.

- 클러스터 개수를 증가시키면서 이너셔를 그래프로 그래면 감소하는 속도가 꺽이는 지점이 있는데, 마치 팔꿈치 모양이어서 엘보우 방법이라 부름.


6.3 주성분 분석

차원과 차원 축소

- 차원(dimension) : 특성(feature, 데이터가 가진 속성)의 다른 용어

- 차원 축소: 데이터를 가장 잘 나타내는 일부 특성을 선택하여 데이터 크기를 줄이고 지도 학습 모델의 성능을 향상시킬 수 있는 방법 (비지도 학습 작업 중 하나)

 

주성분 분석(PCA, Principal Component Analysis)

- 데이터에 있는 분산이 큰 방향을 찾는 것

(2, 1)의 벡터를 주성분이라고 한다.

주성분 벡터의 원소 개수 = 원본 데이터셋에 있는 특성 개수

 

원본 데이터는 주성분을 사용해서 차원을 줄일 수 있음.

s(4, 2)를 주성분에 직각으로 투영하면 1차원 데이터 p(4.5)로 변환할 수 있음.

 

첫 번째 주성분을 찾은 다음 이 벡터에 수직이고 분산이 가장 큰 다음 방향을 찾음. → 두 번째 주성분

일반적으로 주성분은 원본 특성의 개수만큼 찾을 수 있음.

 

PCA 클래스

주성분의 개수, 배열의 첫 번째 차원이 50이라는 것.

 

주성분을 그림으로 표현.

 

주성분을 찾았으므로 원본 데이터를 주성분에 투영하여 특성의 개수를 10,000개에서 50개로 줄일 수 있음.

 

 

설명된 분산(Explained Variance)

- 주성분이 원본 데이터의 분산을 얼마나 잘 나타내는지 기록한 값

- 총 분산 비율 : 분산 비율을 모두 더한 값

 

다른 알고리즘과 함께 사용하기

사이킷런의 LogisticRegression 모델과의 혼합.

원본 데이터인 fruits_2d를 사용하고, 로지스틱 회귀 모델에서 성능을 가늠하기 위해 cross_validate()로 교차 검증 수행.

PCA로 축소한 fruits_pca를 사용했을 때와 비교.

앞서 PCA 클래스를 사용할 때 n_componenets 매개변수에 주성분의 개수를 지정함.

→ 여기서도 원하는 설명된 분산의 비율을 입력할 수 있음.

PCA 클래스는 지정된 비율에 도달할 때까지 자동으로 주성분을 찾음.

설명된 분산의 50%에 달하는 주성분을 찾도록 PCA 모델을 만듦

원본데이터를 변경하고 교차검증 결과를 확인.

 

차원 축소된 데이터를 사용해 K-평균 알고리즘으로 클러스터 찾기

차원 축소의 장점

- 데이터셋의 크기를 줄일 수 있고 비교적 시각화하기 쉬움.

- 차원축소된 데이터를 지도 학습 알고리즘이나 다른 비지도 학습 알고리즘에 재사용하여 성능을 높이거나 훈련 속도를 빠르게 만들 수 있음.

 

 

728x90
반응형

'AI 입문 > Machine Learning' 카테고리의 다른 글

5장 - 트리 알고리즘  (0) 2022.11.25
4장 - 다양한 분류 알고리즘  (0) 2022.11.11
3장 - 회귀 알고리즘과 모델 규제  (1) 2022.11.11