본문 바로가기

Try Programs

선형 회귀 다음 값 예측 웹 애플리케이션 (Tensorflow.js)

취준을 하면서 간단히 만들어볼만한 프로젝트가 없을까 하고 생각하다가 친구들이 하나 둘씩 주식에 손을 대는 모습을 보았다.

주식을 하면서 조금이라도 오르락 내리락 하는 주가를 보며 친구들의 환호와 절망이 교차하는 것을 보고,

졸업논문을 준비하면서 잠깐 공부해본 인공지능 선형 회귀로 주가를 입력하면 그 값들의 패턴을 학습하여 다음 값(주가가 될 수도 있고 원하는 값을 입력하고 입력한 다음값)을 예측하는 웹 애플리케이션을 만들어보는 게 어떨까하고 만들어봤다.

 

 

기본적인 웹 디자인은 대강 이렇게 만들었으며 해당 웹에 들어간 기능인 선형회귀 기능은 Tensorflow.js를 이용하여 만들었다.

데이터베이스 필요 없이 단순 HTML, CSS, Javascript로 이루어진 웹프로젝트이다.

가운데 입력칸에 숫자들을 입력하고 훈련횟수와 결과값 개수를 입력한 다음 예측시작을 누르면 훈련이 시작된다.

숫자 추가 버튼으로 입력값의 개수를 추가할 수 있지만 Tensorflow.js의 predict() 메소드 내부의 문제인지 입력값이 17개가 되면 결과값이 -2.1095810e+ ~~ 이런 식으로 출력이 되고 18개 이상부터는 NaN (Not-a-number)가 반환되어버려서 입력값은 16개로 제한을 두었다.

 

대강 입력값을 입력하고 예측시작 버튼을 누른 상태이다.

예측값은 2000단위로 오르는 등차수열 패턴을 보여주고 있다.

그렇다면 예측값으로는 83000, 85000, 87000, ... 과 같이 2000단위로 올라가는 값을 출력하면 된다. 과연~?

 

결과는 위 사진처럼 나왔다.

83000, 85000가지는 정확히 나왔지만 87001, 89001, 91001처럼 1이 달려 나온 것을 볼 수 있다.

이는 학습이 충분히 되지 않은 것을 의미한다. 훈련 횟수 또는 입력값을 바꿔주면 해결될 것으로 보인다.

 

하지만 위 사진처럼 일정한 값의 주기로 +, - 되는 입력값이 주어졌을 때 우리의 예상처럼 1500, 2000, 1500, 1000 이렇게 반복되는 결과값을 출력하지 않는다.

이것은 선형회귀 자체가 변수의 선형 상관관계를 모델링하는 기법이기 때문에 그런 것 같다.

 

결과값을 입력한 수대로 쫘르륵 출력하지 않고 입력한 값에 대한 결과값 1개를 출력하고 해당 결과값을 포함시킨 예측값을 또 1개 출력하고, 또 출력된 결과값을 포함시킨 예측값을 1개 출력하고, 이런 식으로 개선한다면 조금은 우리가 이상적으로 바라는 주가 예측 프로그램처럼 출력값을 얻을 수 있을지 개선해봐야 할 점이다.

 

 

본 다음 값 예측 애플리케이션의 주소입니다. 한번 테스트해 보실 분들은 들어가서 테스트해보세요

predict2regression.netlify.app/

 

주식 동향 등 다음 값 예측 애플리케이션

머신러닝 선형 회귀를 이용한 다음 값 예측

predict2regression.netlify.app