- 출처
- 되도록이면 책의 내용과 코드를 그대로 옮기기 보다는 요약과 보충설명!
읽기전에
개념 정리
능동 학습
- 전문가가 학습 알고리즘과 상호작용하여 알고리즘이 요청할 때 특정 샘플의 레이블을 제공
불확실성 샘플링
- 우선 예측하고, 모델이 가장 불확실하게 예측한 샘플에 대해 전문가가 레이블을 붙임.
- 그리고 다시 반복..
가우시안 분포(Gaussian Distribution)
= 정규 분포(Normal Distribution)
python 정리
9장 비지도 학습
군집(clustering)
: 비슷한 샘플을 구별해 하나의 cluster 또는 비슷한 샘플의 그룹으로 할당하는 작업
- 활용
: 고객 분류, 데이터 분석, 차원 축소 기법, 이상치 탐지, 준지도 학습, 검색 엔진, 이미지 분할
k-평균(로이드-포지 알고리즘)
- 각 클러스터의 중심(센트로이드)을 찾고, 가장 가까운 클러스터에 샘플을 할당
KMeans
- 하드 군집: 샘플을 하나의 클러스터에 할당
- 소프트 군집: 클러스터마다 샘플에 점수를 부여
작동원리
- 처음부터 센트로이드 혹은 샘플의 레이블이 주어진다면 쉽게 찾을 수 있지만.. 둘다 주어지지 않는다면?
- 센트로이드 랜덤하게 지정(초기화)
- 샘플에 레이블 할당
- 센트로이드 업데이트
- 센트로이드에 변화가 없을 때까지 2와 3을 반복..
센트로이드 초기화 방법
- 센트로이드 업데이트와 샘플 레이블 할당을 반복하다가, 운이 나쁘면 나쁜 성능으로 수렴됨..
- 따라서, 처음부터 센트로이드를 그럴듯한 위치에 지정하는게 중요함.
- 여러 방법들..
- 다른 군집 알고리즘으로 센트로이드 위치의 근사값 구함
- 여러 번 알고리즘을 실행하여 가장 좋은 성능을 선택
- 2번 방법일 경우, 성능 지표
- 이너셔(innertia): 각 샘플과 가장 가까운 센트로이드 사이의 제곱 거리 합
score()
: 이너셔에 음수를 취해서 반환
- k-평균++ 알고리즘: 이미 선택한 센트로이드와 멀리 떨어진 샘플을 다음 센트로이드로 선택할 가능성을 높혀서 초기화
k-평균 속도 개선과 미니배치 k-평균
- 삼각부등식을 사용하여 거리 계산을 줄임
- 샘플과 센트로이드 사이의 거리를 하한선과 상한선을 유지시킴
- 미니배치: 알고리즘 속도 증가, 대량의 데이터셋 가능
- 그러나, 일반 k-평균 알고리즘보다는 이너셔가 나쁨
최적의 클러스터 개수 찾기
- 엘보우 메소드: 이너셔가 빠르게 감소하다가 둔감화되는 지점을 찾자
- 실루엣 점수: 모든 샘플에 대한 실루엣 계수의 평균. -1~+1
silhouette_score()
- 실루엣 다이어그램
k-평균의 한계
- 장점
- 단점
- 최적의 성능을 찾으려면 알고리즘을 여러번 돌려야함
- 클러스터 개수 지정
- 클러스터의 크기나 밀집도가 서로 다르거나, 원형이 아닐 경우 잘 작동하지 않음(타원형 클러스터에는 가우시안 혼합 모델이 좋음)
- 입력 특성의 스케일을 맞추어야함
군집을 사용한 이미지 분할
- 예를 들어, 한 색상이 여러 분포가 있다면. 그 색상을 하나의 컬러 클러스터로 만듦. 그리고 그 픽셀의 컬러 클러스터의 평균 컬러를 찾아서 모두 바꿈.
군집을 사용한 전처리
- 데이터셋의 차원을 줄일 수 있음
- 예:
n_clusters=50
으로 지정(k=50)하여, 8 * 8 (=64)에서 50으로 감소
군집을 사용한 준지도 학습
- 레이블이 없는 데이터가 많고, 레이블이 있는 데이터는 적을 때
- 예를 들어, 이미지 데이터의 훈련 세트 n=50일때, 50개의 클러스터를 구한 뒤 센트로이드에서 가장 가까운 샘플을 찾음. 이 샘플이 곧 대표 이미지가 됨. 그리고 수동으로 이들에게 레이블 할당
- 더 나아가, 레이블 전파
- 대표 이미지를 동일한 클러스터에 있는 샘플에 적용
DBSCAN
- 각 샘플에서 입실론 거리내에 있는 샘플의 개수를 세고, 그들을 핵심 샘플로 간주.
- 핵심 샘플의 이웃은 동일한 클러스터.
- 이런 방식으로 계속 하나의 클러스터를 형성.
- 핵심 샘플도 아니고, 이웃도 아닌 샘플은 이상치로 판단
특징
predict()
가 없고, fit_predict()
만 제공. 즉 새로운 샘플에 대해 클러스터를 예측할 수 없음
- 클러스터 모양과 개수에 구애받지 않음
- 클러스터 간의 밀집도가 비슷해야함
- 계산 복잡도: 샘플 개수에 선형적으로 증가
다른 군집 알고리즘
병합 군집
BIRCH
평균-이동
유사도 전파
스펙트럼 군집
가우시안 혼합 모델(GMM)
- 가정: 샘플이 파라미터가 알려지지 않은 여러 개의 혼합된 가우시안 분포에서 생성되었다.
원리
- hard 군집(
predict()
), soft 군집(predict_proba()
)
기댓값-최대화(EM, expectation-maximization) 알고리즘
- 기댓값 단계: 샘플을 클러스터에 할당(soft 방식)
: soft, 즉 클러스터에 속할 확률로 가중치가 적용되며, 이 확률을 '샘플에 대한 클러스터의 책임'이라 부름
- 최대화 단계: 클러스터 업데이트
특징
- 하나의 가우시안 분포에서 생성된 모든 샘플은 하나의 클러스터를 형성. - 보통은 타원형
- 그러나 어떤 분포인지, 파라미터는 무엇인지 알 수 없음
GaussianMixture
- 생성 모델: 모델에서 새로운 샘플을 만들 수 있음
- 샘플이 위치한 곳에서의 모델의 밀도 추정 가능
score_samples()
: 확률 밀도 함수(PDF)의 로그 예측
단점
- 클러스터의 개수를 지정해야함
- 특성이나 클러스터가 많을 경우, 샘플이 적을 경우에 EM 알고리즘의 최적의 성능으로 도출되지 않는다.
- 해결방안: 파라미터 개수 제한:
covariance_typy
이상치 탐지
- 밀도가 낮은 지역에 있는 모든 샘플 = 이상치
- precision과 recall의 tred-off 관계
- 특이치 탐지와의 차이점?
클러스터 개수 선택
- 이론적 정보 기준(BIC, AIC)을 최소화하는 모델 선택
베이즈 가우시안 혼합 모델
-BayesianGaussianMixture
- 가정: 데이터에 대한 최소한의 정보(즉, 최적의 클러스터 개수)를 가지고 있다.
특징
- 클러스터 파라미터는 잠재 확률 변수로 취급된다.
- 새로운 샘플이 작은 클러스터보다 큰 클러스터에 합류할 가능성이 높다.
- 타원형 클러스터에 잘 작동하지만, 다른 모양에는 잘 작동하지 않는다.
수학적인 건......아직은..ㅠㅠ
이상치 탐지와 특이치 탐지를 위한 다른 알고리즘
- PCA
- Fast-MCD
- 아이솔레이션 포레스트
- LOF
- one-class SVM
질문
- 337p. BIC, AIC는 왜 학습할 파라미터가 많은(클러스터가 많은) 모델에게 벌칙을 가할까요? 최대한 적은 클러스터로 나누되 데이터에 잘 맞는 모델을 찾기 위해서인가요?