혼공단/혼공단 5기

혼자 공부하는 머신러닝 + 딥러닝 6장 - 군집 알고리즘 & k - 평균

하양훈 2021. 2. 24. 18:14
반응형

1. 군집

 

<비지도 학습>

 

- 머신러닝의 한 종류로 훈련 데이터에 타깃이 따로 없다.

- 그러므로 스스로 유용한 무언가를 찾아 학습해야 한다.

- 군집, 차원 축소등이 이에 해당한다. 

 

<군집>

 

- 비슷한 샘플끼리 그룹으로 묶는 작업

- 대표적인 비지도 학습 방법 중 하나이다.

- 군집 알고리즘에서 만든 그룹을 클러스터(Cluster)라고 부른다.

 

 

 2. k-평균

- 처음에 랜덤하게 클러스터 중심을 정하고 클러스터를 만든다. 그 다음 클러스터의 중심을 이동하고, 다시 클러스터를 만드는 식으로 반복해서 최적의 클러스터를 구성하는 알고리즘

- 클러스터 중심 : k-평균 알고리즘이 만든 클러스터에 속한 샘플의 특성 평균값. 센트로이드라고도 부른다.

 

[실습 코드]

from sklearn.cluster import KMeans

#모델 생성 및 훈련
km = KMeans(n_clusters=3, random_state=42)
km.fit(fruits_2d)

#예측값 확인
print(km.labels_)
>> [0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 2 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1]
 
 # 파악한 군집들 개수 파악
 print(np.unique(km.labels_, return_counts=True))
 >> (array([0, 1, 2], dtype=int32), array([ 91,  98, 111]))

 

<엘보우 방법>

 

- 최적의 클러스터 개수를 정하는 방법 중 하나

- 이너셔 : 클러스터 중심과 샘플 사이 거리의 제곱 합

- 클러스터 개수에 따라 이너셔 감소가 꺾이는 지점이 적절한 클러스터의 개수 k가 될수 있다.

 

[실습 코드]

inertia = []
for k in range(2, 7):
    km = KMeans(n_clusters=k, random_state=42)
    km.fit(fruits_2d)
    inertia.append(km.inertia_)

plt.plot(range(2, 7), inertia)
plt.xlabel('k')
plt.ylabel('inertia')
plt.show()

 

-  LightGBM의 경우에는 최대 손실값을 가지는 노드를 중심으로 계속해서 분할하는 '리프 중심 트리 분할(leaf-wise)' 방식을 사용한다.

- 따라서 트리가 깊어지기위해 소요되는 시간과 메모리를 많이 절약할 수 있다.

- 다만 적은 데이터에 대한 과적합(overfitting)이 발생하기 쉽다

 

 

 

<전체 소스 코드>

 

1) 군집 : http://bit.ly/hg-06-1

 

2) k-평균 : http://bit.ly/hg-06-2

반응형