나랑 now

[혼공머신] 5주차_비지도학습 본문

혼공학습단/혼공머신

[혼공머신] 5주차_비지도학습

nowj8n 2024. 2. 5. 00:39
반응형
# 진도 기본 미션 선택 미션
1주차
(1/2 ~ 1/7)
Chapter 01 ~ 02 코랩 실습 화면 캡처하기 Ch.02(02-1) 확인 문제 풀고, 풀이 과정 정리하기
2주차
(1/8 ~ 1/14)
Chapter 03 Ch.03(03-1) 2번 문제 출력 그래프 인증하기 모델 파라미터에 대해 설명하기
3주차
(1/15 ~ 1/21)
Chapter 04 Ch.04(04-1) 2번 문제 풀고, 풀이 과정 설명하기 Ch.04(04-2) 과대적합/과소적합 손코딩 코랩 화면 캡처하기
4주차
(1/22 ~ 1/28)
Chapter 05 교차 검증을 그림으로 설명하기 Ch.05(05-3) 앙상블 모델 손코딩 코랩 화면 인증하기
5주차
(1/29 ~ 2/4)
Chapter 06 k-평균 알고리즘 작동 방식 설명하기 Ch.06(06-3) 확인 문제 풀고, 풀이 과정 정리하기
6주차
(2/5 ~ 2/12)
Chapter 07 Ch.07(07-1) 확인 문제 풀고, 풀이 과정 정리하기 Ch.07(07-2) 확인 문제 풀고, 풀이 과정 정리하기

머신러닝의 종류

 
머신러닝은 주어진 데이터 속에서 모델이 규칙을 학습하는 알고리즘에 대한 것으로 지도학습, 비지도학습, 강화학습으로 구분된다. 훈련 데이터에 타겟 데이터를 포함하는 지의 여부에 따라 지도학습과 비지도학습으로 나뉘며, 지도학습은 타겟 값을 전달하므로 '정답'을 맞추는 방법을 학습하지만 비지도학습은 데이터들이 가지고 있는 특징이나 특성을 파악하는 데 집중하게 된다.
비지도학습은 결국 비슷한 샘플을 각각의 클러스터cluster로 모아 군집clustering을 구성하여 이상치outlier을 탐지하여 모델의 성능을 개선하는 것을 목표로 한다.

데이터 클러스터링(https://github.com/rickiepark/handson-ml3/blob/main/09_unsupervised_learning.ipynb)

 
위처럼 데이터들의 특성을 분석하여 같은 특성을 공유한다고 분류할 수 있는 경우, 동일한 클러스터라고 예상할 수 있으며 그 기준은 모아진 데이터의 평균값이 된다.
물론 클러스터를 대표하는 이 평균값은 기존에 주어진 값이 아니며, 학습 알고리즘을 통해 정해진다.
이때 군집의 평균값을 구하는 알고리즘으로 k-평균 군집 알고리즘을 사용하게 된다.
 

k-평균 알고리즘k-means algorithm

작동 방식

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

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

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

 

최적의 k 찾기

k-평균 알고리즘을 사용하기 위해서는 클러스터의 개수가 될 k를 사전에 지정해야 한다.
하지만 군집 알고리즘에서 완벽한 k를 찾기 위한 방법은 없으며, 각 방법론마다 장단점이 있다.

이너셔inertia: 클러스터에 속한 샘플이 얼마나 가깝게 모여 있는지를 나타내는 값(각 샘플과 가장 가까운 센트로이드 사이의 제곱 거리의 합)
  • 엘보우elbow 방법: 클러스터 개수를 늘려가며 이너셔의 벼노하를 관찰하여 최적의 클러스터 개수를 찾는 방법
    일반적으로 클러스터의 개수가 늘어날 수록 클러스터 개개의 크기는 줄어들기 때문에 이너셔도 줄어듦

  • 실루엣 점수silhouette score: 샘플의 클러스터에 속한 다른 샘플까지의 평균 거리와 가장 가까운 다른 클러스터에 속한 샘플까지의 평균 거리를 고려한 실루엣 계수silhouette coefficient의 평균으로 k를 선택

실루엣 계수


실루엣 다이어그램silhouette diagram으로 그래프화하여 확인할 수 있음. 그래프의 높이는 클러스터가 포함하고 있는 샘플의 개수를 의미하고, 각 클러스터에 포함된 샘플의 정렬된 실루엣 계수를 나타내며, 너비가 넓을 수록 좋음
수직 파선은 각 각 클러스터 개수에 해당하는 평균 실루엣 점수를 나타내어, 샘플이 파선의 왼쪽에서 멈출수록 다른 클러스터와 너무 가깝다는 것을 의미함

실루엣 다이어그램, https://github.com/rickiepark/handson-ml3/blob/main/09_unsupervised_learning.ipynb

위 그림에서 k=4일 때는 인덱스 1의 클러스터가 매우 크고, k=5일 때는 모든 클러스터의 크기가 비슷하므로 전반적인 실루엣 점수가 높은 k=4보다 k=5를 선택하는 것이 선호된다.
 

차원 축소dimensionality reduction

특성이 많을수록 선형 모델의 성능이 높아지고 훈련 데이터에 쉽게 과대적합됨
데이터를 가장 잘 나타내는 일부 특성을 선택하여 데이터의 크기를 줄이고 모델의 성능을 향상시킬 수 있음
차원 축소 알고리즘에는 주성분 분석(PCA), 랜덤 투영(random projection), 지역 선형 임베딩(LLE, locally linear embedding), 다자원 스케일링(MDS, multidimensional scaling), Isomap, t-SNE(t-distributed stochastic neighbor embedding), 선형 판별 분석(LDA, linear discriminant analysis) 등이 있음
 

주성분 분석(PCA, principal component analysis)

주성분principal component: 원본 데이터에 있는 분산이 가장 큰 방향
주성분 벡터의 원소의 개수는 원본 데이터셋에 있는 특성 개수와 같음
일반적으로 주성분은 원본 특성의 개수만큼 찾을 수 있지만, PCA에서 차원 축소는 현재 차원 기준 주성분으로 영사(projection)하여 한 단계 더 낮은 차원으로 축소하는 것(?)

 


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

k-means 알고리즘의 학습 결과

비지도학습은 타겟 데이터에 대한 라벨 데이터(정답)을 함께 학습시키지 않는다.
학습 데이터셋의 특성들의 공통점을 찾아 주어진 k 개수만큼의 클러스터로 각각 구분하게 되는데,
이때 필요한 것이 어떻게 공통된 클래스로 묶어줄 것인지가 관건이다.
대표적인 k-평균 알고리즘은 기본적으로 사용자가 결과적으로 요하는 k개의 클러스터의 위치(센트로이드)를 임의로 할당하며 각각의 센트로이드에 대해서 샘플과의 위치를 계산한다.
이후 각 샘플에서 가장 가까운 센트로이드를 찾아 해당 센트로이드의 샘플로 포함하고, 다시 각 센트로이드에 속한 샘플과의 평균값을 찾아 클러스터의 중심을 변경한다. 클러스터의 중심 변경이 없을 때까지 샘플들의 센트로이드 지정과 센트로이드의 변경을 반복한다.
 
선택 미션
Ch.06(06-3) 확인 문제 풀고, 풀이 과정 정리하기

1. 특성이 20개인 대량의 데이터셋이 있습니다. 이 데이터셋에서 찾을 수 있는 주성분 개수는 몇 개일까요?
(1) 10개
(2) 20개
(3) 50개
(4) 100개

정답: (2) 20개
일반적으로 데이터셋에 대한 주성분 개수는 데이터셋의 특성 개수만큼 찾을 수 있다.

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

정답: (1) (1000, 10)
PCA를 통한 주성분 개수 변환은 데이터셋의 특성 변환과 관련이 있다.
100개의 특성을 10개로 줄였다면, 특성 개수에 대한 변화 외 샘플 개수에는 차이가 없다.

3. 2번 문제에서 설명된 분산이 가장 큰 주성분은 몇 번째인가요?
(1) 첫 번째 주성분
(2) 다섯 번째 주성분
(3) 열 번째 주성분
(4) 알 수 없음

정답: (1) 첫 번째 주성분
sklearn의 PCA는 가장 큰 분산의 값에 대해 직교하여 수행된다. 기존의 (1,000, 100)인 데이터셋에 대해서 PCA 클래스가 수행된다면 결국 분산이 가장 큰 주성분은 첫 번째 PCA를 수행하게 되는 첫 번째 주성분이다.
 
참고자료: 
https://product.kyobobook.co.kr/detail/S000208981368 (참고)
https://blog.mathpresso.com/mathpresso-머신-러닝-스터디-14-밀도-추정-density-estimation-38fd7ef729bb (밀도 추정에 대한 개념)
https://datascienceschool.net/03%20machine%20learning/16.02%20K-평균%20군집화.html (k-평균 알고리즘 참고)
http://www.teddynote.com/colab/colab-korean/ (맷플롯립에서 한글이 깨지는 현상이 발생할 경우 해결방법)
https://scikit-learn.org/stable/modules/decomposition.html#principal-component-analysis-pca (PCA 관련)

반응형