로그인   |  회원가입  |  사이트맵  |  Contact Us
  아이디 저장하기
 
홈 > SAS Tech & Tip > SAS E-Miner 활용하기
[EM] 퍼지 군집모형(Fuzzy Cluster) Unsupervised Ensemble 2017.02.18
한노아 721 0
http://www.mysas.co.kr/SAS_tiptech/j_eminer.asp?b_no=7176&gotopage=1&con=subject&keyword=&cmd=content&bd_no=29&gubun=

안녕하세요 MySAS홍보대사 한노아입니다.

이번 시간에는 퍼지 군집모형을 E-miner를 통해 구현하는 방법에 대해 알아보겠습니다. 퍼지 군집의 경우 E-miner에서 직접적으로 지원하지 않기 때문에 일반 클러스터 노드와 SAS코드 노드를 이용해서 그 구현 방법을 알아 보도록 하겠습니다.

 

INTRODUCTION

오늘은 우선 퍼지군집(fuzzy cluster)의 이론적 배경을 알아보고 UCI 데이터 중 하나인 “Wine”데이터를 이용하여 실습을 진행하도록 하겠습니다. Wine데이터는 이탈리아의 동일한 지역에서 재배된 세 가지 다른 품종에서 파생 된 와인의 화학성분 분석 결과를 이용해 만들어진 데이터입니다. 따라서 관측된 화학 성분분석 결과를 토대로 3개의 품종을 얼마나 잘 분리해 낼 수 있는 지를 확인하는 것이 이번 분석의 목적입니다. 

 

FUZZY CLUSTER -LITERATURE REVIEW

퍼지군집(fuzzy clustering)모형은 K-means 모형을 퍼지집합론(fuzzy set theory)에 기반하여 확장한 개념의 군집 모형입니다. 기존의 K-means모형의 경우 각 관측치들이 군집 중심으로부터 얼마나 떨어졌는가 하는 거리와 해당 거리를 이용해 구한 해당 관측치의 군집을 얻을 수 있었다면 퍼지 모형의 경우엔 추가적으로 각 군집에 속할 확률을 얻을 수 있습니다. 

먼저 우선 각 관측단위가 m개의 변수를 갖는 x 벡터라고 가정할 때 x = (x1, x2, … , xm)으로 표현하도록 하겠습니다. 이 때 만약 전체 관측치가 n개라고 하면 전체 데이터는 xi = (xi1, xi2, … , xim)으로 표현하는 것이 가능할 것입니다. 이 관측치들을 K개의 군집 G1, G2, …, Gk 하로 나누고자 할 때, 데이터 xi가 군집 하로 분류될 가능성을 가중치 Wik로 표시하고, 가중치 0 ≤ Wik ≤ 1 로 정의 됩니다. 또한 각 군집의 가중값의 합은 1이고, 각각의 군집 Ck는 적어도 하나 이상의 데이터가 0이 아닌 가중치를 갖습니다. 

 

퍼지 군집모형에 관한 다양한 알고리즘이 존재하지만 오늘은 K-means모형과 유사한 퍼지 알고리즘을 소개하도록 하겠습니다.

 

 

Fuzzy Clustering Algorithm

1

군집의 수 K를 결정

2

퍼지분할을 위한 가중치 Wik의 초기값을 선택한다.

3

Repeat

4

각 군집의 평균을 계산한다.

5

퍼지분할을 위한 가중치 Wik를 다시 계산한다.

6

Utile(군집의 변화가 거의 없을 때까지)

퍼지군집의 이론적 배경은 k-means모형과 같이 퍼지 군집내의 오차제곱합(Sum of the squared error : SSE)를 최소화하는 것으로 생각할 수 있습니다. 퍼지군집의 각 군집의 중심을 C1, C2, … , Ck라 할 때 전체 군집의 제곱오차 SSE는 다음과 같이 정의됩니다.

 

  

식 1 : 퍼지 모형의 SSE

 

여기서 m은 1보다 큰 상수 값으로 일반적으로 계산편의를 위해 2를 많이 이용합니다. 이 값이 커지게 되면 각 군집의 평균이 전체 평균에 가까워져서 한 군집으로 데이터를 분류하는 것이 점점 더 모호해 지게 됩니다. 

 

앞서 언급했듯 퍼지군집의 경우에도 K-means와 마찬가지로 SSE를 최소화 하는 것이 목적입니다. 따라서 이를 만족 시키는 ci를 찾기 위해 식 1을 ci에 대해 편미분후 0으로 놓고 방정식을 풀면 아래와 같은 결과를 유도할 수 있습니다.

 

 

식 2 : SSE를 최소로 하는 군집의 중심 계산식

 

즉, 퍼지평균은 기존의 K-means 방법의 평균과 유사하나 각 군집의 데이터만 평균 계산에 이용하는 것이 아니라 전체 데이터를 이용하여 평균을 구하는 것이 차이가 있습니다. 또한 SSE를 최소로 하게하는 가중값을 계산하는 식 역시 위와 유사한 방법으로 아래와 같이 유도가 가능합니다.

 

  

식 3 : SSE를 최소로 하는 가중치 계산식

 

위 식에서 p = 2 로 할 경우 식이 더욱 간단해 지기 때문에 p = 2를 일반적으로 가장 많이 이용합니다. 여기서 가중값은 특정 데이터가 특정 군집에 속할 가능성을 나타내게 되고, 해당 관측치과 군집 중심 간의 거리가 짧을수록 가중값은 증가하게 됩니다. 

 

FUZZY CLUSTERING CASE STUDY

앞서 말씀드렸듯 이번 연재에서는 와인 데이터를 이용해 E-Miner에서 퍼지군집을 구현하는 방법에 대하여 알아 보도록 하겠습니다. E-Miner의 경우 별도의 옵션 또는 노드로 퍼지군집을 지원하지 않기 때문에 매크로와 군집분석 노드를 적절하게 활용하여 그 구현 방법을 알아 보겠습니다. 

 


그림 1 : 변수역할 설정

위 변수들의 경우 각 와인의 화학성분에 대한 내용이기 때문에 변수에 대한 세부설명은 하지 않겠습니다. Type을 제외한 모든 변수들은 연속형 변수로 각 분석한 와이의 화학성분을 나타내는 지표들입니다. type변수의 경우 와인의 품종을 나타내는 변수로 해당 변수의 경우 본 분석 성격상 이용하지 않겠습니다.

 


그림 2 : 다이어그램 구성

[그림 2]을 보면 알 수 있듯 우선 WINE데이터의 기본적인 기술 통계량을 DMDB노드를 이용해 살펴보고 적절한 처리가 필요한지 여부를 확인하겠습니다. 그 다음 클러스터링 노드를 통해 군집을 나누고 해당 결과의 스코어링 코드를 이용해 퍼지군집을 추출하는 작업을 이어가도록 하겠습니다.

 


그림 3 : DMDB노드 결과

[그림 3]을 보면 알 수 있듯 총 관측치의 수는 178개이고 각 변수들의 일부는 분포왜곡이 있고, 결측치는 없는 것을 알 수 있습니다. 기본적으로 SAS 군집분석 노드의 경우 표준화를 기본으로 해주기 때문에 굳이 표준화 작업을 별도로 진행하지는 않겠습니다.

 

그림 4 : 클러스터링 노드 옵션

이번 분석의 경우 와인의 종류가 3가지라는 사실을 알고 있기 때문에 클러스터의 개수를 [사용자 지정]방법을 이용해 3개로 지정해 주도록 하겠습니다. 위와 같이 설정한 뒤 군집분석 노드를 실행하면 아래와 같은 결과를 확인할 수 있습니다.

 

 


그림 5 : 군집분석 결과

[그림 5]의 [세그먼트 크기]항목을 살펴보면 비교적 군집이 고르게 나뉘어 진 것을 확인할 수 있습니다. 각 군집들의 의미를 추가로 살펴보고 싶은 경우에는 [세그먼트 프로파일링]노드를 이용하거나 위 결과 창에서 [보기] > [클러스터 프로파일] 항목의 결과들을 참고 하시면 됩니다. 

 

 


그림 6 : 퍼지클러스터 매크로 코드

우선 SAS 코드 노드를 생성하고 해당 노드에 [그림 6]과 같이 매크로와 코드를 기입해 주도록 합니다. 위 매크로 코드는 클러스터링 노드를 이용해 생성한 군집정보를 기반으로 퍼지 군집을 생성하는 코드입니다. 하지만 단독으로 사용할 수 없고, 사전에 진행한 군집분석의 스코어 코드와 함께 이용해야 합니다.

 

그림 7 : 퍼지클러스터 생성 코드

따라서 [그림 8]과 같이 퍼지클러스터를 호출하기 위한 코드가 추가로 필요합니다. 이 때 [그림 8] 코드 중간에 주석으로 “클러스터 노드의 Score 코드를 여기에 넣으세요”라고 되어 있는 부분에 사전에 실행한 클러스터 노드의 스코어 코드를 삽입하도록 합니다.

 


그림 8 : 클러스터 노드의 스코어코드

스코어 코드의 경우 [그림 9]와 같이 클러스터 노드의 [결과] > [보기] > [스코어링] > [SAS 코드]에서 확인할 수 있습니다. 이 코드를 복사하여 앞서 생성한 [SAS 코드]노드의 스코어 코드를 삽입 해야 하는 위치에 넣어 주도록 합니다.

 


그림 9 : 매크로 인수설명

각 인수들에 대한 설명은 [그림 10]의 주석을 통해 확인할 수 있습니다. 변수 M의 경우 앞서 이론부분에서 살펴본 퍼지군집 생성 함수의 p와 동일한 값입니다.

 


그림 11 : 퍼지군집 실행결과

[그림 11]은 퍼지 군집을 생성하기 위한 SAS코드 노드의 실행 결과입니다. 그림을 통해 알 수 있듯 군집분석의 결과로 거리 및 군집은 물론 각 군집에 속할 확률이 추가되어 있는 것을 알 수 있습니다. 

 

CONCLUSION

오늘 연재에서는 퍼지군집의 이론적 배경 및 구현 방법에 대해 알아보았습니다. 퍼지군집은 퍼지집합론을 기반으로 하여 k-means군집을 확장한 개념으로 각 군집에 속할 확률을 보여주는 특징을 갖고 있습니다. 실질적으로 E-miner상에서 직접적으로 퍼지군집을 생성하는 것은 불가능하지만 클러스터링 노드와 SAS 코드노드를 적절하게 이용하면 퍼지군집을 생성하는 것이 가능하다는 것을 알 수 있습니다. 퍼지군집이 갖는 가장 큰 장점은 군집분석에서 군집간의 경계면 상에 존재하는 관측치가 어떤 것인지 직접적으로 파악이 가능하고 각 관측치가 해당 군집에 속할 확률을 얻을 수 있기 때문에 좀 더 고도화된 정보를 이용해 군집의 수의 증가 또는 감소 여부등을 결정할 수 있다는 것입니다. 오늘 알아본 퍼지군집은 비지도 학습(Unsupervised learning) 앙상블 방법의 대표적인 예입니다. 다음시간부터는 계급불균형자료(imbalanced data)를 이용한 다양한 모형 적합 방법에 대해 알아보도록 하겠습니다.

 

REFERENCES

[1] http://support.sas.com/resources/papers/proceedings10/123-2010.pdf

[2] R, SAS, MS-SQL을 활용한 데이터 마이닝 / 자유아카데미 / 이정진 지음

 

 
  fuzzyCluster sas code.sas
wine.sas7bdat
다운로드 수 | 14
    
 
 [EM] Dealing with imbalanced data - 이론
 [EM] Separate models