1-1 Scikit-learn 에 의한 K-means clustering 비지도학습

codingart(66)
Published in
#kr
Words
317
Reading
2 min
Listen
Play
7y

MNIST 수기 문자 판독이라든지 또는 Iris flowers 데이타 베이스를 사용하는 Classification 머신 러닝 문제들은 이미 정답을 알고 있는 기출문제들과 같은 성격의 지도 학습(Supervised Learning) 으로 분류된다. 지도 학습에서는 학습 데이터에 대한 정답을 알고 있으며 이 정답을 예를 들면 One-hot-code 로 엔코딩 처리하여 라벨 값을 부여하여 학습한 후에 별도의 통계학적 테스트(test or validation) 과정을 거치게 된다.

반면에 데이터는 있지만 Classification을 위한 정확한 라벨 값을 모르는 경우는 Grouping 작업 즉 Clustering 작업을 통해 Classification 처리를 하면서 라벨 값을 오히려 부여해야 한다. 클러스터링의 목적은 자연스럽게 데이터를 Grouping 하여 동일한 클러스터에 속하는 아이템들이라면 속성은 서로 비슷해야 하며 타 클러스터에 속한 아이템들의 속성과는 완전히 차별화 되어야 할 것이다.

이러한 목적 달성을 위해 클러스터링 작업에서 이미 잘 알려진 k-means 알고리듬을 사용하면서 클러스터별 아이템들의 속성이 유사함을 찾아내어 데이터의 계층적 클러스터 트리 구조를 세울 수 있어야 한다. K-means 알고리듬은 클러스터링 알고리듬 중에서도 아주 쉬우며 효율적인 기법으로서 계층구조형 (hiararchical)이나 밀도기반(density-based) 기법과는 대조적인 프로토타입 기반(prototype- based)의 클러스터링이다.

프로토타입이란 원형 또는 시제품 내지는 견본으로서 각 클러스터를 대표할 수 있는 중심(centroid, average) 이라든지 빈도수가 가장 높은 대푯값(medoid)을 의미하기도 한다. k-means 알고리듬은 공 모양의 클러스터를 찾아내는데 좋긴 하지만 처음부터 몇 개의 클러스터를 지정할 것인지 설정하고 들어가야 하는 약점도 있다. k 값을 잘못 선택하면 클러스터링이 엉망이 되기도 하는데 이럼 문제점 들을 해결하기 위한 엘보우 기법이나 실루엣 작도법도 차후에 소개하기로 한다.

K-meams 클러스터링은 고차원형 데이터에도 적용이 가능하지만 시각적인 이해를 돕기 위해서 Scikit-learn 라이브러리 모듈인 make_blobs 을 사용하면서 2차원형 데이터 예제를 살펴보자. blob 이란 비누방울처럼 방울들이 많이 생겼을 때 볼 수 있는 모양을 뜻한다.

다음 예제는 샘플 수가 150개이며 2개의 평면 좌표형 feature를 가지면서 센터를 3개로 처리하기로 한다. 클러스터의 표준 편차는 0.5 로 하고 데이터 순서는 셔플을 허용하기로 하며 랜덤성은 없다고 가정한다. 데이터를 import 한 후에 matplotlib 를 사용하여 작도해 보자. 머린 러닝 예제에서 데이터를 읽어 올 경우 대체로 학습용과 테스트용으로 나누는 것이 보통이다. 여기서도 X 와 y 로 처리하는데 X는 라벨이 없는 데이터 인데 y 가 무엇인지 앞으로 알아보기로 한다.
noname01.png

다음 url 주소로 이동하여 첨부된 코드 와 함께 마저 읽어 보십시오.
http://blog.daum.net/ejleep1/869

![마나마인로고.png]

1-1 Scikit-learn 에 의한 K-means clustering 비지도학습 | Ecency