SlideShare a Scribd company logo
ML+주식 삽질기
phase 1
2017/07 신호철
요즘 딥러닝이 대세라던데~?
https://www.youtube.com/watch?v=V1eYniJ0Rnk
부푼 꿈을 안고, 일단 컴퓨터 구입
+
환경설정
- 윈도우 사용
- 증권사 연동때문.
- 아나콘다 설치
- 헐... 윈도우 필수 뿐만 아니라, 증권사 연동 때문에 32비트 버전을 설치해야한다고 함.
- https://wikidocs.net/2825
- 이 당시는 python 3.6을 깔면 tensorflow-gpu가 설치 안 되므로 python 3.5인 4.2.0을 설치.
- 4.2.0도 tensorflow-gpu는 설치 안됨…
- 64비트 윈도우의 경우, anaconda x86 버전을 설치해도 tensorflow cpu only 조차 설
치 안됨.
가상화
- 가상화를 할 수 밖에 없으니...
- 가상환경으로 32비트와 64비트를 나눠서 써야함.
(32비트 환경에서만 돌리면 tensorflow가 제대로 동작 할리가…)
- http://stackoverflow.com/questions/33709391/using-multiple-python-engines-32bit-64bit-
and-2-7-3-5
- >set CONDA_FORCE_32BIT=1
- >conda create -n py35_32 python=3.5
- >set CONDA_FORCE_32BIT=
- >conda create -n py35_64 python=3.5
- python 3.5 32bit 환경
- >set CONDA_FORCE_32BIT=1
- 이건 마치...
tensorflow GPU 설치
- GTX1070을 샀는데 그냥 놀릴 수는 없지
- cuda 설치
- http://jaejunyoo.blogspot.com/2017/02/start-tensorflow-gpu-window-10.html
- https://www.tensorflow.org/install/install_windows
- cuda 8.0.61_win10 설치
- cudnn-8.0-windows10-x64-v6.0 설치
- python 3.5 64bit 환경에서 설치
- hello world 동작 체크
IDE
- pyCharm 설치
- 이유: 그냥 이 기회에 pyCharm을 한번 써 보려고...
- https://www.jetbrains.com/pycharm/download/#section=windows
- 가상화 환경설정
- https://www.jetbrains.com/help/pycharm/2016.3/conda-support-creating-conda-
environment.html
증권 모듈
- 키움증권 설치 (2017/3/20)
- 참고: https://wikidocs.net/4231
- Open api 신청
- Open api+ 모듈 설치
- Koa studio 설치
- 모의 투자 가입
- 최대 3개월동안 모의계좌 사용 가능
목표 설정
- 일단위 데이터를 기반으로 분석
- 다음날 오를 것 같은 종목을 예측하는 것이 1차 목표임.
데이터 수집
- 일데이터 수집
- 본래는 pandas datareader를 활용하려고 했음.
- 이렇게 잘 되면 좋을텐데… 보통 웹에 떠 돌아다니는 예제들은 pandas datareader를 사용함.
- https://github.com/dspshin/stock-analyzer/blob/master/noti.py
- 문제점
- 코스닥 지원 안됨.
- 지연이 심함. 이틀 전 데이터가 최신 데이터임. --;
이건 뭐, 시작부터 난관이
야.
키움 로그인
로그인 실행화면
종목 정보 가져 오기
def set(self, *args):
return self.kiwoom.dynamicCall("SetInputValue(QString, QString)", *args)
STOCK_COLUMNS = ["등락률", "거래량", "종가", "외인순매수", "기관순매수", "개인순매수"]
일별주가정보 가져오기
종목 정보 및 일별주가정보 실행화면
일별 주가정보 수집 및 DB에 저장...
- 안전하게 1초 delay로 호출했는데…
- 데이터를 1개 가져오려고 해도 중간중간 연결이 많이 필요해서 그런듯.
- 게다가 점검시간도 있음.
일데이터 분석을 위한 준비들
- sqlite3 to pandas
- http://stackoverflow.com/questions/36028759/how-to-open-and-convert-sqlite-database-to-
pandas-dataframe
- pandas tutorial
- https://github.com/jvns/pandas-cookbook/tree/master/cookbook
- 주식 지표 계산
- 하나하나 계산할 수는 없고 귀찮고, stockstats 모듈을 활용
- https://github.com/jealous/stockstats
- 노트북에서 일단 어떤 지표를 쓸까 체크 및 연습
Test log #1 - 뭐가뭔지 모르겠고 일단 돌리고 결과를 적어 놓자.
- kospi + 34, 100, 20, 2 + 10 epoch + 0.001 learning rate =
- 2297 sec, 0.971548 accuracy
- kospi + 34, 100, 100, 20, 2 + 10 epoch + 0.001 learning rate =
- 2286 sec, 0.9713 accuracy
- kospi + 34, 200, 100, 20, 2 + 10 epoch + 0.001 learning rate =
- 2347 sec, 0.9699 accuracy
- kospi+kosdaq + 34, 200, 100, 20, 2 + 10 epoch + 0.001 learning rate =
- 5586 sec, 0.95725 accuracy
???
- accuracy만 봐서는 괜찮은 것 같은데,
사실 accuracy가 너무 잘 나와서, 이제 돈 벌 일만 남은 줄 알았음.
BUT 결과 데이터를 자세히 살펴 보면 전혀 동작 안 함.
- 현실은, 전부 다 안 오르는 것으로 결과가 나옴.
- 한 종목씩 학습시켜서 특정 종목에 편중된 듯?
- 전체 자료를 가공 후, 학습시켜야 할 것으로 생각됨.
Test log #2
- 초기값에 편중되지 않도록 전체세트를 먼저 구하고 훈련.
- 200개 종목에 대해서만 우선 실험한 결과.
- network : 35, 200, 3
- 20170502까지의 데이터로 훈련 한 후, 0504결과를 예측한 결과.
전체를 훈련시키기 위한 개선
- 전체를 모두 메모리에 올릴 수가 없는 문제 발생
- OOM 이슈
- Batch로 나눠서 실행할 필요가 있음.
- 이전까지는 왜 batch가 필요한지 모르고 있었음. --;
- Np.save, load 사용해서 저장해 놓았다가 다시 꺼내서 훈련함.
Test log #3
- ~2017/05/04까지의 데이터를 가지고, 0508를 예측
- all + 34, 512, 1024, 512, 64, 3 + 0.0001 learning rate + 500 epoch
- 2.5 hours, accuracy 0.789907, 112 cands(all 1)
- all + 34, 512, 512, 512, 64, 3 + 0.0001 + 500
- 2.2 hours, accuracy 0.839576, 1 cands
- all + 34, 1024, 1024, 1024, 64, 3 + 0.0001 + 100
- 2.0 hours, accuracy 0.835347, 19 cands
- 001470 0
- 005740 0
- 005745 0
- 009275 0
- 023350 0
- 049770 0
...
- all + 34, 1024, 1024, 1024, 1024, 1024, 64, 3 + 0.0001 + 50
- 0.818191, 2+52 cands.
- …
- 더 deep + wide 하게 가도 의미가 없는 것 같아...
- 플라랩 동료의견 :
- 한 종목씩 따로 훈련해 보는건 어떨까?
입력에 변화를 줘 보자
- 입력 데이터를 오늘 데이터만 넣으면 충분하다고 생각했으나, 결과가 안 좋으
니 입력데이터로 어제+그제 데이터를 넣어볼까?
- 35 → 35 x 3 days
- 35 → 35 x 5 days
- Normalization을 안하고 있었네?
- 의견수렴: 한 종목에 대해서만 훈련
출력 변화
- 다음날 결과만을 예측 → 3일 연속 오르는지 체크 (binary classification)
- layer: 35*5 , 512, 512, 512, 512, 512, 64, 2
- 0.0001 learning rate, 1000 epoch
- 20150504 기준날로 예측한 결과
Accuracy 만으로는 부족
- Accuracy 만으로는 제대로 예측이 되었는지 알 수가 없음.
- recall, precision도 측정 필요.
- recall = tp / (tp+fn)
- 재현율이란, 실제 True인것 중에서 True로 예측한 것의 비율
- precision = tp / (tp+fp)
- 즉, 정확도는 True로 예측한 것 중에서 실제 True인 것의 비율
실제결과
Positive Negative
예측결과 positive True Positive False Positive
예측결과 negative False Negative True Negative
결과 update
- 결과는 더욱 처참해짐.
CNN ?
- 어차피 stockstat에서 특징을 뽑아내었으므로 크게 의미가 없다고 생각했으나
…
- 일단 지금은 패스
- 나중에 한번 실험해 봐야 겠음.
RNN
- 사실 이미 과거의 데이터를 사용하고 있긴 하지만...
- LSTM 사용.
LSTM 결과
- 그러나 결과는 역시 안습
- precision이 영 나아지지 않음.
- facebook tensorflow KR 커뮤니티에도 도움
요청을 했으나…
- https://www.facebook.com/groups/TensorFlowKR/
?multi_permalinks=473913729616357
- 댓글들이 거의 다 좌절스러움.
Re-try LSTM
- facebook 댓글 중, 3년 어치 데이터에 대해 모든 종목 값들을 training하면 어떨
까란 댓글이 그럴듯해서 적용.
- 후… 그러나 역시 결과는...
News
- 여기서 좌절할 수 없지. 뉴스를 수집해서 버무려볼까?
- 뉴스를 수집해서 분석하려면 한국어 NLP가 필요.
- konlpy 사용
- http://konlpy.org/ko/stable/install/
- 처리로직
- 문단별로 긍/부정 카운트하여 scoring해 보자꾸나.
Crawling News
- 일단 데이터가 있어야 하니, 뉴스들을 긁어모아 보자~
- 네이버 금융 장중특징주 crawling
- 시드 : http://finance.naver.com/news/market_special.nhn?&page=1
- field : datetime, title, url, content, …
- logic
- page=1 에서 한번 크롤한 결과가 나올때, 혹은 article이 없는 마지막 페이지가 나올 때 까
지
- selecting articles : $(".boardList2 tbody tr")
- url이 이미 저장된 것인지 새것인지 확인.
뉴스 분석
- 형태소별로 histogram 뽑아보고,
- 빈도별 긍부정 단어를 체크해서,
- +/- 점수를 주면 종목별로 어떤 뉴스인지
판단이 가능할 것으로 예상됨.
To be continued...
- 약 3개월간 주말(+평일 퇴근 후 밤)에 한 삽질은 여기까지입니다.
- 조금 지치지만, 계속 삽질 중입니다.
- 요즘 술만 먹고 있음 ㅠㅜ;
- 언젠가는 컴퓨터 투자비를 뽑을 수 있겠죠?
- 빨리 게임이나 열심히 해야겠다.
The End

More Related Content

PPTX
ML + 주식 phase 2
HoChul Shin
 
PPTX
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)
MinGeun Park
 
PPTX
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
NAVER D2
 
PDF
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
Taehoon Kim
 
PDF
강화학습 알고리즘의 흐름도 Part 2
Dongmin Lee
 
PDF
파이썬과 케라스로 배우는 강화학습 저자특강
Woong won Lee
 
PDF
강화 학습 기초 Reinforcement Learning an introduction
Taehoon Kim
 
PDF
강화학습의 흐름도 Part 1
Dongmin Lee
 
ML + 주식 phase 2
HoChul Shin
 
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)
MinGeun Park
 
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기
NAVER D2
 
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
Taehoon Kim
 
강화학습 알고리즘의 흐름도 Part 2
Dongmin Lee
 
파이썬과 케라스로 배우는 강화학습 저자특강
Woong won Lee
 
강화 학습 기초 Reinforcement Learning an introduction
Taehoon Kim
 
강화학습의 흐름도 Part 1
Dongmin Lee
 

What's hot (20)

PDF
RLCode와 A3C 쉽고 깊게 이해하기
Woong won Lee
 
PDF
알아두면 쓸데있는 신기한 강화학습 NAVER 2017
Taehoon Kim
 
PPTX
Stablecoin Regulation in Japan
So Saito
 
PDF
PINTOS Operating system homework 2
Gichan Lee
 
PDF
머신러닝 해외 취업 준비: 닳고 닳은 이력서와 고통스러웠던 면접을 돌아보며 SNU 2018
Taehoon Kim
 
PDF
Laplacian Pyramid of Generative Adversarial Networks (LAPGAN) - NIPS2015読み会 #...
Koichi Hamada
 
PDF
파이썬으로 나만의 강화학습 환경 만들기
정주 김
 
PDF
강화학습 기초부터 DQN까지 (Reinforcement Learning from Basics to DQN)
Curt Park
 
PPTX
딥러닝 - 역사와 이론적 기초
Hyungsoo Ryoo
 
PDF
빅데이터, 클라우드, IoT, 머신러닝. 왜 이렇게 많은 것들이 나타날까?
Yongho Ha
 
PDF
AtCoder Beginner Contest 023 解説
AtCoder Inc.
 
PDF
Introduction of Deep Reinforcement Learning
NAVER Engineering
 
PPTX
코딩테스트 합격자 되기 C++ 03장 시간 복잡도에 대한 강의를 진행했습니다.
ultrasuperrok
 
PDF
AtCoder Beginner Contest 016 解説
AtCoder Inc.
 
PDF
내가 이해하는 SVM(왜, 어떻게를 중심으로)
SANG WON PARK
 
PDF
가깝고도 먼 Trpo
Woong won Lee
 
PPTX
강화학습 기초_2(Deep sarsa, Deep Q-learning, DQN)
Euijin Jeong
 
PPTX
HBase Accelerated: In-Memory Flush and Compaction
DataWorks Summit/Hadoop Summit
 
PPTX
[0410 박민근] 기술 면접시 자주 나오는 문제들
MinGeun Park
 
PDF
강화학습의 개요
Dongmin Lee
 
RLCode와 A3C 쉽고 깊게 이해하기
Woong won Lee
 
알아두면 쓸데있는 신기한 강화학습 NAVER 2017
Taehoon Kim
 
Stablecoin Regulation in Japan
So Saito
 
PINTOS Operating system homework 2
Gichan Lee
 
머신러닝 해외 취업 준비: 닳고 닳은 이력서와 고통스러웠던 면접을 돌아보며 SNU 2018
Taehoon Kim
 
Laplacian Pyramid of Generative Adversarial Networks (LAPGAN) - NIPS2015読み会 #...
Koichi Hamada
 
파이썬으로 나만의 강화학습 환경 만들기
정주 김
 
강화학습 기초부터 DQN까지 (Reinforcement Learning from Basics to DQN)
Curt Park
 
딥러닝 - 역사와 이론적 기초
Hyungsoo Ryoo
 
빅데이터, 클라우드, IoT, 머신러닝. 왜 이렇게 많은 것들이 나타날까?
Yongho Ha
 
AtCoder Beginner Contest 023 解説
AtCoder Inc.
 
Introduction of Deep Reinforcement Learning
NAVER Engineering
 
코딩테스트 합격자 되기 C++ 03장 시간 복잡도에 대한 강의를 진행했습니다.
ultrasuperrok
 
AtCoder Beginner Contest 016 解説
AtCoder Inc.
 
내가 이해하는 SVM(왜, 어떻게를 중심으로)
SANG WON PARK
 
가깝고도 먼 Trpo
Woong won Lee
 
강화학습 기초_2(Deep sarsa, Deep Q-learning, DQN)
Euijin Jeong
 
HBase Accelerated: In-Memory Flush and Compaction
DataWorks Summit/Hadoop Summit
 
[0410 박민근] 기술 면접시 자주 나오는 문제들
MinGeun Park
 
강화학습의 개요
Dongmin Lee
 
Ad

Similar to 머신러닝 + 주식 삽질기 (20)

PDF
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
내훈 정
 
PDF
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
내훈 정
 
PDF
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
NAVER D2
 
PPTX
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
Ryan Park
 
PPTX
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
Ryan Park
 
PPTX
Image Deep Learning 실무적용
Youngjae Kim
 
PPTX
랩탑으로 tensorflow 도전하기 - tutorial
Lee Seungeun
 
PDF
딥러닝 세계에 입문하기 위반 분투
Ubuntu Korea Community
 
PDF
JMI Techtalk: 강재욱 - Toward tf.keras from tf.estimator - From TensorFlow 2.0 p...
Lablup Inc.
 
PDF
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
Wonha Ryu
 
PDF
메이플스토리 사례를 통해 살펴보는 서버사이드 봇/핵 탐지 시스템
ByungTak Kang
 
PDF
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
hoondong kim
 
PDF
[244] 분산 환경에서 스트림과 배치 처리 통합 모델
NAVER D2
 
PDF
Mlc 2017 문제 보기
Dong Heon Cho
 
PDF
100% Serverless big data scale production Deep Learning System
hoondong kim
 
PDF
Nationality recognition
준영 박
 
PPTX
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
Evion Kim
 
PDF
파이썬으로 익히는 딥러닝
SK(주) C&C - 강병호
 
PDF
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
흥래 김
 
PPTX
Ropasaurusrex
승표 홍
 
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
내훈 정
 
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
내훈 정
 
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
NAVER D2
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
Ryan Park
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
Ryan Park
 
Image Deep Learning 실무적용
Youngjae Kim
 
랩탑으로 tensorflow 도전하기 - tutorial
Lee Seungeun
 
딥러닝 세계에 입문하기 위반 분투
Ubuntu Korea Community
 
JMI Techtalk: 강재욱 - Toward tf.keras from tf.estimator - From TensorFlow 2.0 p...
Lablup Inc.
 
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
Wonha Ryu
 
메이플스토리 사례를 통해 살펴보는 서버사이드 봇/핵 탐지 시스템
ByungTak Kang
 
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
hoondong kim
 
[244] 분산 환경에서 스트림과 배치 처리 통합 모델
NAVER D2
 
Mlc 2017 문제 보기
Dong Heon Cho
 
100% Serverless big data scale production Deep Learning System
hoondong kim
 
Nationality recognition
준영 박
 
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
Evion Kim
 
파이썬으로 익히는 딥러닝
SK(주) C&C - 강병호
 
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
흥래 김
 
Ropasaurusrex
승표 홍
 
Ad

More from HoChul Shin (8)

PPTX
Commerce chatbot - 실습
HoChul Shin
 
PPTX
Commerce chatbot - dialog manager
HoChul Shin
 
PPTX
Commerce chatbot - 11번가 대화형 커머스 챗봇 적용 사례
HoChul Shin
 
PPTX
부동산 텔레그램봇 사내공유 @Tech
HoChul Shin
 
PPTX
부동산 텔레그램 봇
HoChul Shin
 
PPTX
Node.js DBMS short summary
HoChul Shin
 
PPT
Python3 brief summary
HoChul Shin
 
PPT
Lua vs python
HoChul Shin
 
Commerce chatbot - 실습
HoChul Shin
 
Commerce chatbot - dialog manager
HoChul Shin
 
Commerce chatbot - 11번가 대화형 커머스 챗봇 적용 사례
HoChul Shin
 
부동산 텔레그램봇 사내공유 @Tech
HoChul Shin
 
부동산 텔레그램 봇
HoChul Shin
 
Node.js DBMS short summary
HoChul Shin
 
Python3 brief summary
HoChul Shin
 
Lua vs python
HoChul Shin
 

머신러닝 + 주식 삽질기

  • 3. 부푼 꿈을 안고, 일단 컴퓨터 구입 +
  • 4. 환경설정 - 윈도우 사용 - 증권사 연동때문. - 아나콘다 설치 - 헐... 윈도우 필수 뿐만 아니라, 증권사 연동 때문에 32비트 버전을 설치해야한다고 함. - https://wikidocs.net/2825 - 이 당시는 python 3.6을 깔면 tensorflow-gpu가 설치 안 되므로 python 3.5인 4.2.0을 설치. - 4.2.0도 tensorflow-gpu는 설치 안됨… - 64비트 윈도우의 경우, anaconda x86 버전을 설치해도 tensorflow cpu only 조차 설 치 안됨.
  • 5. 가상화 - 가상화를 할 수 밖에 없으니... - 가상환경으로 32비트와 64비트를 나눠서 써야함. (32비트 환경에서만 돌리면 tensorflow가 제대로 동작 할리가…) - http://stackoverflow.com/questions/33709391/using-multiple-python-engines-32bit-64bit- and-2-7-3-5 - >set CONDA_FORCE_32BIT=1 - >conda create -n py35_32 python=3.5 - >set CONDA_FORCE_32BIT= - >conda create -n py35_64 python=3.5 - python 3.5 32bit 환경 - >set CONDA_FORCE_32BIT=1 - 이건 마치...
  • 6. tensorflow GPU 설치 - GTX1070을 샀는데 그냥 놀릴 수는 없지 - cuda 설치 - http://jaejunyoo.blogspot.com/2017/02/start-tensorflow-gpu-window-10.html - https://www.tensorflow.org/install/install_windows - cuda 8.0.61_win10 설치 - cudnn-8.0-windows10-x64-v6.0 설치 - python 3.5 64bit 환경에서 설치 - hello world 동작 체크
  • 7. IDE - pyCharm 설치 - 이유: 그냥 이 기회에 pyCharm을 한번 써 보려고... - https://www.jetbrains.com/pycharm/download/#section=windows - 가상화 환경설정 - https://www.jetbrains.com/help/pycharm/2016.3/conda-support-creating-conda- environment.html
  • 8. 증권 모듈 - 키움증권 설치 (2017/3/20) - 참고: https://wikidocs.net/4231 - Open api 신청 - Open api+ 모듈 설치 - Koa studio 설치 - 모의 투자 가입 - 최대 3개월동안 모의계좌 사용 가능
  • 9. 목표 설정 - 일단위 데이터를 기반으로 분석 - 다음날 오를 것 같은 종목을 예측하는 것이 1차 목표임.
  • 10. 데이터 수집 - 일데이터 수집 - 본래는 pandas datareader를 활용하려고 했음. - 이렇게 잘 되면 좋을텐데… 보통 웹에 떠 돌아다니는 예제들은 pandas datareader를 사용함. - https://github.com/dspshin/stock-analyzer/blob/master/noti.py - 문제점 - 코스닥 지원 안됨. - 지연이 심함. 이틀 전 데이터가 최신 데이터임. --; 이건 뭐, 시작부터 난관이 야.
  • 14. def set(self, *args): return self.kiwoom.dynamicCall("SetInputValue(QString, QString)", *args) STOCK_COLUMNS = ["등락률", "거래량", "종가", "외인순매수", "기관순매수", "개인순매수"] 일별주가정보 가져오기
  • 15. 종목 정보 및 일별주가정보 실행화면
  • 16. 일별 주가정보 수집 및 DB에 저장... - 안전하게 1초 delay로 호출했는데… - 데이터를 1개 가져오려고 해도 중간중간 연결이 많이 필요해서 그런듯. - 게다가 점검시간도 있음.
  • 17. 일데이터 분석을 위한 준비들 - sqlite3 to pandas - http://stackoverflow.com/questions/36028759/how-to-open-and-convert-sqlite-database-to- pandas-dataframe - pandas tutorial - https://github.com/jvns/pandas-cookbook/tree/master/cookbook - 주식 지표 계산 - 하나하나 계산할 수는 없고 귀찮고, stockstats 모듈을 활용 - https://github.com/jealous/stockstats - 노트북에서 일단 어떤 지표를 쓸까 체크 및 연습
  • 18. Test log #1 - 뭐가뭔지 모르겠고 일단 돌리고 결과를 적어 놓자. - kospi + 34, 100, 20, 2 + 10 epoch + 0.001 learning rate = - 2297 sec, 0.971548 accuracy - kospi + 34, 100, 100, 20, 2 + 10 epoch + 0.001 learning rate = - 2286 sec, 0.9713 accuracy - kospi + 34, 200, 100, 20, 2 + 10 epoch + 0.001 learning rate = - 2347 sec, 0.9699 accuracy - kospi+kosdaq + 34, 200, 100, 20, 2 + 10 epoch + 0.001 learning rate = - 5586 sec, 0.95725 accuracy
  • 19. ??? - accuracy만 봐서는 괜찮은 것 같은데, 사실 accuracy가 너무 잘 나와서, 이제 돈 벌 일만 남은 줄 알았음. BUT 결과 데이터를 자세히 살펴 보면 전혀 동작 안 함. - 현실은, 전부 다 안 오르는 것으로 결과가 나옴. - 한 종목씩 학습시켜서 특정 종목에 편중된 듯? - 전체 자료를 가공 후, 학습시켜야 할 것으로 생각됨.
  • 20. Test log #2 - 초기값에 편중되지 않도록 전체세트를 먼저 구하고 훈련. - 200개 종목에 대해서만 우선 실험한 결과. - network : 35, 200, 3 - 20170502까지의 데이터로 훈련 한 후, 0504결과를 예측한 결과.
  • 21. 전체를 훈련시키기 위한 개선 - 전체를 모두 메모리에 올릴 수가 없는 문제 발생 - OOM 이슈 - Batch로 나눠서 실행할 필요가 있음. - 이전까지는 왜 batch가 필요한지 모르고 있었음. --; - Np.save, load 사용해서 저장해 놓았다가 다시 꺼내서 훈련함.
  • 22. Test log #3 - ~2017/05/04까지의 데이터를 가지고, 0508를 예측 - all + 34, 512, 1024, 512, 64, 3 + 0.0001 learning rate + 500 epoch - 2.5 hours, accuracy 0.789907, 112 cands(all 1) - all + 34, 512, 512, 512, 64, 3 + 0.0001 + 500 - 2.2 hours, accuracy 0.839576, 1 cands - all + 34, 1024, 1024, 1024, 64, 3 + 0.0001 + 100 - 2.0 hours, accuracy 0.835347, 19 cands - 001470 0 - 005740 0 - 005745 0 - 009275 0 - 023350 0 - 049770 0
  • 23. ... - all + 34, 1024, 1024, 1024, 1024, 1024, 64, 3 + 0.0001 + 50 - 0.818191, 2+52 cands. - … - 더 deep + wide 하게 가도 의미가 없는 것 같아... - 플라랩 동료의견 : - 한 종목씩 따로 훈련해 보는건 어떨까?
  • 24. 입력에 변화를 줘 보자 - 입력 데이터를 오늘 데이터만 넣으면 충분하다고 생각했으나, 결과가 안 좋으 니 입력데이터로 어제+그제 데이터를 넣어볼까? - 35 → 35 x 3 days - 35 → 35 x 5 days - Normalization을 안하고 있었네? - 의견수렴: 한 종목에 대해서만 훈련
  • 25. 출력 변화 - 다음날 결과만을 예측 → 3일 연속 오르는지 체크 (binary classification) - layer: 35*5 , 512, 512, 512, 512, 512, 64, 2 - 0.0001 learning rate, 1000 epoch - 20150504 기준날로 예측한 결과
  • 26. Accuracy 만으로는 부족 - Accuracy 만으로는 제대로 예측이 되었는지 알 수가 없음. - recall, precision도 측정 필요. - recall = tp / (tp+fn) - 재현율이란, 실제 True인것 중에서 True로 예측한 것의 비율 - precision = tp / (tp+fp) - 즉, 정확도는 True로 예측한 것 중에서 실제 True인 것의 비율 실제결과 Positive Negative 예측결과 positive True Positive False Positive 예측결과 negative False Negative True Negative
  • 27. 결과 update - 결과는 더욱 처참해짐.
  • 28. CNN ? - 어차피 stockstat에서 특징을 뽑아내었으므로 크게 의미가 없다고 생각했으나 … - 일단 지금은 패스 - 나중에 한번 실험해 봐야 겠음.
  • 29. RNN - 사실 이미 과거의 데이터를 사용하고 있긴 하지만... - LSTM 사용.
  • 30. LSTM 결과 - 그러나 결과는 역시 안습 - precision이 영 나아지지 않음. - facebook tensorflow KR 커뮤니티에도 도움 요청을 했으나… - https://www.facebook.com/groups/TensorFlowKR/ ?multi_permalinks=473913729616357 - 댓글들이 거의 다 좌절스러움.
  • 31. Re-try LSTM - facebook 댓글 중, 3년 어치 데이터에 대해 모든 종목 값들을 training하면 어떨 까란 댓글이 그럴듯해서 적용. - 후… 그러나 역시 결과는...
  • 32. News - 여기서 좌절할 수 없지. 뉴스를 수집해서 버무려볼까? - 뉴스를 수집해서 분석하려면 한국어 NLP가 필요. - konlpy 사용 - http://konlpy.org/ko/stable/install/ - 처리로직 - 문단별로 긍/부정 카운트하여 scoring해 보자꾸나.
  • 33. Crawling News - 일단 데이터가 있어야 하니, 뉴스들을 긁어모아 보자~ - 네이버 금융 장중특징주 crawling - 시드 : http://finance.naver.com/news/market_special.nhn?&page=1 - field : datetime, title, url, content, … - logic - page=1 에서 한번 크롤한 결과가 나올때, 혹은 article이 없는 마지막 페이지가 나올 때 까 지 - selecting articles : $(".boardList2 tbody tr") - url이 이미 저장된 것인지 새것인지 확인.
  • 34. 뉴스 분석 - 형태소별로 histogram 뽑아보고, - 빈도별 긍부정 단어를 체크해서, - +/- 점수를 주면 종목별로 어떤 뉴스인지 판단이 가능할 것으로 예상됨.
  • 35. To be continued... - 약 3개월간 주말(+평일 퇴근 후 밤)에 한 삽질은 여기까지입니다. - 조금 지치지만, 계속 삽질 중입니다. - 요즘 술만 먹고 있음 ㅠㅜ; - 언젠가는 컴퓨터 투자비를 뽑을 수 있겠죠? - 빨리 게임이나 열심히 해야겠다.