Tag Archives: weka

[프로그래머를 위한 데이터마이닝] #2. WEKA를 활용한 데이터 마이닝

외카(WEKA)는 데이터 전처리, 분류, 회귀, 클러스터링, 연관 규칙, 시각화 등 데이터 마이닝 툴을 포함하는 오픈소스 프레임워크다. 또한 GUI 환경을 제공하여 다양한 데이터 마이닝 알고리즘을 직접 활용해볼 수 있다.

설치하기

설치를 하려면 먼저 로컬 머신에 자바가 설치되어 있어야 한다. 플랫폼에 따라 설치해야 하는 자바 버전이 다를 수 있으니 WEKA 사이트를 참고하여 자신의 머신에 맞는 자바를 설치한다. 여기에서는 최신 버전인 3.7.7(weka-3-7-7.dmg)를 설치한다.

설치 후 외카를 실행하면 아래와 같은 화면이 나온다.

weka_startup

  • Explorer
    학습할 데이터셋에 대해 다양한 알고리즘을 활용하여 데이터를 학습하는 도구
  • Experimenter
    알고리즘을 서로 비교
  • KnowledgeFlow
    SAS E-miner와 비슷한 드래그앤드롭 방식의 학습 프로세스 생성 도구

외카 API

GUI 환경 이외에도 API를 직접 활용하여 프로그래밍할 수도 있다. 실습을 위해 이클립스에서 프로젝트를 하나 만들어서 weka-dev-3.7.7.jar, RBFNetwork-1.0.4.jar를 라이브러리로 추가한다.

외카의 주요 패키지는 아래와 같다.

  • weka.core
    공통 컴포넌트
  • weka.classifiers
    분류 알고리즘
  • weka.clusters
    클러스터링 알고리즘
  • weka.attributeselection
    속성 선택 알고리즘
  • weka.associations
    연관 분석 알고리즘
  • weka.filters
    데이터셋 필터링 컴포넌트

여기에서는 책, “실전 예제로 살펴보는 집단지성 프로그래밍”에 나오는 로그인 횟수를 예측하는 모델을 만들고자 한다. 예를 들어 학습할 데이터셋이 다음과 같다고 하자.

사용자 나이 성별 로그인횟수
20 5
제인 30 2
에드 40 3
에이미 45 4

이 데이터셋에서 나이와 성별이 입력 변수 X에 해당하고, 로그인 횟수가 목표 변수 또는 클래스 변수인 Y에 해당한다. 이처럼 주어진 데이터셋을 기반으로 예측 모델을 생성한 후, 아래의 시험 데이터셋에 대한 로그인 횟수를 예측해 보자.

사용자 나이 성별 로그인횟수
마이크 32 Y
메리 32 Y

예측 모델을 만드는 과정은 다음과 같다.

  • 데이터셋의 속성을 생성한다.
  • 학습 데이터셋을 생성한다.
  • 예측 모델을 빌드한다.
  • 모델의 성능을 측정한다.
  • 새로운 사용자의 목표 변수를 예측한다.

위의 과정을 처리하는 메인 함수는 다음과 같다.

weka_prediction_step1

데이터셋의 속성을 생성하는 메서드는 다음과 같다.

weka_prediction_step2

속성의 타입에 따라 생성하는 방식이 달라진다. 숫자형(numeric) 속성인 경우 Attribute 클래스를 사용한다. 명목형(nominal) 속성인 경우 FastVector를 사용해 각 항목을 추가한다.

데이터셋의 속성을 생성했으면, 해당 속성을 가지는 학습 데이터셋을 생성한다.

weka_prediction_step3

학습 데이터셋에서는 입력속성뿐만 아니라, 각 입력에 따른 목표 속성(로그인 횟수)까지 포함하여야 한다. 학습할 데이터셋이 준비되면, 해당 데이터셋을 바탕으로 예측 모델을 빌드한다.

weka_prediction_step4

데이터셋의 특성에 따라 다양한 분류 알고리즘을 적용할 수 있다. 여기에서는 RBF 알고리즘을 적용한다.

예측 모델이 빌드되면, 모델의 성능을 측정한다.

weka_prediction_step5

모델의 성능을 측정하려면 목표값이 알려진 별도이 데이터셋이 필요하다. 일반적으로 학습 데이터셋의 30% 정도는 남겨두어 학습할 때는 70%의 데이터만으로 모델을 빌드한다. 그런 후 모델의 성능을 평가할 때 나머지 30%인 데이터셋, 즉 검증용(validation) 데이터셋을 활용한다.

예측 모델의 성능은 다음과 같다.

weka_prediction_step6

예측 모델의 성능을 확인하여, 다른 알고리즘을 적용하여 이전 모델과 비교해 본다. 이러한 과정을 거쳐 최적의 예측 모델을 만들어낸다.

최종적인 예측 모델이 만들어지면 새로운 데이터 셋, 즉 시험 데이터셋에 대해 결과를 예측해본다.

weka_prediction_step7

예측 결과는 다음과 같다.

Predicted number of logins [age=32]:
Male = 3.3578194529075382
Female = 2.9503429358320865

즉 32세 남자의 경우 3.35회, 여자의 경우 2.95회 로그인할 것으로 예측했다.

참고 자료