My Log

[ADsP #12] 데이터 분석 3장 - 정형 데이터 마이닝(2) 본문

자격증 기록/ADsP(데이터분석 준전문가)

[ADsP #12] 데이터 분석 3장 - 정형 데이터 마이닝(2)

My Log 2019. 8. 29. 19:13

* 시작하기에 앞서 본 게시물에 포함된 내용은 한국데이터산업진흥원에서 발행한 [데이터 분석 전문가 가이드, 2019년 2월 8일 개정]

   에 근거한 것임을 밝힙니다.

 

 

1. 군집 분석

     - 군집 분석은 관측값들을 유사한 성격을 가지는 몇 개의 군집으로 집단화하고, 군집의 특성을 파악하여 군집사이의 관계를

       분석하는 다변량분석 기법이다.

 

     1) 계층적 군집

          - 가장 유사한 개체를 묶어 나가는 과정을 반복하여 원하는 개수의 군집을 형성하는 방법

          - 군집을 형성하는 매 단계에서 지역적 최적화를 수행해 나가는 방법(전역적인 최적해라고 볼 수 없음)

          - 계층적 군집의 결과는 덴드로그램의 형태로 표현

             (* 덴드로그램을 통해 항목간의 거리, 군집간의 거리를 알 수 있고, 항목간 유사정도를 파악하여 견고성을 해석할 수 있다.)

 

 

<덴드로그램, 출처:위키피디아>

 

 

          - 계층적 군집을 형성하는 방법

             ㄱ) 병합적 방법

                    - 작은 군집에서 출발하여 거리가 가까운 순으로 병합해 나가는 방법

                    - R에서 agnes(), mclust() 함수를 이용한다.

 

             ㄴ) 분할적 방법

                    - 큰 군집에서 출발하여 군집을 분리해 나가는 방법

                    - R에서 diana(), mona() 함수를 이용한다.

 

          - 군집 간 거리

             ㄱ) 수학적 거리 : 유클리드 거리, 맨하튼 거리, 민코우스키 거리

             ㄴ) 통계적 거리 : 표준화 거리, 마할라노비스 거리

 

 

          - 군집 간 거리측정 방법

             ㄱ) 최단연결법(단일연결법)

                    - 각 군집에서 관측값을 뽑았을 때 나타날 수 있는 거리의 최소값을 군집간 거리로 한다.

                    - 사슬 모양으로 생길 수 있음

                    - 고립된 군집을 찾는데 중점을 둔 방법

 

             ㄴ) 최장연결법(완전연결법)

                    - 각 군집에서 관측값을 뽑았을 때 나타날 수 있는 거리의 최대값을 군집간 거리로 한다.

                    - 군집들의 내부 응집성에 중점을 둔 방법

 

             ㄷ) 중심연결법

                    - 두 군집의 중심간 거리를 군집간 거리로 한다.

                    - 군집이 결합될 때, 새로운 군집의 평균은 가중평균을 통해 구해진다.

 

             ㄹ) 평균연결법

                    - 모든 항목에 대한 거리 평균을 구하면서 군집화를 수행한다.

                    - 계산량이 불필요하게 많아질 수 있다.

 

             ㅁ) 와드연결법(ward linkage)

                    - 군집내의 오차제곱합에 기초하여 군집을 수행한다.

                    - 군집이 병합되면 오차제곱합은 증가하는데, 증가량이 가장 작아지도록 군집을 형성한다.

                    - 크기가 비슷한 군집끼리 병합하게 되는 경향이 있다.

 

          - R에서의 계층적 군집 분석

             > d <- dist( data,  method="euclidean" )                 # 거리 행렬을 제공하는 함수

 

             > h <- hclust( d,  method="ave" )             # hclust() : 계층적 군집 분석 수행

                                                                                            # method : 군집간 거리측정 방식 지정

 

             > plot(h)                  # 덴드로그램으로 시각화

 

             > cutree(h,  k=6)            # 계층적 군집 결과를 원하는 그룹의 수(k)로 나누어 볼 수 있다.

                                                          # rect.hclust() 함수를 통해 원하는 그룹수로 나누어 시각화가 가능하다.

 

 

     2) k-평균 군집

          - k-평균 군집 알고리즘

             ① k개의 객체를 임의로 선택하여 군집의 중심으로 삼는다.

             ② 가장 가까운 중심으로 각 개체를 할당한다. (오차제곱합이 최소가 되도록)

             ③ 각 군집의 중심을 갱신한다.

             ④ 군집 중심의 변화가 거의 없을 때까지 ②~③ 과정 반복

 

<k-평균 군집 알고리즘, 출처:위키피디아>

 

 

          - 특징

             * 군집의 수(k)는 미리 정해야 한다.

             * 초기 중심점들은 멀리 떨어져 있는 것이 바람직하며, 초기값에 따라 군집 결과가 크게 달라질 수 있다.

             * 매 단계마다 오차제곱합을 최소화하는 방향으로 군집이 형성되는 탐욕적 알고리즘이다.

             * 안정적 군집이 보장되나, 최적을 보장하지는 못한다.

 

          - 장점

             * 알고리즘이 단순하여 빠르게 수행

             * 계층적 군집보다 많은 양의 자료를 다룰 수 있음

 

          - 단점

             * 군집의 중심 계산 과정에서 잡음이나 이상값에 영향을 많이 받음 (k-중앙값군집으로 보완)

             * 볼록하지 않은 군집이 존재할 경우 성능이 떨어짐 (ex. U-형태의 군집)

 

          - R에서의 k-평균 군집 수행

             > kmeans(data, 군집수)    or     kcca()     or   cclust()                 # k-평균 군집 수행

             > plot()         # 시각화

             > table()       # 정오분류표

 

 

     3) 혼합 분포 군집

          - 데이터가 k개의 모수적 모형(군집)의 가중합으로부터 나왔다는 가정

          - 각 데이터는 k개의 추정된 모형 중 어느 모형에 속할 확률이 높은지에 따라 분류

 

<혼합 분포모형으로 설명할 수 있는 데이터, 출처:위키피디아>

 

 

          - 자료로부터 모수와 가중치를 추정하는 방법을 사용 (EM 알고리즘)

              → EM 알고리즘 : 모집단을 구성하는 각 집단의 분포는 정규분포를 따른다고 가정

                                              각 자료가 어느 집단에 속하는지에 대한 정보를 '잠재변수 Z'라 한다.

 

                                              ① E-단계 : 잠재변수 Z의 기대치 계산

                                              ② M-단계 : Z의 기대치를 이용하여 파라미터를 추정

                                              ③ E~M 단계를 반복하며 모수 추정치에 수렴하는 값을 얻는다.

 

<EM알고리즘의 매개변수 추정과정, 출처:위키피디아>

 

 

          - 혼합 분포 군집의 특징

             * k-평균 군집의 절차와 유사하나, 확률분포를 도입하여 군집을 수행하는 모형-기반의 군집 방법이다.

             * 서로 다른 크기나 모양의 군집을 찾을 수 있다.

             * EM알고리즘을 이용한 모수 추정에서 데이터가 커지면 수렴하는데 시간이 걸릴 수 있다.

             * 군집의 크기가 너무 작으면 추정이 어려울 수 있다.

             * k-평균 군집과 마찬가지로 이상값에 민감하다.

 

          - R에서의 k-평균 군집 수행

             > normalmixEM() 함수 또는 Mclust() 함수를 통해 혼합분포군집을 수행한다. 

 

 

     4) SOM(Self-Organizing Maps)

          - 코호넨 맵이라고도 알려져 있음

          - 비지도 신경망(unsupervised neural network)

          - 고차원의 데이터를 이해하기 쉬운 저차원의 뉴런으로 정렬하여 지도의 형태로 형상화

          - 시각적으로 이해하기 쉬움

          - 패턴 발견, 이미지 분석 등에서 뛰어난 성능

 

          - 입력 변수의 위치 관계를 그대로 보존, 입력 변수의 정보와 그들의 관계가 지도상에 그대로 나타남

          - 경쟁 학습으로 각각의 뉴런이 입력 벡터와 얼마나 가까운가를 계산하여 연결 강도를 반복적으로 재조정하여 학습

          - 입력 패턴과 가장 유사한 경쟁층 뉴런이 승자가 됨 (승자 독식 구조)

 

          - 역전파 알고리즘 등을 이용하는 인공신경망과 달리 단 하나의 전방 패스를 사용함으로써 수행속도가 매우 빠름

 

          - 두 개의 인공신경망 층으로 구성(입력층 + 경쟁층)

             입력층 : 입력 변수의 개수와 동일하게 뉴런 수가 존재

             경쟁층 : 사용자가 미리 정해놓은 군집의 수만큼 뉴런 수가 존재

                            입력층의 자료가 학습을 통해 경쟁층에 정렬됨(매핑, 완전연결)

 

          - SOM의 학습알고리즘

             단계1. SOM 맵의 연결강도 초기화

             단계2. 입력 벡터 제시

             단계3. 입력 벡터와 프로토타입 벡터 사이의 유사도를 계산(유클리드 거리 이용)

             단계4. 가장 거리가 짧은 프로토타입 벡터(BMU) 탐색

             단계5. BMU와 그 이웃들의 연결강도를 재조정

             단계6. 단계2~5를 반복한다.

 

          - R을 이용한 SOM 군집분석

             > som( data,  grid=somgrid(),  rlen=100,  alpha=c(0.05, 0.01),  init,  toroidal=FALSE,  keep.data=TURE )

 

             > summary()            # SOM 군집 분석 결과 요약

 

             > plot()            # 그래프를 통한 시각화 (plot.kohonen의 SOM plot은 다양한 형식을 지원)

 

             > unit.distances()            # SOM 군집 분석 결과, 유닛 사이의 거리계산법

 

 

2. 연관 분석

     1) 연관규칙의 개념

          - 연관규칙이란 항목들 간의 'if-then'식으로 표현되는 유용한 패턴을 말함

          - 이러한 패턴, 규칙을 발견하는 것을 연관 분석이라고 하며, 흔히 장바구니 분석이라고 말함

 

          - 사소하고 일반적인 사실이 아니라, 분명하고 유용해야 함

                      "컴퓨터를 구매하면 마우스, 키보드를 산다" - 연관규칙X

                      "기저귀를 사는 고객은 맥주를 동시에 구매한다" - 연관규칙O

 

          - 구매시점의 데이터가 포함되면, 시간에 따른 순차패턴을 발견할 수 있다.

             "컴퓨터를 구입한 사람들 중 25%는 다음 달에 레이저 프린터를 구입한다."

 

     2) 연관규칙의 측정지표

          - 연관규칙을 이용하기 위해서는 데이터에 판매시점의 거래와 품목에 관한 정보가 포함되어야 한다.

          - 특정 고객에 대한 성별, 나이 등의 기타 정보를 필요로 하지 않는다.

 

          - 연관규칙으로 도출된 규칙이 모두 유용하지는 않기 때문에, 유의미한 것을 확인해야 한다.

          - 유의미를 확인하기 위한 평가지표

             ㄱ. 지지도(support) : [ P(A∩B) ] , 전체 거래수에서 A, B가 동시에 포함되는 비율

 

             ㄴ. 신뢰도(confidence) : [ P(A∩B) / P(A) ] , A가 포함된 거래 중 B가 포함되는 비율

 

             ㄷ. 향상도(lift) : [ P(B | A) / P(B) ]

                                           * 향상도 1 : 두 품목이 서로 독립

                                           * 향상도 > 1 : 양의 상관관계

                                           * 향상도 < 1 : 음의 상관관계

 

          - 연관 분석 수행시 모든 경우의 수를 분석하는 것은 비효율적이므로, 최소 지지도를 정한 뒤 규칙을 도출한다.

          - 지지도를 높은 값에서 낮은 값으로 낮추어가며 실행한다.

 

 

     3) 연관분석 절차 (Apriori 알고리즘)

          - 단계1 : 최소 지지도 설정

          - 단계2 : 최소 지지도를 넘는 모든 품목을 찾음

          - 단계3 : 단계2에서 찾은 품목 중 2가지 품목 집합을 찾음

          - 단계4 : 단계2~3에서 찾은 품목 집합을 결합하여 최소 지지도를 넘는 3가지 품목 집합을 찾음

          - 단계5 : 반복 수행을 통해 최소 지지도를 넘는 빈발품목 집합을 찾음

 

     4) 연관분석 장점

          - 탐색적인 기법 : 분석의 결과를 이해하기 쉽다.

          - 비목적성 분석기법 : 분석 방향이나 목적이 특별히 없어 목적변수가 없다.

          - 사용이 편리한 분석데이터 형태 : 데이터를 변환없이 이용할 수 있다.

          - 계산의 용이성 : 간단한 계산으로 분석을 수행한다.

 

     5) 연관분석 단점

          - 계산의 기하급수적 증가 : 품목 수가 증가하면, 계산이 기하급수적으로 늘어난다.

          - 적절한 품목 결정 필요 : 너무 세분화된 품목으로 진행하면 의미없는 결과가 도출될 수 있다.

          - 품목의 비율차이 : 거래량이 적은 품목은 지지도가 낮아서 규칙발견에 제외되기 쉽다.

 

     6) R에서의 연관분석 수행

          - apriori() 함수를 통한 연관규칙 발굴

             > rules <- apriori(data)

 

          - inspect() 함수를 통해 발굴된 규칙 확인

             > inspect(rules)

 

          - {arulesViz} 패키지를 통해 연관규칙의 시각화

             > library(arulesViz)

             > plot() 함수로 연관규칙 산점도, 관계도 시각화

 


Comments