머신러닝을 활용한  지표 탐지 모델 만들기
서비스

머신러닝을 활용한 지표 탐지 모델 만들기

핵클 데이터 사이언티스트 팀의 지표 탐지 기능 출시 후기를 만나보세요!

Wonder
,
Data Scientist
May 9, 2023
콘텐츠 공유

데이터 분석가가 해야 하는 업무 중 하나는 지표에 이상이 생겼을 때 리포팅 하고, 지표가 하락하거나 상승한 이유를 찾아보는 겁니다. 매일 모든 지표를 모니터링 할 수 있으면 좋겠지만 언제나 데이터 분석가의 시간에 비해 중요한 지표는 많기 때문에 지표의 변화에 빠르게 대응하기 어려운 경우가 생기게 되죠.

만약 핵클이 대신 지표를 모니터링 하고, 변화를 감지해서 알려준다면 어떨까요? 내부 리소스를 절감하여 더 중요한 업무에 집중할 수 있음은 물론, 지나칠 수 있었던 ROI 개선의 기회들을 놓치지 않고 잡을 수도 있지 않을까요?

핵클은 이 가설을 검증해보기로 결심하고 올해 1분기 지표 추세를 자동으로 분석해 주는 Hackle AI - 매출 구조대 파일럿 테스트를 진행 했습니다. 파일럿 테스트 결과 실제로 많은 고객들이 우려했던 불편함을 겪고 있음을 확인했고, 문제를 개선해 드리기 위해 핵클 데이터 사이언티스트 팀에서는 머신러닝을 활용한 지표 탐지 모델을 만들어 보기로 했습니다.          

첫 번째 과정으로 지표의 추세가 변화하는 지점인 변곡점을 자동으로 탐지할 수 있는 모델을 만들고 있는데, 이번 글에서는 저희 팀이 사용했던 방법론들과 모델링 과정을 소개해 드리겠습니다.  

시계열 데이터에서 변곡점을 찾는 방법에는 여러 가지가 있는데요.

그 중에서도 오늘 글에서 다룰 방법론은 가장 쉽게 적용해볼 수 있는 MACD와 간단하지만 정확도가 높고, 직관적인 파라미터 수정이 유용해 시계열 데이터 분석에 널리 사용되고 있는 Prophet 모델 입니다.

이 중 저희 팀이 선택한 방법과 그 이유는 무엇일까요? 궁금하시면 이 글을 끝까지 읽어주세요!  

MACD

MACD (Moving Average Convergence Divergence)는 주로 주가 분석에서 언제 매매 또는 매수를 해야 하는지 알려주는 방법으로 단기 지수 이동 평균과 장기 지수 이동 평균의 차이를 이용해 변곡점을 찾습니다.

MACD 값이 0보다 크면 단기 지수 이동 평균이 장기 지수 이동 평균보다 크고, 이는 최근에 데이터가 상승했다는 의미입니다. 반대로 MACD 값이 0보다 작으면 최근에 값이 하락해 단기 지수 이동 평균이 장기 지수 이동 평균보다 작다는 걸 나타냅니다.

2022년 9월 28일부터 2023년 3월 22일까지 핵클 대시보드 방문한 유저 수 그래프입니다. 방문자 수는 주식 데이터와 특징이 다르기 때문에 아래 수식으로 계산했습니다.

단기 지수 이동 평균 선과 장기 지수 이동 평균 선이 교차하는 지점에 MACD는 0의 값을 가집니다.

마지막으로 단기 이동 평균 선과 장기 이동 평균 선의 차이가 큰 지점을 찾기 위해 Signal이 필요합니다. Signal은 MACD의 지수 이동 평균 선으로 주가 분석에서는 9일 평균을 내지만 이번에는 7일로 계산했습니다.

MACD와 Signal 선이 교차되는 지점은 두 이동 평균 선의 격차가 가장 커지는 지점으로, 이후에는 차이가 좁혀지기 시작합니다. 그러면 근 기간 내에 두 이동 평균 선이 교차할 가능성이 있다고 할 수 있습니다.

주가 분석에서는 MACD가 Signal을 아래에서 위로 교차하면 매수 지점, 반대로 위에서 아래로 교차하면 매도 지점이라고 합니다. 우리는 추세가 변화하는 변곡점을 찾는 게 목표이기 때문에 모든 매수 또는 매도 지점을 변곡점이라 했습니다.

하지만 단순히 두 선이 교차하는 지점을 변곡점이라고 하면 변곡점 수가 너무 많아 이해하기에도 어려울 뿐만 아니라 추세가 변화했다는 알림이 오더라도 노이즈라 여길 수 있습니다. 선의 기울기가 가파를수록 MACD 방법의 신뢰도가 높아지기 때문에 두 선이 교차될 때 선의 기울기 차이가 어느 정도 이상인 경우만 변곡점이라 표시했습니다.

MACD 방법은 간단한 계산으로 추세를 파악할 수 있어 분명한 장점을 가지고 있습니다. 하지만 false positive(변곡점이 있다고 하지만 실제로는 발생하지 않을 가능성)가 종종 발생하고, 후행성 지표이기 때문에 변곡점을 늦게 찾는다는 단점이 있습니다.

Prophet

빠른 기간 내 결과를 보기 위해 MACD 방법을 시도해 보았지만 위와 같은 한계점과 확장성이 부족하여 Prophet 모델을 검토하기로 했습니다. Prophet은 Facebook에서 공개한 시계열 데이터 라이브러리로 적용이 쉬우면서 정확도가 높은 장점을 가지고 있습니다.

Prophet 모델은 시계열 데이터는 다음의 네 가지 요소로 나눌 수 있다고 가정합니다.

이렇게 각 요소마다 별도의 함수를 추정하고, 이들의 값을 더하는 모델을 일반화가법모델 (GAMs, Generalized Addictive Models)이라고 합니다.

일반화가법모델의 가장 큰 장점은 새로운 요소를 추가하는 게 쉽다는 건데, 만약에 주기가 다른 계절성이 두 개 이상 확인되거나 외부 변수를 추가하고 싶으면 단순히 해당 변수로 만든 함수를 식에 더해주면 됩니다.

또한, Prophet은 베이지안 접근 방식을 사용하기 때문에 베이지안 방법의 장점도 가지고 있습니다.

위에서 살펴본 일별 블로그 방문자 수 데이터(data)에 Prophet 모델을 적용해 보았습니다.

공식 문서(https://facebook.github.io/prophet/docs/diagnostics.html)에서는 changepoint_prior_scale, seasonality_prior_scale, holidays_prior_scale, seasonality_mode 파라미터 튜닝을 권장하고 있지만 이번에는 changepoint_prior_scale만 확인해 보겠습니다.

add_country_holidays는 휴일 요소를 추가하는 함수로 Prophet 모델은 나라별로 휴일 효과를 반영할 수 있습니다.



위 그래프에서 검은 점은 실제 값, 파란 선과 영역은 예측값과 95% 신뢰 범위, 빨간 선은 추세선, 빨간 점선은 변곡점 입니다. 모델이 추세 변화에 너무 민감하게 반응하고 있어 changepoint_prior_scale 값을 0.05로 조정 했습니다. 추세의 기울기가 완만해졌고, 전에는 포착했던 변곡점이 더 이상 표시되지 않은 걸 확인할 수 있습니다.

위의 과정을 거쳐 핵클 데이터 사이언티스트 팀에서는 Prophet 모델 기반의 지표 변화 탐지 기능을 만들었고, 출시를 앞두고 있습니다. 곧 핵클 대시보드에서 Hackle AI라는 이름으로 별도의 작업 없이도 지표의 변화를 바로 파악하실 수 있게 될 거에요.  

초반에는 시계열 데이터에서 변곡점을 찾고 평소와 추세가 다른 지점을 탐지해서 전달하는 정도겠지만, 점차 예측이나 지표가 변화하는 원인을 다양하게 전달할 수 있도록 고도화 해갈 예정이니 많은 관심 부탁 드립니다!

트위터에 공유하기
제품 주도 성장에 필요한 모든 기능을
All-in-One 플랫폼 핵클과 함께 시작해보세요!
무료 체험 시작하기
콘텐츠 공유
인터뷰에 나온 회사처럼,
빠르게 성장하고 싶다면 핵클과 함께 하세요!
핵클 드림팀 신청하기

성장의 시작, 핵클이 함께합니다!

비대면 바우처를 통해 70% 할인된 금액으로 핵클을 시작해보세요.
자세히 알아보기

👀 이런 콘텐츠는 어때요?