레이블이 머신러닝인 게시물을 표시합니다. 모든 게시물 표시
레이블이 머신러닝인 게시물을 표시합니다. 모든 게시물 표시

2017년 4월 25일 화요일

윈도우에 XGBoost 설치하기

딥러닝 세상이지만 케글이나 각종머신러닝 대회에서 XGBoost 역시 꾸준히 좋은 성능을 보여주고 있다. XGBoost의 이론적인 내용은 접어두고 일단 윈도우, 파이썬 환경에서 설치하는 법을 정리해둬야겠다. (다른 PC에 설치할 일이 생길 것 같은 나를 위해서..)

일단 파이썬은 설치되었다고 가정하면 Git과 MinGW가 필요하다.
링크에서 Git 윈도우 버전을 받아 Bash Shell을 실행하면 터미널이 열린다. XGBoost 를 저장할 경로에서 다음의 명령어를 입력한다.

$ git clone --recursive https://github.com/dmlc/xgboost
$ cd xgboost
$ git submodule init
$ git submodule update
cs

복사한 XGBoost를 빌드하려면 64bit 윈도우에서 MinGW-W64가 필요하다.
다운을 받고 설치하는데 setting에서 architecture를 x86_64로 변경한다.

다음 과정이 조금 까다로울 수 있는데 위에서 설치한 MinGW의 라이브러리가 있는 폴더를 윈도우에 등록해줘야 한다.
여기를 참고해 디렉토리(예를 들어 C:\Program Files\mingw-w64\x86_64-5.3.0-posix-seh-rt_v4-rev0\mingw64\bin) 를 시스템 경로로 추가해준다.

Git Bash를 닫고 다시 열어
$ which mingw32-make
cs
를 입력했을 때 위의 디렉토리를 돌려주면 이제 준비 완료.

작업을 편하게 하기 위해 다음을 입력하고
alias make='mingw32-make'
cs
XGBoost를 설치한 곳으로 가 다음을 차례대로 입력해준다.
(XGBoost 튜토리얼은 더 간단한데 그렇게 했을 때 왠지 파이썬에서 설치가 안됐다.)

$ cd dmlc-core
$ make -j4
$ cd ../rabit
$ make lib/librabit_empty.a -j4
$ cd ..
$ cp make/mingw64.mk config.mk
$ make -j4
cs

이제 아나콘다 프롬프트 등에서 XGBoost를 설치하면 된다.

cd code\xgboost\python-package
python setup.py install
cs

파이썬에서 XGBoost를 import 되는 지 다음을 통해 확인하면 진짜 끝.

1
2
3
4
5
6
import os
mingw_path = 'C:\\Program Files\\mingw-w64\\x86_64-5.3.0-posix-seh-rt_v4-rev0\\mingw64\\bin'
os.environ['PATH'= mingw_path + ';' + os.environ['PATH'
import xgboost as xgb
cs

2017년 4월 5일 수요일

주가 패턴분석 (K-Means Clustering)

혼자 몰래하는 블로그였는데 systrader님(블로그) 페이스북에 포스팅2개가 링크되면서 갑자기 방문객이 늘었다..; 스스로 나중에 보려고 올리는 글들이라 다른 사람들에게 도움이 될 지 모르겠다. 꾸준히 블로그를 올릴만큼 부지런하지는 않으니 곧 다시 나만 하는 블로그가 되겠지.

K-Means Clustering 이라는 비지도 학습(unsupervised learning)을 이용하면 군집 분석을 쉽게 할 수 있다. 정해진 K개 그룹의 중점(centroid)을 구하고 데이터와 거리를 계산해 업데이트 방법으로 원리도 간단하다.

R을 이용해 2007년부터 5일간격으로 삼성전자의 20일 동안 주가를 8개 패턴으로 분류한 결과다. 패턴 8과 같은 경우가 20일 동안 지속적으로 상승하는 유형이고 패턴 2가 반대로 하락하는 유형이다. 빈도수를 보면 8번, 2번, 7번 순으로 많다. 위의 패턴번호를 삼성전자 주가에 표시해 그리면 다음과 같다.


최근엔 지속 상승하는 8번 유형에서 둔화된 7번, 5번 유형으로 변하는걸 볼 수 있다. 

이렇게 구한 패턴유형은 다른 모델의 input feature로 활용할 수 있다. 자신의 트레이딩 규칙, 알고리즘이 어떤 패턴에 잘 맞는지 확인해보는 것도 좋을 듯하다.

다른 분들처럼 본문에 R 코드를 삽입할까 했는데 코드가 너무 간단해 생략...