뭐? TIL은 ML 팀블로그 쓸 때만 쓰는 거 아니냐고?
네... 맞는 거 같습니다... 매일 프로그래머스 5~10문제 풀다보니까 오답노트 쓰기가 귀찮아짐 <- 공부 안하는 사람들 특징
앞으로는 매일은 아니더라도 일주일만에 돌아오는 일은 없도록...
그리고 생각한 것은 TIL은 뭔가 나한테 설명하는 느낌(?)으로 진행하기로 했다. 왜냐면 이유는 없음.
오늘 할 내용은 바로 비지도 학습의 군집!
군집은 데이터셋을 cluster라는 그룹으로 나누는 작업. -> 한 cluster 안의 데이터 포인트끼리는 매우 비슷! 다른 cluster의 데이터 포인트와는 구분!
이 설명을 들으니 군집표본추출이 생각남... 근데 의미상 층화표본추출과 비슷하다. (군집표본추출은 군집끼리는 비슷하고 내부는 이질적이니까. 층화표본추출은 반대임.)
가장 간단하고 널리 사용하는 군집 알고리즘
데이터의 어떤 영역을 대표하는 cluster center를 찾음
두 단계 반복
데이터 포인트를 가장 가까운 cluster center에 할당
cluster에 할당된 데이터 포인트의 평균으로 cluster center을 다시 지정
cluster에 할당되는 데이터 포인트에 변화가 없을 때 알고리즘 종료
Input data: 데이터 포인트 입력
Initialization: 3개의 cluster를 찾도록 지정 -> cluster center로 삼을 데이터 포인트 3개를 무작위로 지정
Assign Points(1): 알고리즘 반복. 각 데이터 포인트를 가장 가까운 cluster center에 할당
Recompute Centers(1): 할당된 포인트의 평균값으로 cluster center 갱신
Reassgn Points ~ Recompute Center 반복
Recompute Center (3): cluter center에 할당되는 포인트에 변화가 없으므로 알고리즘 STOP!
from sklearn.cluster import KMeans
Kmeans = KMeans(n_cluster = 3)
X, y = make_moons(n_samples = 200, noise = 0.05, random_state = 0)
Kmeans = KMeans(n_cluster=10, random_State = 0)
Kmeans.fit(X)
y_pred = kmeans.predict(X)
from sklearn.cluster import AgglomerativeClustering
: 아~~주 유용한 군집 알고리즘
cluster의 개수를 미리 지정할 필요가 없음!!!!!!
from sklearn.cluster import DBSCAN
: 군집 알고리즘의 결과를 실제 정답 cluster와 비교하여 평가할 수 있는 지표들이 있음
바로바로 1(최적)과 0(무작위 분류) 사이의 값을 제공하는 ARI와 NMI
: 군집 알고리즘을 적용할 때 보통 그 결과와 비교할 타깃 값이 없음...