혼공단 13기 머신러닝+딥러닝

[혼공머신] 5주차_챕터6. 비지도 학습

짐꾸러기 2025. 2. 15. 15:12

 

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

 

 

 

벌써 5주차!

원래 빨리빨리 업로드 해버리고 노는 편인데

이번 주에는...

주말에 올린다...

 

 

~사건의 전말~

 

방을 뒤지다가 연습장을 발견했는데

갑자기 그림 그리는거에 빠져서

 

폭풍 그림을 그리다가

공부를 못 했다...

 

그림을 잔뜩 그리고 질려서

다시 공부를 하러 왔다....

 

 

 

 

놀은 만큼 또 공부하면 그만이야~

굿!!

 

 

 

 

 


 


 

숙제


 

 

 

K-평균 알고리즘 작동 방식 설명하기

 

오늘도 손글씨로 해보았다.

오늘은 저게 뭔 소린지 영문을 모르겠는 고양이 사진 을 넣었다.

 

 


 

 

 


 

 

비지도 학습: 훈련 데이터에 타깃이 없다. 타깃이 없기 때문에 외부의 도움 없이 스스로 유용한 무언가를 학습해야 함. 대표적인 비지도 학습 작업은 군집, 차원 축소 등.
히스토리그램: 구간별로 값이 발생한 빈도를 그래프로 표시한 것. 보통 x축이 값의 구간(계급)이고 y축은 발생 빈도(도수).
군집: 비슷한 샘플끼리 하나의 그룹으로 모으는 대표적인 비지도 학습 작업. 군집 알고리즘으로 모은 샘플 그룹을 클러스터라고 부름.

 

 


k-평균: 처음 랜덤하게 클러스터 중심을 정하고 클러스터를 만듦. 그다음 클러스터의 중심을 이동하고 다시 클러스터를 만드는 식으로 반복해서 최적의 클러스터를 구성하는 알고리즘.
클러스터 중심: k-평균 알고리즘이 만든 클러스터에 속한 샘플들의 특성 평균값. 센트로이드라고도 부름. 가장 가까운 클러스터 중심을 샘플의 또 다른 특성으로 사용하거나 새로운 샘플에 대한 예측으로 활용할 수 있음.
엘보우 방법: 최적의 클러스터 개수를 정하는 방법 중 하나. 이너셔는 클러스터 중심과 샘플 사이 거리의 제곱 합. 클러스터 개수에 따라 이너셔 감소가 꺾이는 지점이 적절한 클러스터 개수 k가 될 수 있음. 이 그래프의 모양을 따서 엘보우 방법이라고 부름.

scikit-learn
KMeans는 k-평균 알고리즘 클래스.
n_clusters: 클러스터 개수를 지정. 기본값 8. 처음 랜덤하게 센트로이드를 초기화하기 때문에 여러 번 반복하여 이너셔를 기준으로 가장 좋은 결과를 선택함.
n_inlit: 반복 횟수를 지정. 기본값 10.
max_iter: k-평균 알고리즘의 한 번 실행에서 최적의 센트로이드를 찾기 위해 반복할 수 있는 최대 횟수. 기본값 200.

 

 


차원 축소: 원본 데이터의 특성을 적은 수의 새로운 특성으로 변환하는 비지도 학습의 한 종류. 저장 공간을 줄이고 시각화하기 쉽다. 또한 다른 알고리즘의 성능을 높일 수도 있음.
주성분 분석: 차원 축소 알고리즘의 하나로 데이터에서 가장 분산이 큰 방향을 찾는 방법. 이런 방향을 주성분이라 함. 원본 데이터를 주성분에 투영하여 새로운 특성을 만들 수 있음. 일반적으로 주성분은 원본 데이터에 있는 특성 개수보다 작음.
설명된 분산: 주성분 분석에서 주성분이 얼마나 원본 데이터의 분산을 잘 나타내는지 기록한 것. 사이킷런의 PCA 클래스는 주성분 개수나 설명된 분산의 비율을 지정하여 주성분 분석을 수행할 수 있음.

scikit-learn
PCA 주성분 분석을 수행하는 클래스.
n_components: 주성분의 개수 지정.
random_state: 넘파이 난수 시드 값을 지정.
components_: 훈련 세트에서 찾은 주성분이 저장됨.
explained_variance_: 설명된 분산이 저장되고, explained_variance_ratio_에는 설명된 분산의 비율이 저장됨.
inverse_transform(): transform() 메서드로 차원을 축소시킨 데이터를 다시 원본 차원으로 복원함.

 


 

 

머신러닝이 끝났다.

 

이제 좀 지도 학습에 익숙해졌다 싶으니 비지도 학습이 나와 버렸다.

타깃이 없는 훈련이라는게 너무 추상적으로 다가온다.

 

이해를 돕기 위해 저런 과일 그림으로

친절하게 설명을 해주어서

작동 방식이 이해는 갔지만......

 

저런 일이 컴퓨터 안에서 일어난다고?

하면...

 

실감이 안 난다...

 

 

역시 나중에 내가 직접 프로젝트든 뭐든 해 보면서

직접 체험해 보는 수 밖에 없을 것 같다!