안녕하세요?


몇 포스팅 이전부터 계속해서 왜 인지 첫 주식 데이터에서 부터 결정을 하지 않는 에러가 보고가 되어 있었습니다. 그래서 이번에는 드디어 해결책을 찾아내는 데 성공했으며, 그 결과를 보여드리고자 합니다. 다만, 이 결과가 그렇게 까지 기뻐할 만한 결과만은 아니라는 점이 다소 아쉽기는 합니다.



먼저 인터넷상에 있는 RLTrader의 코드입니다. 이 코드에서는 자세히 보면 주식 데이터를 준비해서 datamanager.py에서 처리한 다음에 기간별로 자르고, 다음으로 학습 데이터 분리등이 일어납니다.



그런데 제 경우에는 반대로 먼저 기간별로 자르고 나서, datamanager.py에서 처리를 하는데, 이 때문에 문제가 생기는 것이 아닌가 하는 생각이 듭니다.



그래서 먼저 datamanager.py로 가서, 위 스크린샷처럼 cuttring_point를 지우고, 데이터를 자르는 부분을 주석처리를 해서 불능화 시키도록 합니다.



그렇게 데이터를 전처리 하고나서, 다음으로 데이터를 자르도록 순서를 바꾸었습니다. 그리고 나서 이 데이터를 메서드를 뛰어 넘어서 전달을 할 수 있는 self가 붙어 있는 변수로 집어 넣도록 했습니다.




이렇게 학소 나서, 다음으로는 간단하게 10회의 강화학습을 시키도록 명령을 내려 봅니다. 먼저 RLTrader를 실행시켜서 위 스크린샷처럼 셋팅한 다음 강화학습에 들어갑니다.



2분도 안 걸리는 시간이 걸린 다음에 강화학습이 끝난 것을 볼 수 있었습니다.



그러나 이렇게 해보았지만, 그래도 상황이 나아지지 않는 것을 볼 수 있었습니다. 이게 어떻게 된 일인지는 모르겠습니다만, 지금까지 했는 것으로만은 해결이 되지 않는 다는 것을 알 수 있었습니다.



그래서 다음으로는 주목한 것이 바로 dropna()라는 함수입니다. 이 함수는 dataframe안에 nan이라는 값이 있으면, 뒤에 붙는 값이 axis=0이면 row를 날리고, axis=1이면 column을 제거하라는 함수입니다.




그리고 나서 이번에는 확인을 위해서 한번 강화학습에 들어가 보도록 합니다. 이번 강화학습에서도 역시 같은 데이터 베이스를 사용하며, 같은 비율이 사용이 되었습니다.



겨우 10회의 강화학습만을 하기 때문에 이번에도 걸린 시간이 2분도 되지 않는 것을 확인할 수 있기는 있었습니다. 이제 결과를 확인해 볼 시간입니다.



그 결과 위 스크린샷의 왼쪽 스크린샷의 그래프처럼 처음의 데이터 부터 인공지능이 판단을 하는 것을 확인할 수 있기는 있었습니다. 다만 문제는 원래의 그래프인 오른쪽을 보면, 문제가 이렇게 결정을 내리지 않는 데이터가 들어오면 dropna()함수는 그냥 데이터를 날리는 것에 불과하기 때문에 그렇게 좋아할 상황만은 아니라는 생각이 듭니다. 그래서 나중에 실전 모의투자에 들어가게 되면, 문제가 있는 것이, 120개의 데이터에 해당하는 사전 데이터를 가져 와야 한다는 것 입니다.

+ Recent posts