[WEKA]



1. 개념


웨카(WEKA) 란 자바(Java) 언어로 개발된 오픈 소스 데이터 마이닝 프로그램입니다. 

이는 뉴질랜드의 와이카토 대학의 '이안 위튼' 교수팀에 의해 개발 되어지고 있는 프로그램으로  지식분석용 와이카토 환경이라는 뜻의 “Waikato Environment for Knowledge Analysis"의  앞 글자를 따서 이름 지어졌습니다. 이것은 프로그램 전체에 자바(Java) 언어로 된 소스  코드를 제공하는데 여기서 자바는 완성도가 높고 웹과의 연동성이 좋으며 보안이 뛰어난  장점을 가집니다. 


웨카(WEKA)는 다양한 분석 알고리즘들을 제공하여 유용하게 사용될 수  있습니다. 구체적으로 데이터 전처리, 분류, 클러스터링, 연관 규칙, 시각화 등  데이터 마이닝 분석 알고리즘을 포함하고 있습니다.


자바(Java)는 썬 마이크로시스템즈의 제임스 고슬링(James Gosling)과 다른 연구원들이 개발한 객체 지향적 프로그래밍 언어이며, 오라클에서 무료로 제공하고 있습니다. 처음에는 가전제품 내에 탑재해 동작하는 프로그램을 위해 개발했지만 현재 웹 애플리케이션 개발에 가장 많이 사용하는 언어 가운데 하나이고, 모바일 기기용 소프트웨어 개발에도 널리 사용하고 있습니다. 이러한 자바는 문법적인 특성이 C 언어와 비슷합니다. 


 자바를 다른 컴파일언어와 구분 짓는 가장 큰 특징은 컴파일 된 코드가 플랫폼이 독립적이라는 점입니다. 자바 컴파일러는 자바 언어로 작성된 프로그램을 바이트 코드라는 특수한 바이너리 형태로 변환합니다. 이러한 바이트 코드를 실행하기 위해서는 JVM(자바 가상 머신, Java Virtual Machine)이라는 특수한 가상 머신이 필요한데, 이 가상 머신은 자바 바이트 코드를 어느 플랫폼에서나 동일한 형태로 실행시킵니다. 때문에 자바로 개발된 프로그램은 CPU나 운영 체제의 종류에 관계없이 JVM을 설치할 수 있는 시스템에서는 어디서나 실행할 수 있으며, 이 점이 웹 애플리케이션의 특성과 맞아 떨어져 폭발적인 인기를 끌게 되었습니다.




설치

 (Link :  http://www.cs.waikato.ac.nz/~ml/weka/downloading.html)








2. 활용모듈



웨카(WEKA) 프로그램은 설치하기 전에 전제조건이 있습니다. 바로 자바(Java)가  먼저 설치되어 있어야 한다는 것입니다. 플랫폼에 따라 설치해야 하는 자바(Java) 버전이 다를  수 있으니 자신의 컴퓨터에 맞는 자바(Java)를 설치하면 됩니다. 설치된 화면을  다시 보면 Explorer, Experimenter, KnowledgeFlow, Simple CLI 가 있습니다. 


웨카(WEKA) 프로그램은 이 4개의 애플리케이션을 제공합니다. 그러면 이러한 애플리케이션들에  대하여  알아볼까요?  웨카(WEKA)는 한글 지원을 해주지 않기 때문에 프로그램에 익숙해지기 위해서는 영어단어   그 자체를 받아들일 수 있도록 합니다. 먼저 Explorer는 특정 데이터 집합에 대해 다양한  알고리즘을 활용하여 데이터를 분석하는 환경을 제공하고, Experimenter는 다양한 알고리즘을  서로 비교해 볼 수 있는 환경을 제공합니다. 그리고 KnowledgeFlow는 기능적으로 Explorer와  동일하지만 드래그 앤 드롭 방식으로 사용할 수 있는 환경을 제공하며 Simple CLI는  명령행인 Command Line 인터페이스를 구동시키는 메뉴로 자바(Java) 클래스 모듈을 바로  구동시켜볼 수 있으며 다양한 명령어를 조합할 수 있습니다. 


명령행(Command Line)이란 직접 자바 프로그램의 명령어를 입력하여 실행시킬 수 있는 것을 의미합니다. 그리고 자바(Java)는 클래스 기반의 언어로서, 명령행 인터페이스에서 명령을  입력하여 직접 클래스 모듈을 실행시킬 수 있습니다. 


이번에는  ARFF 에 대해서 알아보겠습니다. ARFF는 웨카(WEKA)에서 사용하는 포맷입니다.  이는  헤더 부분 과  본문 부분 으로 크게 나눌 수 있는데요 헤더는 데이터에 관련한 기본 정보를  정의하는 부분으로 데이터파일의 이름과 속성 이름을 정의하고 속성의 타입까지 정의할 수  있습니다. 본문은 실제 데이터가 입력되는 부분으로 속성 명에서 정의된 속성의 실제 데이터  값을 행 단위로 입력하는 것입니다.


웨카(WEKA) 설치 시 데이터 디렉토리에 설치되어 있는 IRIS.ARFF데이터 셋을 살펴보겠습니다.  IRIS.ARFF 데이터 셋은 우리나라에서 붓꽃으로 해석되는 IRIS데이터에 대한 데이터입니다.  이것은 꽃잎의 각 부분의 너비와 길이 등을 측정한 데이터이며 150개의 레코드로 구성되어  있습니다. 


자, IRIS.ARFF 데이터 셋의 헤더 부분을 좀 더 자세히 살펴 볼까요? 데이터 셋에서  Sepal Length는 꽃받침의 길이에 대한 정보이고 Sepal Width는 꽃받침의 너비에 대한  정보입니다. 그리고 Petal Length는 꽃잎의 길이 정보이며 Petal Width는 꽃잎의 너비에 대한  정보입니다. 마지막으로 Class는 꽃의 종류 정보인데 Setosa / Versicolor / Virginica 의  3종류로 구분되며 이는 곧 같은 세가지 종류의 붓꽃으로 분류된 데이터 결과를 보여주는  것입니다. 


[Relation-name]은 문자열로 데이터 셋의 이름을 명시하는데 이는 ‘iris’로 정의합니다.  속성은 @attribute [attribute-name] [datatype]로 정의하고 이는 속성이름을 나타내는  문자열, 데이터 유형을 의미합니다. 그 중에서 속성 sepallength를 실수형 속성으로 정의하고,  속성 class는 Iris-setosa, Iris-versicolor, Iris-viginica 라는 값을 가지는 속성으로 정의할 수 있습니다.





IRIS.ARFF 데이터 셋의 본문 부분도 좀 더 자세히 살펴 볼까요? 본문 부분은 @DATA로 시작하며  각 라인은 데이터의 행을 나타내는 레코드를 의미합니다. 그 데이터 속성의 값들은 헤더에  정의된 속성 정의 순서를 따르게 됩니다.






[WEKA 기초사용법과 데이터 마이닝 분석 모듈]


1. 주요 컴퍼넌트


웨카를 구성하는 주요 컴포넌트는 weka.core(웨카 코어), weka.filters(웨카 필터),  weka.classifiers(웨카 분류자), weka.clusters(웨카 클러스터), weka.associations 웨카  연관) 등이 있습니다. weka.core는 공통 컴포넌트에 해당하며 weka.filters는 데이터셋 필터링  컴포넌트이고 weka.classifiers는 분류분석 알고리즘 컴포넌트입니다. weka.clusters는  클러스터링 알고리즘 컴포넌트이며 weka.associations은 연관분석 알고리즘 컴포넌트입니다.  그럼 각각에 대하여 자세히 알아볼까요?


웨카 코어(weka.core) 는 다른 패키지에서 사용하는 일반적인 컴포넌트들을 포함하는  패키지입니다. 여기에는 속성, 데이터 셋, 컨버터, 행렬 조작, 텍스트 파싱, 트리 표현,  XML과 같은 모델링 관련 클래스가 있습니다. 


데이터 셋 필더링 컴포넌트인 웨카 필터 (weka.filters) 는 데이터 셋에 적용하기 위한 필터에 관련된 패키지입니다.   이러한 웨카 필터는 연속형 값을 이산형 값으로 변환할 때 사용할 수 있습니다.


분류분석 알고리즘 컴포넌트인 weka.classifiers 는 다수의 의사결정 분석 알고리즘을  제공합니다. 분류 분석 알고리즘에는 서포트 벡터 머신(Support Vector Machines) 알고리즘,  인공신경망 분석 알고리즘, 로지스틱 회귀분석 등을 지원합니다. 간단하게 이들에 대해  언급하자면 서포트 벡터 머신인 SVM은 Vladimir Vapnik이라는 러시아 과학자가 만들어낸  분류 알고리즘으로 많은 영역에서 사용하고 있는 분류 알고리즘입니다. 인공신경망 분석  알고리즘은 뇌기능의 특성 몇 가지를 컴퓨터 시뮬레이션으로 표현하는 것을 목표로 하는 수학 모델입니다. 마지막으로 로지스틱 회귀분석은 종속변수가 2개의 값을 가지는 경우  사용하는 회귀분석입니다.


 클러스터링 알고리즘 컴포넌트 weka.clusters 는 클러스터링 분석을 수행할 수 있는   알고리즘을 제공합니다. 즉, K-평균 클러스터링, EM 알고리즘, 거미집(Cobweb) 알고리즘, 평균값인 X-means 등을 제공합니다. K-평균 알고리즘(K-means algorithm)은 주어진 데이터를   k개의 클러스터로 묶는 알고리즘입니다. EM 알고리즘은 기대값이 최대화 된 알고리즘으로 기존의 가능도를 기반으로 하여 더 좋은 가능도를 찾을 수 있도록 계산을 반복하는 구조의  클러스터를 수행하는 것입니다. 거미집(Cobweb) 알고리즘은 분류 나무 형태의 클러스터를  구성하는 클러스터링 방법이고 평균값을 나타내는 X-means 알고리즘은 K-평균 알고리즘의 문제점을 개선한 클러스터링 알고리즘입니다. 


연관분석 알고리즘 컴포넌트인 weka.associations 는 장바구니 분석과 같은 연관분석을  수행하는데 필요한 선험적 알고리즘을 제공합니다. 선험적 알고리즘이란 가장 흔히 사용하는  연관 분석 알고리즘으로, 이는 속성들이 수치형이 아니라 범주형의 값을 가질 때 분석할 수 있습니다. 범주형 속성은 명목(Nominal) 속성으로 범주형으로 구분되는 값을 가지는 경우에  해당하고, 수치형 속성은 보통(Numeric) 속성으로 실수 및 정수와 같은 수치 값을 가지는  경우에 해당합니다.