[WEKA를 활용한 분류분석]



1. 개요


웨카(WEKA)를 활용한 분류분석에서는 J48알고리즘을 활용합니다. 이는 C4.8 알고리즘인데  웨카(WEKA)에서 이름만 달리하고 있다는 것을 기억하시고 학습을 시작해보세요.  웨카(WEKA)를 활용한 분류분석을 위해 iris.arff파일인 IRIS데이터를 분류분석해 보도록 하겠습니다. 

 


IRIS데이터란 세 가지 종류의 붓꽃을 분류한 데이터입니다. 그리고 arff 파일이란 웨카(WEKA) 입력  형식을 따르는 데이터 파일임을 나타냅니다. 붓꽃들은 Iris setosa, Iris virginica, Iris versicolor  입니다. 


웨카(WEKA)는 한글 지원을 해주지 않기 때문에 프로그램 분석에 익숙해지기 위해서는 영어단어  그 자체를 받아들일 수 있도록 합시다. 이 데이터는 붓꽃에 따라 꽃받침인 sepal의 길이와 너비,  그리고 꽃잎인 petal의 길이와 너비 값을 기록한 데이터로 이 데이터를 분석하면 어떤 붓꽃이 꽃받침  (sepal)과 꽃잎(petal)의 길이와 너비 관점에서 어떤 차이를 가지는지에 대한 유용한 지식을 얻을 수  있습니다.



2. 수행



웨카(WEKA)에서 Exploer를 실행시켜보세요.  자, Explorer를 클릭하면 다음과 같은 화면이 생성됩니다. Preprocess 부분에서 첫 번째 메뉴인  Open file을 클릭해주세요. 



          


 iris.arff 파일을 선택하고 열기를 클릭합니다.  그 다음 Classify를 클릭하고 왼쪽 상단의 Choose 버튼을 클릭합니다.   trees 항목에 속해있는 J48 알고리즘을 선택합니다. 





자, 우리는 대표적인 데이터 마이닝의 분류분석  방법인 C4.8 의사결정 트리 알고리즘을 사용하여 분석해 볼 건데요. 웨카(WEKA)에서는 C4.8 알고리즘을  J48 이라는 이름으로 제공하고 있습니다. 헷갈리지 않으시겠죠?  왼쪽 중간 부분의 Start 버튼을 클릭하면, J48 분석 수행을 시작합니다. 분석이 종료되면 오른쪽에   결과가 텍스트 형식으로 출력됩니다. 



iris.arff 데이터에 대한 설명과 tree 결과 모델과 데이터를  구분하여 검증한 결과들을 보여주고 있습니다. 결과를 자세히 살펴볼까요?


 tree 부분을 보면 iris 종류에 영향을 주는 속성은 꽃잎의 너비와 꽃잎의 길이 즉 petalwidth와  petallength로 분석되었습니다. 텍스트로 된 이 결과가 한 눈에 해석이 되시나요? 






텍스트로 된 Tree 결과는 분석하려면 시간이 오래 걸립니다. 이를 시각적으로 표시하면 의미를 쉽게  이해할 수 있습니다. J48 알고리즘은 텍스트뿐 아니라 시각적인 기능도 제공하고 있는데요.  확인해볼까요?

왼쪽 하단의 Result list에서 방금 수행된 tree.J48 항목을 찾아 마우스 오른쪽 버튼을 누르면 이 창이  제시됩니다. 여기에서 Visualize tree를 클릭하세요. 






그럼 이와 같이 결과가 시각화된 의사결정나무를 확인 할 수 있습니다. 의사결정나무를 통해 중요한  속성을 한 눈에 확인할 수 있는데요. 꽃잎의 너비와 꽃잎의 길이인 petalwidth와 petallength가 중요한  속성임을 알 수 있습니다. 








[WEKA를 활용한 군집분석]


1. 개요


웨카(WEKA)를 처음 사용하는 경우 군집을  수행하는 절차 그리고 결과를 해석하기가 좀 어렵게 느껴집니다. 분류분석의 경우는 Tree 형태로 결과가  나와서 모델을 해석하기가 쉬운데 군집은 수행한 결과가 뭘 의미하는지 좀 해석하기가 좀 애매합니다.  하지만 수행하고 해석하는 방법을 차근차근 학습한다면 어려울 것이 없습니다!


 웨카(WEKA)를 활용한 분류분석을 위해 iris.arff파일인 IRIS데이터를 군집분석해 보도록 하겠습니다.  군집분석에서는 IRIS 데이터에서 IRIS 종류를 의미하는 class 속성을 제거합니다. 4가지 속성을 기준으로  150개의 데이터를 클러스터링 하는 군집분석을 수행하기 위해서 인데요. 즉, 꽃받침인 sepal의 길이와  너비, 그리고 꽃잎인 petal의 길이와 너비 값을 기준으로 150개의 데이터를 클러스터링 하는 군집분석을  수행해보도록 하겠습니다. 




2. 수행


이제 군집분석을 수행하기 위해 Cluster를 클릭합니다. 그리고 왼쪽 상단의 Choose 버튼을 클릭합니다.




여러 가지 군집분석 알고리즘들이 있는데요. 기본적으로 EM 알고리즘이 설정되어 있고 다른 알고리즘을  선택할 수 있습니다. 우리는 SimpleKMeans 알고리즘을 선택하는데 이 SimpleKMeans 알고리즘은 K-평균  (K- MEANS) 군집분석을 수행합니다. 





K-평균 알고리즘(K-means algorithm)은 주어진 데이터를 K개의 클러스터로 묶는 알고리즘으로  각 클러스터와 거리 차이의 분산을 최소화하는 방식으로 동작합니다. K-평균 알고리즘은 주어진 데이터에서  K개의 데이터 오브젝트를 임의로 추출합니다. 그리고 그 데이터 오브젝트들을 각 클러스터의 중심으로  설정합니다.


그 후 각 클러스터의 중심과 그룹 내의 데이터의 거리 제곱합을 비용 함수로 정하고, 이 함수값을 최소화하는 방향으로 각 데이터의 소속 그룹을 업데이트 합니다. K-평균 알고리즘은 이 과정으로  클러스터링을 수행하게 됩니다.


이번에는 K-평균 알고리즘(K-means algorithm)의 역사에 대하여 살펴보고 가겠습니다. K-평균에 대한  개념은 1957년 위고 스타인하우스(Hugo Steinhaus)에 의해 소개되었으나, 용어 자체는 1967년 제임스  맥퀸(James MacQueen)에 의해 처음 사용되었습니다. 현재 사용되고 있는 표준 알고리즘은 1957년  스튜어트 릴로이드(Stuart Lloyd)가 처음으로 고안하였습니다. 이것이 공개되기 전 1965년 포기  (E. W. Forgy) 또한 같은 알고리즘을 제안하였습니다. 스튜어트 릴로이드가 고안한 이 표준 알고리즘은  1982년이 되어서야 컴퓨터 과학 매거진에 처음 공개되었습니다. 차후 1975년과 1979년에 하티간  (Hartigan)과 웡(Wong)에 의해 거리 계산이 필요하지 않은 좀 더 효율적인 방법이 소개되면서 K-평균  알고리즘은 발전하게 되었습니다. 



 SimpleKMeans를 클릭합니다. 그리고 화면의 빈 공간을 클릭합니다. 




그러면 옵션을 변경할 수 있는 창이 표시됩니다. 여기서, K-평균(Kmean) 알고리즘을 수행할 경우,  생성되는 클러스터의 수를 변경할 수 있습니다. 기본적으로는 2로 설정되어 있는데 옵션 변경 창에서  클러스터의 수를 3으로 변경해줍니다. 기본 값은 그 수로 클러스터를 자동으로 찾겠다는 것을  의미하는데요. 자동으로 지정된 군집의 개수는 일반적으로 적합하지 않은 경우가 많습니다.  따라서 분석하는 사람이 데이터를 잘 이해하고 적절히 지정해주도록 합니다.




Cluster Mode에서 [Use training set]을 선택합니다. 이는 원래의 입력 데이터를 기준으로 클러스터링  하겠다는 의미인데요. 즉 원래의 입력 데이터로 모델을 생성한 후 이 데이터를 그대로 사용하여  테스트하겠다는 것입니다. 이 모드가 가장 간단한 형태입니다. 




일반적으로는 바로 Start 버튼을 누르면 분석이 수행되지만 IRIS 데이터 셋 안에 있는 나머지 4개 변수를  기준으로 클러스터링 하기 위해서 수행 전에 class를 제거해야 하는데요. Ignore attributes를 눌러서  class 속성을 선택하여 분석에서 제거합니다. 그 후 하단의 Start를 눌러줍니다. 





분석이 수행되고 오른쪽 창에 분석 결과가 표시됩니다. 결과를 자세히 살펴볼까요?





클러스터링 결과를 해석해보면, 오른쪽 창의 맨 하단에서 군집이 3개 생성되었다는 것을 볼 수 있습니다.  번호가 1번부터가 아니라 0번부터 붙혀집니다. 군집0, 군집1, 군집2의 이름이 부여되고 우선은 각 군집에  포함된 데이터의 개수를 파악할 수 있습니다. 그리고 비율도 파악할 수 있는데요. 전체 데이터가  150개이니 비율은 각 군집 데이터 개수 나누기 150 곱하기 100으로 구할 수 있습니다. 군집0 데이터 개수는   61개이며 비율은 61 나누기 150 곱하기 100으로 40.666…의 값을 반올림하여 41%입니다.  군집 1 데이터 개수는 50개로 비율은 50 나누기 150 곱하기 100으로 33.333..을 반올림하여 33%입니다.  군집2 데이터 개수는 39개로 비율은 39 나누기 150 곱하기 100하여 26%로 계산됩니다. 


군집의 특성은 결과 텍스트의 상단부분을 보면 확인할 수 있습니다. 군집0(Cluster 0)은 4가지 속성 중에,  꽃받침(sepal)의 길이와 너비가 중간 크기인 그룹인데요. 이 결과는 어떻게 해석한 걸까요? 먼저 꽃받침의  길이인 sepallength에 대하여 군집 3개를 비교하여 보시죠. 군집0이 5.8885, 군집1이 5.006, 군집2가  6.8462로 군집 0이 중간크기입니다. 그리고 꽃받침의 너비인 sepalwidth에 대하여 군집 3개를 비교하면  군집0이 2.7377, 군집1이 3.418, 군집2가 3.0821로 군집 0이 중간크기입니다. 이해가 되시나요? 군집1 (Cluster 1)은 꽃잎(petal)의 길이와 너비가 가장 작은 그룹인데요. Petallength에 대하여 군집 3개를  비교해보겠습니다. 

군집0이 4.3967, 군집1이 1.464, 군집2가 5.7026으로 군집 1이 가장 작다는 것을  확인할 수 있습니다. 그리고 petalwidth를 비교하면 군집0이 1.418, 군집1이 0.244, 군집2가 2.0795로  여기에서도 군집 1이 가장 작습니다. 이렇게 해석하면 군집2 (Cluster 2)는 꽃받침(sepal)의 길이와 너비,  꽃잎(petal)의 길이와 너비 모든 속성에서 군집 3개 중 가장 큰 그룹임을 알 수 있습니다.





[WEKA를 활용한 연관분석]



1. 개요


웨카(WEKA)를 활용한 연관분석에서 우리는   기본으로 설정되어 있는 Apriori 알고리즘 을 활용할 것입니다.  웨카(WEKA)를 활용한 연관분석을 위해 고객이 백화점의 여러 매장에서 구매한 제품을 기록한 데이터인  supermarket.arff를 연관분석 해 보도록 하겠습니다. 이 데이터는 고객이 여러 매장에서 구매한 제품을  기록한 것으로 매장을 나타내는 변수들과 고객이 구매한 제품을 나타내는 변수들, 그리고 총구매액의  크기를 나타내는 변수로 구성되어 있습니다. 매장에서 특정제품을 구매했을 경우, ‘t’ 값을 가지고, 구매하지 않았을 경우 빈 값으로 표현합니다.




2. 수행


웨카(WEKA)에서 Exploer를 실행시켜보세요. Preprocess 부분에서 첫 번째 메뉴인  Open file을 클릭하고 supermarket.arff 파일을 선택하고 열기를 클릭합니다. 

이제 연관분석을 수행하기 위해 Associate를 클릭합니다.  여러 가지 알고리즘들이 있는데 기본적으로 Apriori 알고리즘이 설정되어 있고 다른 알고리즘을 선택할 수  있습니다. 우리는 대표적인 데이터 마이닝의 연관분석 방법인 Apriori 알고리즘을 사용할 것입니다.  왼쪽의 Start을 클릭하면, Apriori 분석 수행을 시작합니다.





분석이 종료되면 오른쪽에 결과가 텍스트 형식으로 출력됩니다. 수행결과를 자세히 살펴볼까요?   앞서 우리는 매장에서 특정제품을 구매했을 경우, ‘t’ 값을 가지고, 구매하지 않았을 경우 빈 값으로  표현한다는 것을 학습하였습니다.  1번째 발견된 연관규칙을 해석해보면, 고객이 biscuits, frozen foods,  fruit을 사고 total 구매액이 high이면 bread and cake을 구매한다는 경향이 있다는 것이고,  이 규칙의 신뢰도가 92%임을 알 수 있습니다.