You are on page 1of 6

WECA를 이용한 예측프로그램 만들기

데이터 마이닝 및
WECA GUI를 알아보자
사실 외카(WECA)를 사용하기 위해서는 단순히 툴 사용이나 API를 익히는 것 못지않게 데이터 마이닝의 기본 개념을 익히는
게 상당히 중요하다. 따라서 이번 컬럼에서는 간단히 데이터 마이닝과 그 필요 개념들에 대해서 리뷰 해보고 그 것을 기반으
로 외카 GUI 실습에 중요성을 두고 알아보는 시간을 가져보자.

연 재 가 이 드 전희원 gogamza@freesearch.pe.kr, www.freesearch.pe.


1회 | 2009. 7 | 데이터 마이닝 및 WECA GUI를 알아보자 kr|학교에서는 정보검색 및 Machine Learning을 주로 연구했으며, 수년
2회 | 2009. 8 | WECA API 그리고 커멘드 라인 인터페이스 간의 검색엔진 개발 및 데이터마이닝 경험을 가지고 있다. 대용량 데이터 처
3회 | 2009. 9 | 웹 로봇 탐지 예제 구현 리 및 데이터 마이닝에 많은 관심을 가지고 있고, 현재 야후! 아시아 서치 엔
지니어링(Asia Search Eng)팀에서 방대한 양의 웹 데이터를 들여다보며 흥미로운 시간을
보내고 있다.

스텝
바이
스텝 3
데이터마이닝이라 함은 수많은 데이터를 분석해서 그 속에서 할 정도로 비중이 크다. 예를 들어 설명하면 스팸 메일 처리 데이
특정 패턴을 발굴하고 이를 기반으로 예측을 수행하는 자동화된 터 마이닝 서비스에서 스팸과 상관관계가 높은 제목 및 본문의
프로세스를 의미한다. 이 마이닝이라는 작업이 특정 패턴에 적합 단어, 받는 사람 이름 및 서버 주소, 이전 사용자가 메일을 보낸
한지 확인하는 그런 데이터 분석 작업과는 다르다. 예를 들어 특 주소에서 왔는지 아니면 처음 보는 주소에서 온 것인지에 대한
정 데이터의 평균이나 표준편차 등을 구하는 것은 데이터 분석 속성들은 스팸성을 판단하는데 아주 중요한 속성들이 될 것이다.
작업의 일환이라 볼 수 있겠다. 이런 데이터마이닝은 확률/통계 하지만 그 이외의 속성인 함께 받는 사람들의 숫자, 본문 및 제목
학, 선형대수 그리고 머신 러닝(Machine Learning)과 같은 학 의 인코딩 및 언어 등등의 것들은 일반적으로 스팸을 판단하는데
문적 이론 기반을 가지고 있다. 하지만 수학이 나온다고 해서 미 큰 영향을 미치지 못하는 속성들이 될 것이다. 물론 이들도 중요
리 겁먹을 필요는 없다. 사실 개인적으로는 실용적인 예제를 통 속성이 될 수 있겠으나 직관적으로 그렇지 않다는 말씀을 드리는
한 감각을 익히고 그 이후 필요시 더 깊은 내용에 대해 학습하는 바다. 이를 위해 아주 샘플링을 잘 해서 실제 데이터 분석을 하는
과정을 선호하기 때문에 이번 강좌들에서는 예제를 통한 감각 학 과정이 필요하다. 이를 속성 선택 과정이라고 한다.
습에 치중하고 나머지 심화 학습은 독자들의 선택에 맡기겠다. 속성에는 숫자형(Numerical), 서열형(Ordinal), 명목형
먼저 외카(WECA)를 가지고 놀기 전에 몇 가지 데이터와 머 (Nominal) 속성이 있다. 먼저 숫자형은 속성과 관련된 실수값을
신 러닝에 대한 선행학습을 할 필요가 있다. 그리하여 다음 컬럼 의미한다. 두 개의 숫자형 값은 서로 비교가 가능하며 연속적인
에서는 여러가지 데이터 속성의 종류에 대해 알아보는 시간을 가 값이고 특정 상황에서는 이산적인 특징을 띌 수 있으며 서열화도
져 보겠고, 학습 알고리즘의 핵심 기술과 데이터 마이닝의 프로 가능하다. 예를 들어 나이, 사이트에 로그인한 횟수 등등이 될 수
세스에 대해서 살펴보는 시간을 가져 볼 것이다. 있을 것이다. 서열형(Ordinal) 역시 이산적인 특징을 가지고 있
다. 한 가지 특이할 만한 특징은 이 속성은 순서만을 가지고 있다
데이터마이닝의 속성 는 것인데, 예를 들어‘많다’
,‘적다’
등과 같은 속성들이 좋은 예
학습 알고리즘은 학습을 위해 어느 정도 정리된 데이터 셋이 가 될 수 있을 것이다. 재미있는 사실은 이들 사이에 많고 적은
필요하다. 이 데이터 셋은 속성이라는 데이터 집합으로 구성이 것이 어느정도의 차이를 가지고 있는지 절대적인 기준이 성립되
되는데 이 속성의 정의 및 전처리가 데이터마이닝의 승패를 가늠 어있지 않다는 점이다. 마지막으로 명목형(Nominal)속성은 범

256 m a s o
데이터 마이닝 및 WECA GUI를 알아보자

주형 속성이라고도 하는데 사람의 머리 색깔의 경우 갈색, 흰색, 알고리즘 종류 설명 입력 속성 출력 속성 예

검정색, 붉은색 등의 값들 중에 하나가 될 수 있을 것이다. 명목 회귀분석 입력 속성들에 대해서 연속형 연속형 회귀분석,
출력 속성을 예측하는 신경망
형 속성은 독자들 또한 잘 아시다시피 값의 대소 비교가 불가능
알고리즘
하다. 그리고 그런 비교 자체가 의미가 없다. 분류 입력 속성들에 대해서 이산형 이산형 결정트리,
그리고 이들 속성들 간에는 변환이 가능한데, 숫자형 속성을 이 출력 속성을 예측하는 또는 나이브

산형으로 바꾸고자 한다면 특정 숫자 범주를 특정 이산 값으로 할 알고리즘 연속형 베이지언


클러스터링 데이터에서 패턴을 추출 이산형 없음 k-means,
당해 속성변환이 가능하다. 예를 들어 일주일동안의 평균 블로그
하기 위해 클러스터를 또는 hierarchical
포스팅 회수를“대”
,“중”
,“소”
로 이산화 하기 위해“0~1”
을“소”
생성 연속형 clustering,
로“2~3”
“중”그리고“4~6”
을“대”
로 할당할 수 있을 것이다. EM clustering
속성 중요도 출력값에 잘 반응하는 이산형 없음 MDL, Mutual
속성을 선택하는 또는 Information,
교사 학습 및 비교사 학습
알고리즘 연속형 X2Feature
학습이라는 단어를 살펴보면 몇 가지 예시를 제시하고 이를 기
Selection
반으로 미지의 정보에 대해서 판단하는 것을 의미한다. 예를 들 연관룰 동시 출현 아이템들을 이산형 없음 연관룰,
어 우리가 수학 문제를 푼다고 가정했을 때 수학에 대한 기초 학 기반으로 흥미로운 속성 Apriori

습을 통해 응용을 어떻게 잘 하느냐에 따라 점수를 많이 받고 적 연관성을 파악하는


알고리즘
게 받음이 결정이 된다. 우리가 공부를 하는 것과 데이터마이닝
<표 1> 알고리즘들의 특징과 분류
에서 학습을 하는 것은 크게 다른 개념이 아니라는 이야기이다.
데이터마이닝에서 이 학습의 과정은 모델 빌드를 하는 과정이라 구매 패턴을 분석해 아기 기저귀와 맥주의 연관성을 밝혀내 이를
고 설명된다. 이 모델은 대부분 수학적인 모델을 의미하며 이 모 실제 마케팅에 활용한 예를 생각하면 된다. 이는 한 사용자가 두
델 빌드 과정이 학습이 과정이라고 생각하면 된다. 물품을 빈번하게 구매한다는 데이터 구매 분석 결과에 따라 나온
교사 학습으로는 이미 예측된 값을 가지고 있는 학습셋을 가지 것이다. 속성 중요도 알고리즘들은 어떤 속성이 출력 속성 예측
고 있다는 특징이 있다. 이 학습 셋은 이미 사람이 평가한 결과를 을 하는데 가장 영향을 많이 끼치는지 알아보기 위한 알고리즘들
가지고 있고 또한 그에 해당되는 속성으로 구성돼 있다. 이를 기 이다.
반으로 수학적 모델을 빌드해 테스트하고 앞으로 들어올 미지의
데이터에 대해서 예측을 할 기반을 마련하게 되는 것이다. 마이닝 프로세스
결정트리, 신경망, 회귀분석 등과 같은 알고리즘이 교사 학습 데이터마이닝 프로세스는 크게 아래의 과정을 통해 이뤄진다.
알고리즘이다. 게다가 결과값이 연속형 속성을 가진 것이냐 아니
면 범주형 속성을 가지는 것인가에 따라 다른 알고리즘이 적용이 1. 모델링과 속성 선택
가능하다. 물론 이전에 말씀드렸던 것과 같이 속성 상호간에는 2. 학습 셋 및 테스트 셋 만들기
변환이 가능하다. 3. 정규화와 데이터 전처리
비교사 학습에서는 사실 학습이라는 과정을 거치지 않는다. 그 4. 모델 빌드 및 모델 품질 측정
래서 대부분 이 부분과 관련된 작업은 클러스터링 작업이 주가 5. 예측 모델 적용
된다. 클러스터링 작업이라 함은 비슷한 패턴을 가지는 데이터들
을 연결해주는 프로세스이다. 예를 들면 고객집합을 그룹으로 만 모델링과 속성 선택
든다던 지 현재 지구 기후에 영향을 미치는 바다의 지역을 찾는 이 단계에서는 어떤 마이닝 작업을 할지 결정하고 이를 기반으
그런 작업들에 사용이 가능하다. <표 1>은 이러한 알고리즘들에 로 속성 선택을 해야 한다. 이 시점에서 속성 선택 알고리즘들이
대해 간략하게 정리한 내용이다. 쓰일 수 있을 것이다.
<표 1>을 보면 회귀분석과 분류가 교사 학습 알고리즘이며, 클
러스터링, 속성 중요도, 연관룰이 비교사 알고리즘이라고 이해하 학습 셋 및 테스트 셋 만들기
면 된다. 또한 <표 1>에서는 연관룰(Association rules)이라는 생 일반적으로 90%의 학습 셋과 10%의 테스트 셋으로 이뤄진
소한 단어가 출현 했는데, 연관룰은 예를 들어 마트에서 사용자 10 fold cross-validation 기법을 주로 사용한다.

m a s o 257
스 텝 바 이 스 텝 | 3

정규화와 데이터 전처리 WECA를 알아보자


데이터 셋들이 유효한 값들을 가지고 있는지 체크한다. 그리고 이제 드디어 본격적으로 외카(WEKA)에 대해서 설명하도록
각 속성값은 특정 범위내로 정규화 시킨다. 왜냐하면 1~100 사 하겠다.
이의 값을 가지는 속성과 1~10 사이의 값을 가지는 속성이 모델
을 빌드하는데 같은 영향을 끼치게 만들 필요가 있기 때문이다.
예를 들어 0~1 사이의 값으로 선형 변환 하기 위한 공식은 이와
같을 것이다. (여기서 s는 이전 속성값이고 s’
는 변환된 속성값
<화면 1> 외카 시작 화면
이 될 것이다)
외카는‘Waikato Environment for Knowledge Analysis’

s’= (s - min_s)/(max_s - min_s) 약자이며, 자바로 만들어진 가장 대중적인 오픈소스 데이터 마이
닝 프로그램이다. <화면 1>을 통해서도 볼 수 있겠지만 The
모델빌드 및 모델 품질 측정 University of Waikato에서 만든 3.6.0 버전이 최신버전으로 현
사실 데이터 분석 작업과 모델빌드 작업은 동시에 일어난다. 재는 Pentaho라는 회사의 관리하에 버전업이 이뤄지고 있다. 또
분석 과정 후 데이터 과적합(overfitting) 문제가 발생할 수 있는 한 외카의 파생 프로젝트들이 상당한데, 이들의 목록은 http://
데, 과적합은 학습 데이터에 과도하게 적응된 모델을 의미한다. weka.wiki.sourceforge.net/Related+Projects 이 링크에서 확
이런 모델은 학습셋의 평가에서는 높은 정확도를 보이지만 우리 인이 가능하다.
가 알지 못하는 미지의 데이터나 테스트데이터에 대해서는 오히 재미있는 사실은 뉴질랜드에 서식하는 위 그림 속 새의 이름도
려 낮은 정확도를 보인다. 이를 위해 테스트 데이터 셋을 가지고 Weka라는 것이다.
세밀하게 테스트하는 과정이 필요하다. 필자가 주로 쓰는 방법은 외카의 설치는 상당히 간단히 이뤄진다. 하지만 자바VM이 없
10개의 데이터 셋으로 데이터들을 나누어 9개를 학습 셋으로 나 는 사용자의 경우에는 자바 VM이 포함된 버전으로 설치하는 것
머지 1개를 테스트 셋으로 해 10번의 테스트를 수행한 결과의 정 이 보다 안정적인 외카 설치가 가능하다.
확도를 기반으로 모델링된 인자들을 테스트하게 된다. 예를 들면 외카를 설치하고 나서 관련 아이콘을 클릭해 실행하면 <화면
결정 트리의 트리 깊이를 한정하는 방법을 쓰면서 이들 각 테스 1>과 같은 화면을 볼 수 있을 것이다. MDI같은 환경을 원하는
트를 하게 될 경우, 테스트 정확도 평균값이 트리 깊이가 증가할 분들은 javaw -classpath“%CLASSPATH%;weka.jar”weka.
수록 증가하다가 도리어 감소하는 구간을 만나게 되는데 그 직전 gui.Main 이와 같은 명령어로 윈도우를 띄우면 된다.
으로 트리깊이를 산정하곤 한다. <화면 1>의 각 항목을 설명하면 이렇다.
여러 알고리즘 사이의 퍼포먼스 테스트는 이 값들을 기반으로
t-test를 수행하여 평균 정확도가 실제 통계적으로 의미 있는 증 ● Explorer - 특정 데이터에 대해 다양한 옵션으로 실험을 해볼 수 있는
가였는지 확인하는 과정을 거치면 된다. 전처리 과정을 비롯해 환경
이 과정이 사실 데이터 마이닝에서 가장 많은 리소스를 먹는 곳 ● Experimenter - 여러 머신 러닝 알고리즘을 비교해 볼 수 있는 환경
인데, 꼼꼼히 테스트하고 적합 모델을 발굴하는 능력이 많이 요 ● KnowledgeFlow - 기능적으로는 Explorer와 동일하지만 드래그 앤 드
구된다. 롭 방식으로 실험해 볼 수 있는 특징을 가지고 있다. 증분 학습
(Incremental Learning)이 가능한 장점을 가지고 있다.
예측 모델 탑재 ● Simple CLI - command line 인터페이스를 구동시키는 메뉴로 외카
만들어진 예측 모델을 애플리케이션에 탑재하면 된다. 외카의 자바 클래스 모듈을 바로 구동시켜 볼 수 있다. 다양한 명령어를 조합
경우 데이터를 기반으로 만들어진 Classifier 인스턴스를 로딩하 할 수 있기 때문에 때로는 이 커멘드 라인을 활용하는 게 GUI기반으로
여 사용하면 된다. 하는 것보다 강력할 수 있다.
지금껏 데이터마이닝에 대한 핵심적인 부분들을 살펴봤다. 물
론 이들만으로 실무 업무를 하기엔 턱없이 부족하지만 지면상 더 이제 필자가 개인적으로 가장 좋아하는 데이터 포맷인 ARFF
이상 설명을 피하도록 하겠다. 더 자세한 내용들은 데이터 마이 (Attribute-Relation File Format)를 소개할까 한다. ARFF는
닝 서적을 참고하기 바란다. 외카에서 사용하는 포맷으로서 굉장히 명확하게 데이터 속성을

258 m a s o
데이터 마이닝 및 WECA GUI를 알아보자

정의할 수 있는 장점을 가지고 있다. 이 포맷은 헤더부분과 본문 <relation-name>은 문자열로 데이터셋의 이름을 명시한다. 만
부분으로 크게 나뉠 수 있는데 헤더 부분에는 데이터 파일의 이 일 이름에 공백이 있다면 따옴표로 문자열이 하나임을 명시해 줘
름과 속성이름을 정의하고 그 타입까지 정의할 수 있다는 점이 야 한다.
특징이며 우리가 처음에 배운 데이터 속성들의 개념을 바로 이
부분에서 적용할 수 있다. @attribute <attribute-name> <datatype>
여기에서 $WEKAHOME/data 디렉토리에 존재하는 IRIS
데이터 셋의 헤더를 확인해 보면 <리스트 1>과 같으며 본문은 < 속성은 위와 같이 정의하는데 마찬가지로 attribute-name은
리스트 2>와 같다. 속성 이름을 의미하는 문자열이 와야 하며 datatype은 아래 4가
지 타입 중에 하나가 올 수 있다.
<리스트 1> iris.arff 헤더 부분

% 1. Title: Iris Plants Database


%
* numeric
% 2. Sources: * integer (== numeric)
% (a) Creator: R.A. Fisher
* real (== numeric)
% (b) Donor: Michael Marshall
(MARSHALL%PLU@io.arc.nasa.gov) * <nominal-specification>
% (c) Date: July, 1988
* string
%
@RELATION iris * date [<date-format>]

@ATTRIBUTE sepallength NUMERIC


@ATTRIBUTE sepalwidth NUMERIC 위 속성 중에서 class 속성을 보면 <nominal-specification>에
@ATTRIBUTE petallength NUMERIC 대한 설명이 필요하지 않을 듯하다. date 속성은 @attribute
@ATTRIBUTE petalwidth NUMERIC
@ATTRIBUTE class {Iris-setosa,Iris-versicolor,Iris- <name> date [<date-format>]과 같은 방식으로 주어지며 날짜
virginica} 포맷을 명시하지 않을 경우 기본적으로 yyyy-MM-dd’
T’
HH:mm:ss 포맷으로 간주한다.
<리스트 2>iris.arff 본문 부분 본문부분은 @DATA로 시작한다. 이 부분은 각 라인은 데이터
@DATA 의 레코드를 의미한다. 그리고 그 데이터 필드의 값들은 헤더에
5.1,3.5,1.4,0.2,Iris-setosa
정의된 속성 정의 순서를 따르게 된다.
4.9,3.0,1.4,0.2,Iris-setosa
4.7,3.2,1.3,0.2,Iris-setosa
4.6,3.1,1.5,0.2,Iris-setosa 외카 GUI
5.0,3.6,1.4,0.2,Iris-setosa
5.4,3.9,1.7,0.4,Iris-setosa 그럼 본격적으로 외카 GUI를 가지고 놀아보자. 이 작업에 쓰
4.6,3.4,1.4,0.3,Iris-setosa 일 데이터 셋은 역시 위의 ARFF포맷 설명에 쓰인 IRIS 데이터
셋을 이용한다. 두 가지 분류 모델을 만들어 보겠는데, 첫 번째는
<리스트 1>과 <리스트 2>에 나타난 데이터셋은 꽃받침(sepal) 베이지언 분류기, 두 번째로 결정 트리를 만들어 보겠다. <화면
의 길이 너비 그리고 꽃잎(petal)의 길이와 너비 정보를 가지고 2>,<화면 3>과 같이 Explorer를 띄우고 IRIS 데이터를 로딩한다.
있으며 그에 따라 (Iris setosa, Iris virginica and Iris 이 페이지 하나로도 상당히 많은 종류의 데이터 정보를 미리 확
versicolor)와 같이 세 가지 종류의 붓꽃으로 분류된 데이터 결과 인해 볼 수 있다. 특히 오른쪽 선택된 속성의 통계 정보와 히스토
로 보면 된다. 이 데이터에 대한 설명은 http://en.wikipedia.
org/wiki/Iris_flower_data_set 이곳에서 보다 많은 정보를 확인
할 수 있다. 여기에서 확인한 결과를 학습한 모델을 가지고 있다
면 단순히 꽃잎 길이정보와 꽃받침의 길이정보만을 이용해 꽃의
분류가 가능해 진다.

@relation <relation-name> <화면 2> 데이터 로딩 <화면 3> 테스트 결과

m a s o 259
스 텝 바 이 스 텝 | 3

그램은 미리 데이터를 가늠해 보기 위한 아주 좋은 기능이다. 필 는 아래와 같이 도출된다.


자는 개인적으로 머신 러닝 알고리즘의 중요성 보다는 이런 데이
터를 보고 느낄 줄 아는 눈이 필요하다고 생각한다. 그러기 위해 Ranked attributes:
이런 추가 정보들은 큰 도움이 된다. 일단 베이지언 분류기를 만 268.419 3 petallength
들어보러 가도록 하자. 266.908 4 petalwidth
베이지언 분류기는 Classify 탭에 존재하고 있다. 그 탭을 클릭 126.413 1 sepallength
한 화면에서 Choose 버튼을 눌러 NaiveBayesSimple 분류기를 70.64 2 sepalwidth
선택하고 바로 start버튼을 눌러 결과를 확인해 보자. 기본 옵션
으로 Cross-validation test를 하는 것을 볼 수 있는데, 이는 이 랭킹 점수를 보니 petallength, petalwidth가 거의 근소한 점
전에 필자가 언급한 90%의 학습 셋과 10%의 테스트 셋으로 나 수차로 1,2위를 차지했고, sepallength 및 sepalwidth는 점수차
눠 10회 반복하는 테스트 방법이다. 그런데 그 결과 로그에서는 가 상당히 많이 나는 것을 볼 수 있다. 따라서 petallength, petal
앞에 Stratified란 단서가 붙어 있는 것을 볼 수 있는데 이는 좀 width만을 사용해 다시 베이지언 분류기를 돌려보도록 하자.
더 테스트를 공평하게 하기 위한 하나의 방법으로 분류대상이 되 petallength와 petalwidth만을 돌려보기 위해 Preprocess 탭
는 클래스의 전체 셋 비율을 학습 셋과 테스트 셋에 동일한 비율 으로 가서 sepallength와 sepalwidth를 체크하고 Remove버튼
로 맞춰주기 위한 방법이다. 이렇게 하면 무작위로 cross- 을 눌러 제거하자. 제거한 후 다시 Classify탭으로 이동해 start
validation 테스트를 할 때 학습 셋에 하나의 클래스 학습정보가 버튼을 눌러 결과를 확인해 보자. 재미있게도 속성을 더 줄여놓
터무니없이 부족하거나 없어서 테스트 결과에 이상한 결과가 나 았더니 아래와 같이 정확도가 다소 좋게 나온 것을 볼 수 있을 것
오는 것을 방지할 수 있다. 따라서 이런 Stratified 테스트조차 올 이다.
바른 결과가 나오게 하기 위해서는 데이터 셋이 충분히 모집단을
반영할 수 있게끔 샘플링을 잘 하는 게 중요하겠다. Correctly Classified Instances / 144 / 96%
다른 결과들 보다 우리가 먼저 직관적으로 봐야 할 것은 아래
와 같다. 그림으로 설명하기 위해서는 지면이 좁지만 여기서 좀 더 확인
을 해봐야 할 것이 있는데, 어떠한 데이터가 속성을 줄임으로 인
Correctly Classified Instances / 143 / 95.3333 % 해 정확히 분류가 되었는지에 대한 확인이 필요하다. 그 이유는
이러한 에러 분석은 새로운 속성의 추가를 요하는 중요 데이터로
이는 총 150개의 데이터에서 143개의 예측이 성공적이었다는 작용할 수 있기 때문이다. 그래서 데이터 마이닝 엔지니어는 항
결과를 의미한다. 상“왜 그럴까?”
하는 의문을 가질 필요성이 있다. 이 의문의 시작
사실 일반적으로 속성 개수가 많다고 해서 결과가 항상 좋게 이 바로 새로운 데이터 패턴의 위대한 발견으로 이어지는 경우가
나오리라는 법은 없다. 따라서 어떤 속성이 가장 결과 클래스 결 많기 때문이다. 위 데이터를 결정 트리를 사용한 방법으로 테스
정에 많은 영향을 끼치는지 살펴보기 위해 Select attribution탭 트 해보도록 하자.
으로 넘어가 속성들의 랭킹을 알아보도록 하자. 필자는 주로 일단 대표적인 결정 트리 알고리즘인 ID3는 입력 속성으로 이
Chi-square 속성 선택 방법을 사용하니 이를 통한 결과를 확인 산형 값을 받는다. 그러나 사실 바로 Classify 탭으로 가서 ID3알
해 보면 <화면 4>와 같다. 고리즘을 선택하려 해도 연속형 속성값을 가지고 있는 관계로 선
택이 불가능하다. 그 이유는 우리가 가지고 있는 모든 속성값들
은 연속형 속성이라는 점 때문이다. 따라서 적절한 전처리가 필
요한데 이 전처리를 이산화(Discretize) 작업이라고 한다.
그럼 Preprocess쪽으로 다시 와서 Filter의 choose 버튼을 클
릭해 filter-unsupervised-Discretize를 클릭한다. 그 후 class를
<화면 4>
제외한 모든 속성을 선택한 후 (현재 데이터는 4개 속성이 모두
feature selection 알고리즘 구동
존재하는 데이터여야 한다) Apply버튼을 클릭해 이산화 프로세
<화면 4>는 클래스에 영향을 주는 속성 랭킹을 나타내는데, 이 싱을 한다. 이 후 Classify 탭에서 ID3 알고리즘을 선택해 실행을

260 m a s o
데이터 마이닝 및 WECA GUI를 알아보자

start버튼을 눌러 빌드를 해보도록 하자. 상당히 재미있는 결과 용할 수 있다는 장점이 있다. 게다가 모델이 어떤 과정을 통해 결
가 나오는 것을 아래를 통해 확인 할 수 있다. 과 클래스를 판단하는지도 눈으로 볼 수 있다.

<리스트 3> iris데이터의 결정 트리 결과 로그


Correctly Classified Instances / 135 / 90%
petalwidth = '(-inf-0.8]': Iris-setosa
petalwidth = '(0.8-1.75]'
90%의 정확도라는 결과는 베이지언 분류기보다 성능이 좋지 | petallength = '(-inf-2.45]': null
| petallength = '(2.45-4.75]'
않게 나온 것이다. 그렇지만 이 결과만을 가지고‘결정 트리 알고 | | sepallength = '(-inf-5.55]'
리즘이 별로 좋지 않구나’
하고 단언하는 건 문제가 있다. 필자가 | | | sepalwidth = '(-inf-2.95]': Iris-versicolor
| | | sepalwidth = '(2.95-3.35]': Iris-versicolor
앞부분에서도 언급했다시피 90% 이상의 데이터마이닝 작업이 | | | sepalwidth = '(3.35-inf)': null
전처리 및 테스트 과정에 들어간다. 그럼 전처리 부분을 다시 살 | | sepallength = '(5.55-6.15]': Iris-versicolor
| | sepallength = '(6.15-inf)': Iris-versicolor
펴보자. 옵션을 다시 살펴보니 Discretize 옵션에서 B(Bin) 옵션 | petallength = '(4.75-inf)'
에 10이라는 너무 많은 빈이 선언되어 있음을 볼 수 있다. 이 결 | | sepallength = '(-inf-5.55]': null
| | sepallength = '(5.55-6.15]': Iris-virginica
과의 클래스 정보를 이용해 적절하게 Bin 개수를 정하고 범위를
| | sepallength = '(6.15-inf)': Iris-versicolor
정할 수 없을까 생각해 볼 수 있는데, 물론 이것에 대한 옵션이 petalwidth = '(1.75-inf)'
| sepallength = '(-inf-5.55]': null
이미 외카에 존재한다.
| sepallength = '(5.55-6.15]'
다시 filter-choose 버튼을 클릭해 이번에는 supervised를 선 | | sepalwidth = '(-inf-2.95]': Iris-virginica
| | sepalwidth = '(2.95-3.35]': Iris-virginica
택하고 attribute에서 Discretize를 선택해 연속형 속성들을 체
| | sepalwidth = '(3.35-inf)': null
크하고 apply버튼을 눌러 전처리를 수행해보자. 이 방법은 이전 | sepallength = '(6.15-inf)': Iris-virginica
이산화 작업의 결과를 취소하기 위한 것으로 Preprocess-undo
버튼을 클릭하면 된다. 이 작업이 끝났으면 다시 Classify 탭으로 지금까지 외카 GUI환경에 대해서 간단하게 살펴보았다. 사실
가서 ID3 알고리즘을 클릭해 보자. 이번에도 역시 재미있는 결과 이 GUI에 익숙해 졌다고 느꼈다면 독자는 100점 만점에 50점 정
가 나왔다. 도 맞았다고 생각하면 된다. 100점을 맛보고 싶다고 하는 독자가
있다면 이번 강좌에서 한가지 결과를 두고 여러 번 전처리와 알
Correctly Classified Instances / 141 / 94% 고리즘 선택 및 구동을 한 사실에서 힌트를 얻기를 바란다.
사실 그렇다. 데이터마이닝이라는 것은 정상이 어디인지 모르
여기서 이산화 방법을 교사(supervised) 방법으로 바꾸었는 는 첩첩산중을 지도 없이 오르는 것과 같다. 어느 언덕배기에 와
데, 간단히 설명하면 클래스 결과를 고려해 정보 이득(infor 서 이게 정상이다라고“야~호”
를 외치며 만족해도 누구도 그것
mation gain)이 높은 분할 포인트를 계산, 적절하게 이산화를 수 에 대해서 그게 잘못된 것이라 이야기 하지 않는다. 하지만 뒤켠
행하는 방법이다. 물론 정확도를 96%로 올릴 수 있는 방법이 존 10m 풀이 우거진 곳에 다시 올라갔을 때 언덕이 존재한다는 사
재하는데 이 부분은 독자들에게 숙제로 남길까 한다. 실을 안다면 그게 정상이라 단언하지 못할 것이다. 그 언덕 위에
방금 전까지 베이지언과 결정 트리 알고리즘을 가지고 놀아봤 우리가 알지 못하는 진짜 정상이 있을지 아니면 그 너머 너머에
다. 이 두 알고리즘도 장∙단점이 존재하는데 처음부터 좋은 결 있을지 누구도 모른다. 오직 수많은 데이터와 자신의 인내심만이
과가 나온 베이지언에 호의적일 수 있겠지만 사실 실무에서는 결 정답을 알고 있다는 사실을 마이닝 프로세스 동안 지속적으로 상
정 트리 계열의 알고리즘이 많이 쓰이고 있다. 이는 확률 기반의 기시키길 바란다. 그리고 그 정상을 빨리 찾기 위해 여러 모델 평
베이지언의 단점 때문인데, 특정 데이터에서 과도하게 높은 확률 가 방법에 대한 충분한 이해와 심지어는 알고리즘에 대한 이해까
이 나와 잘못된 분석을 하게 될 가능성이 다소 있다. 하지만 결정 지도 필요하다는 것을 마지막으로 기억해 주길 바란다.
트리의 경우 오류 데이터에 상대적으로 안전하다고 알려져 있다.
게다가 우리가 만든 모델 인스턴스를 사용하기 위해 추후
참고자료
weka.jar를 인클루드 하고 모델을 로딩하는 과정을 거쳐야 하는
1. 외카 공식 문서, www.cs.waikato.ac.nz/ml/weka/index_documentation.html
데 결정트리의 결과 로그로 나온 <리스트 3>의 결과만으로도 if- 2. Data Mining, Practical Machine Learning Tools and Techniques (Second Edition)
3. collective intelligence in action(manning publication)
else의 다중 중첩으로 간단하게 모델을 어느 개발 환경에서나 사

m a s o 261

You might also like