2017/01/16 - [CS/ML] - ML 101 : 머신러닝의 종류

2017/01/19 - [CS/ML] - ML 101 : weka install & arff

2017/01/29 - [CS/ML] - ML 101 : try weka

2017/02/07 - [CS/ML] - ML 101 : 머신러닝 무료 강의 모음



이번 글에서는 음반 매장 내에 위치에 따라 아이돌 그룹 레드벨벳의 CD 판매량을 의사결정트리로 예측할 수 있는 모델을 만들어보도록 하겠습니다. 아래의 훈련용 데이터는 음반 위치, 매대가 눈높이에 있는지 여부, 그리고 실제 구매 여부로 이뤄져 있습니다. 


데이터 분석 작업은 다음의 단계로 이뤄집니다.


1. 훈련용 데이터를 불러와 의사결정 트리를 만들고 해당 내용을 그래프로 확인 한 후,

2. 의사 결정 트리 분류기로 자바 코드를 생성하고,

3. 테스트용 데이터로 자바 코드를 시험함.


우선 아래의 훈련용 데이터를 다운 받으시고, 내용을 확인해 보도록 하겠습니다.

훈련용 데이터

redvelvet.arff


훈련 데이터의 속성은 5가지 입니다. Placement - 음반이 진열된 위치, Prominence - 진열된 음반 중 레드벨벳 CD 비중, Pricing - 판매가격이 정가 대비 할인된 비율, Eye Level - 고객의 눈높이 진열 여부, Customer Purchase - 구매 여부. 이 속성들 중 판매량에 가장 영향을 미치는 속성이 무엇인지 알아 보고 속성 값을 바탕으로 판매량을 예측해 보도록 하겠습니다.

웨카에서 훈련용 데이터를 불러오고, 의사결정 트리를 사용하기 위해 J48 알고리즘을 선택하고 분석을 하게 되면 아래의 결과를 얻을 수 있습니다.


결과를 보면 판매에 가장 큰 영향을 미치는 속성은 placement 입니다. end_rack 에 두었을 때 판매 매출을 높이는데 가장 좋은 값이라고 할 수 있고, cd_rack 에 두었을 때는 가격 요인에 의해 판매 여부가 결정된다고 할 수 있습니다. 마지막으로 std_rack 에 두었을 때는 눈높이에 제품이 있느냐의 여부에 따라 판매 여부가 결정된다고 해석 할 수 있습니다. 


이 내용을 시각화하여 볼 수 있습니다. [Result list (right-click for options) 패널에 있는 알고리즘을 우 클릭하여 Visualize Tree 옵션을 선택하면 아래의 그림을 확인 하실 수 있습니다. 


시각화 뿐만 아니라 분석된 내용을 소스 코드로 확인할 수 있습니다. 웨카를 이용해 생성한 알고리즘 기반의 코드 재사용 및 수정이 가능 한 것 입니다. 아래의 그림과 같이 More Options 버튼을 선택하고 Output source code 를 체크한 후 [start] 버튼을 눌러 다시 한번 웨카 분석을 수행 합니다.



분석이 완료 되면 코드가 별도의 파일로 나오지는 않고 classifier output 화면에 기존 결과 분석 내용과 함께 출력 되게 됩니다. 생성된 코드를 빌드 하기 위해서는 [weka.jar] 가 필요 합니다. 해당 파일은 Weka 를 설치한 폴더에 가시면 있습니다. Eclipse 에 프로젝트를 하나 생성하고 WekaClassifier.java 를 만들어 출력된 내용을 복사 해줍니다. 그리고 Referenced Libraries 에 weka.jar 를 첨부하여 빌드를 수행하시면 됩니다.


소스 코드를 자세히 보시면 WekaClassifier 안에 WekaWrapper 클래스와 실행부인 main 이 같이 존재 하는 것을 보실 수 있습니다. 저는 코드 보기 편하기 위해 WekaClassifier 와 WekaWrapper 를 분리하였습니다. 꼭 그럴 필요는 없지만 Claasifier 에 생성된 함수명을 살펴보시면 랜덤한 이름으로 생성되어 있어 가독성이 많이 떨어집니다. 이에 추후 작업 및 코드 정리를 위해 분리해서 작업하시는 것을 추천 드립니다.


(계속..)