본문 바로가기

R & ADsP

ADsP :: R 이론부터 실전까지 한번에 보기<군집분석>

by m_ahh 2017. 6. 19.
반응형

ADsP를 준비하며 정리했던 자료들이다. 2017년이 되면서 교재가 개정되었다고 하는데, 어떻게 개정된 지는 모르겠다. 내가 정리 한 것들은 2017년 개정판을 기준으로 참고하였고, 다른 기타 인터넷자료들과 위키백과 등을 참고하여 정리했다. 카테고리(절,번호 등) 구분은 2017개정판 데이터분석 전문가 책(그 두꺼운 5만원 상당의 책) 기준으로 되어있다.



3절 군집 분석(1)


-군집분석  :  군집분석이란  관측된 여러 변수값에서 n개 의 개체를 유사한 성격의  몇몇 군집으로 집단화한 다음,  각 군집들의 특성을 파악하여  그 사이의 관계를 분석하는 것이다.

-특징반응변수가 요구되지 않고, 각 개체의 유사성에만 기초하여 분석이 가능하다. 자료의 이상값 탐지에 사용하며, 심리학, 사회, 생물, 경영학 등에서 쓰이고 있다. 군집화의 방법에는 계층적 군집, 분리군집, 밀도 기반 군집, 모형기반군집, 격자기반군집, 커널기반군집, som 방법 등이 있다.

 


1.계층적 군집

 계층적 군집분석가장 유사한 개체를 묶어 나가는 것을 반복하여 원하는 개수의 군집을 형성하는 것이다. 결과는 계통도나 덴드로그램 형태로 나타나며, 각 개체는 한 군집에만 속할 수 있다. 

 장점으로는 군집간의 구조적 관계를 쉽게 파악 할 수 있다는 것이 있으며, 군집간의 거리를 파악하고 유사정도를 파악할 수 있다. 따라서 계층적 군집 분석은 계층간의 거리나 비유사성을 바탕으로 진행되므로, 거리를 어떻게 정의하느냐를 파악할 필요가 있다. 대표적인 거리 정의 방법에는 유클리드거리, 맨하튼거리, 민코우스키거리, 표준화거리, 마할라노비스거리 등이 있다. 그 자세한 예는 데이터분석전문가 책 페이지 512를 참고하면 된다. 시험칠때는 유클리드거리 정도만 알아도 될 것 같다.

 계층적 군집 모형의 특징으로는 군집을 형성하는 매 단계 지역적 최적화를 수행한다는 것이고, 그 결과가 전역적인 최적해를 이룬다는 것이다. 여러가지 연결법이 존재하며, 군집 크기에 가중을 두어 병합을 시도할 수도 있고, 큰 군집과 병합이 유도될 수 도 있다. 


계층적 군집분석 방법에는 크게 2가지가 있다.

첫 번째는 "병합적 방법" 으로 작은군집에서 시작해나가서 종료조건까지 시행하는데, 매 단계 모든 그룹쌍의 거리를 계산해 가까운 순으로 병합한다. 거리가 가까울 수록 유사성이 높게 나타난다. 

R > hclust 패키지, cluster패키지의 agnes(), mclust() 함수


두 번째는 "분할적 방법" 이다. 큰 군집에서 시작해 군집을 분리해 나간다.   

R > cluster패키지의 diana(),mona()함수 




 이렇게 군집을 형성하고나면, 군집간의 거리를 통해 유사성을 파악하기도 하는데, 군집간의 거리를 측정하는 것도 여러 방법이 있다. 이를 5가지로 구분할 수 있고, 자격증 시험을 위해서 모든 방법에 대해 확실히 구분하고, 익히는 것이 좋겠다. 그 방법으로는 최단연결법(두 군집사이의 거리를 최소로 측정), 최장연결법(두 군집사이의 거리를 최장형태로 측정), 중심연결법(두 군집간의 중심거리를 측정), 평균연결법(모든 항목의 평균을 구하면서 측정), 와드연결법(군집간의 오차제곱항에 기초하여 군집 수행)이 있다. 

   


 

2.k-평균 군집 : k-means clustering

 k 평균 군집 이란, 원하는 군집 k 개의 초기값을 지정하고, 가까운 초기값을 할당하여 군집을 형성 한 뒤에, 평균을 다시 계산하여 초기값을 갱신하는 것이다. 그 다음, 갱신 된 값에 대해 할당과정을 반복하여 최종 k개의 군집을 형성하게 된다.

 k초기값의 수는 미리 지정하여야 하고, 초기 중심값은 무작위로 선택하는 것이 편리하다. 또한 k평균 군집은 매 단계 오차제곱합 최소화 방향으로 군집을 형성하는 알고리즘으로 간주한다.(부분최적화). 따라서 안정된 군집은 보장하나 전체적 최적을 보장하지 못한다는 단점이 있다.

 장점으로는 알고리즘이 단순하고 빨라서 계층군집보다 많은 양을 처리할 수 있고, 단점으로는 잡음이나 이상값에 영향을 많이 받고, 블록형태의 군집이 아니라면 성능이 현저히 떨어진다. 

 또한 이 군집분석을 행하는 패키지와 많은 함수들이 있으니 직접 해보면서 익히도록 하자!


k평균군집  R>kmeans{stats}, kcca{flexclust}, cclust{flexclust}, cclust{cclust}, kmeans{amap}

k중앙값군집 R> pam()함수

적절한 군집수 얻기 R> Nbclust 패키지


 k평균군집의 알고리즘 의 과정도 알아놓으면 시험에 도움이 된다. 간략히 말하면 초기군집 중심으로 k개의 객체를 임의 선택한 뒤, 가까운 군집중심헤 할당하고, 각 군집 자료 평균계산하여 군집중심을 갱신하게 된다. 군집 중심의 변화가 없을때 까지 이 과정을 반복하고 군집을 최종 형성시킨다. 군집 분석 수행전 미리 이상값을 제거하는 것도 좋은 방법이고, 임의의 초기값에 따라 결과가 달라지는 것을 방지하기 위해 set.seed() 함수를 많이 쓴다. 


반응형

댓글