데이터 모형을 돌리고 나면, 모델에 대한 결과를 추출 해 올 때는 특별한 테크닉이 필요하다. 모형의 결과는 list화 되어 있기 때문에, 이를 어떻게 조정하고 추출 해오는지가 중요하다.
완벽하게 최적화 하기 위해서는 좌충우돌(左衝右突) 할 수 밖에 없다.
이번에는 은닉 마르코프 HMM 모형에서 데이터 최적화 하기 위한 도식이다.
HMM 은닉 마르코프 모델 데이터 서치 |
프로젝트와 같은 형태 처럼 분석 하는데, 분석을 진행 하는 단계 마다, 지속적으로 기존에 해 왔던 분석이 잘못된 것을 발견 하게 된다.
지금 현재 하고 있는 것이 해들리 위컴(Hadley Wickham)의 R for Data Science의 나온 아래와 같은 그림 대로 가고 있다.
해들리 위컴의 데이터 분석 프로젝트에서 반드시 필요한 것 |
시계열 분석 실적 사례 은닉 마르크프 모델은 동적인 모델이므로 언제 이야기가 끝이 날지는 모르겠지만, 이것을 계속 하다보면, 언젠가는 끝날 것이다.
밀덕 세계에서는 한번의 실전이 백번의 훈련 보다 났지 않다고 하였는가?
데이터 셋과 모형에 대한 기초적인 지식만 있어도 실제로 모델 돌리는 것은 어렵지 않다. 하지만, 이것을 해석 하는 문제는 다른 문제이다. 아래 페이지에 이것을 해석하는 것과 그 동안의 소스 코드를 모아 놓았다.
https://rdmkyg.blogspot.com/2021/09/hmm-4.html
HMM 한개에 여러개 이미지 그리기 |
이 포스트에서 사용할 소스코드를 실행 하기 위하여, 앞 편에서 구현된 소스코드를 모은 아래의 링크를 클릭 하여 다운 받아야 한다.
https://drive.google.com/file/d/1fbJc-yvbPGGYs5d07GFD4wwgkON1Q4n9/view?usp=sharing
나는 사실 어느 모형을 사용하느냐, 아니면, 어떠한 로직을 사용 하느냐에 대한 결정을 하는데, 데이터 시각화가 굉장히 중요하다고 느끼는 데는 R을 접하고 나서 4년이 지난 후에나 알았다.
위의 동영상은 내가 통계 패키지 R을 시작 하였을때, 보았던 동영상이지만, 그 당시에는 데이터 핸들링에 관심이 많았던 시기 였다. 즉, 업무용 프로그램을 엑셀에서 R로 넘어가는 시기였다고 보면 된다.
여기에서는 통계학을 전공하는 학생에게는 "인문학"이 중요하다는 이야기도 있었는데, 나같은 경우는 이학사에, 공학과 관련된 업무(Equipment maintenance)를 하고 있다.
시계열 데이터에서 state(상태) 나타내는 것을 은닉마르코프 모형이다. 은닉 마르코프 모형에서 어느 시점에서 구입해서, 어느 시점에서 판매하는 것이 가장 좋은 것인지, 판단 하려면, 그래프를 이용한 EDA를 하여야 한다.
state별로 데이터의 분포로 보는 것은 매우 중요하다. 특히, 많은 금액을 투자 한다면, 더욱 많이 봐야 한다. 즉 투자 비용이 크면 클 수록 많이 봐야 한다는 것이다.
2번째 편에서는 은닉 마르코프 모형에서 state 별 조건부 확률 결과인 posterior probability (사후확률)에 대한 구체적인 값을 논의 하고자 한다. 이것에 대한 내용을 보면, 조건부 확률을 어떻게 되는지 알수 있을 것이다.
아래에 나오는 그래프와 소스코드를 돌리려면, 아래의 링크의 코드를 먼저 실행 하여야 한다.
https://rdmkyg.blogspot.com/2021/09/hmm-1.html
대상 은닉 마르코프 그래프 (HMM) |
주식에서 일정 주기로 시세가 변동 하는 주식은 박스를 그려서 분석 할 수 있다. 하지만, 박스를 그려서 분석 할 수 있는 주식이 그다지 많지 않다.
시작에서 충격(Ex 코로나 팬더믹) 받지 않은 이상은 박스를 그려서 분석 할 수 있는 주식이 있는데, "대상"이라는 주식이 내가 찾은 유일한 주식인 것 같다.
auto.arima 검정은 놀랍게도, 실험적으로 발견하는 heuristics 방법을 따르는 박스-젠킨스 방법에 비해, ARIMA 모델을 자동으로 정해 주기 때문에, 분석이 매우 용이하다. 이것은 R에 forecast에 패키지에 있으며, 사용법이 간단 하다.
시계열 분석의 중요도가 매우 높은 경우에는 데이터 시각화, 기반지식, 학습 파라에터 추정, 여러 가지 실험을 통해 모델을 평가 하여, 파라메터를 조정 하여야 한다.
하지만, 대용량의 데이터를 한꺼번에 분석 하여야 할 때, auto.arima는 매우 중요한 요소로 작동 할 수 있다.
초보들에게는 여러번 실험에서 박스-젠킨스 방법 보다는 auto.arima가 사용이나 결정 측면에서 더욱 좋다고 볼 수 있다.
은닉 마르코프 모델 HMM의 적합 과정은 매우 복잡하다. 그러나 R 에는 이를 구현할 여러가지 패키지가 존재 한다. 여기서는 depmixS4 패키지로 작업 하겠다. 다음 코드를 사용해 적절한 시계열을 만든다.
직접적으로 측정이 불가능한 상태의 존재와 이 기술이 적용될 다양한 데이터 셋에 대해 분명하게 옳은 정답은 얻을 수 없다는 것을 상정 한다. 그러면 은닉 상태들의 선험적 지식 없이 이 알고리즘은 은닉 상태들을 어떻게 식별 할 까? 그 대답은 바로 반복성에 있다. 관측을 설명 가능한 가장 적절한 은닉 상태를 도출하는 마법 같은 해결책은 존재하지 않는다. 그러나 완전하게 구체화된 시스템이 있다면 추정을 향해 나아갈 가능성은 열린다.
은닉 마르코프 모형 (hidden markov model(HMM)은 특히 시계열 모델링에 유용하다. 또한 시계열 분석에 학습될 데이터에 올바르게 라벨링 된 정답이 존재하지 않는 비지도 학습이 적용된 회귀 한 경우이기 때문에 흥미롭기도 하다.
HMM 은 앞서 살펴본 칼만 필터의 실험에서 얻었던 직관, 즉 관측 가능 변수가 시스템을 가장 잘 묘사하지 못한다는 개념에서 영감을 받았다.
선형 가우스 모델에 적용된 칼만 필터처럼 과정에는 상태가 있으며 관측이 그 상태에 대한 정보를 준다는 개념을 상정 한다.
오차가 쉽게 발생하는 센서를 사용하여 뉴턴 역학을 따르는 물체를 추적하는 전형적인 예를 살펴 보자. 물체의 위치를 물체의 속도와 가속도에 대한 함수로 보는 뉴턴 운동법칙 Newton's laws of motion에 따라 시계열을 생성한다.
이 때 물체의 움직임은 계속성을 갖지만, 측정이 이산적으로 분리된다고 가정해보자. 우선 가속도에 대한 계열을 정하고, 위치와 속도는 0에서 시작한다. 또한 물리적으로 비현실 적이지만 각 시간 단계에서 각 시간단계의 시작점에서 순간 가속도가 변하고 다시변하기 전까지는 지속적인 값을 가진다고 가정 하자.
칼만 필터 Kalman filter는 충분히 성숙한 방법이다. 시계열로 부터 새로운 정보를 결합하는 데 사용되고 과거에 알려진 내부 상태 추정 정보를 지능적으로 결합해 준다. 칼만 필터의 최초 사용 사례로는 아폴로 11호 apollo 11 mission 이 있다.
아폴로 칼만필터 |
상태공간 모델은 확률적이거나 결정론적인 애플리케이션 모두 사용할 수 있다. 또한 연속적이거나 이산적으로 샘플링된 데이터 모두에도 적용 될 수 있다.
이 사실만으로도 상태공간 모델의 활용도와 상당한 유연성을 어느 정도 예측 할 수 있다. 특히 장점과 단점은 상태공간 모델이 가진 유연성에 의해 생긴다.
상태 공간 모델은 '실세계'에서 얻는 동기에 영향을 받는다. 추정시 측정 오류를 고려하는 방법, 사전 지식이나 믿음을 추정에 주입하는 방법처럼 실제 공학 문제에서 발생 있는 문제 들을 해결 한다.
시계열 분석의 장단점을 아래와 같이 나열을 한다.
실세계에서 서로 관련성이 있는 여러 시계열은 병렬로 존재할 수 있다. 이미 이러한 데이터를 정리하고 정렬하는 방법은 살펴 보았다. 이제 정리된 데이터를 최대한 활용하는 방법을 배워볼 차례이다. 그 중 여러 변수에 대한 AR(p) 모델을 생성해 볼 수 있다. 이러한 모델은 변수들에게 서로 영향을 주고 받는 상황을 제공한다는 제공한다는 장점을 가진다.
즉, 모든 변수가 x 로 지정되며 특별히 y를 위한 변수는 없다는 것이다. 대신 적합은 모든 변수에 대해 균등하게 이루어진다. 한편 계열이 정상이 아닐 때, 전에 살펴본 모델처럼 차분이 적용될 수 있다는 것을 참고해야 한다.
오늘날에는 수동으로 반복하는 과정에서 벗어나, 모델을 자동으로 선택하는 방법이 사용된다. 자동화된 모델의 선택은 앞서 forecast 패키지의 auto.arima() 함수와 함께 잠깐 언급된 AIC 와 같은 다양한 정보 손실 기준을 토대로 이루어 진다.
ARIMA 즉 "자기회귀누적이동평균" 의 모델에 대한 설명의 미리 보고 파라메터 선택 부분을 봐야 한다. 앞에 이야기에서 이어지는 것이다. 필요시 아래를 클릭 하여 참고 하면 된다.
https://rdmkyg.blogspot.com/2021/08/arima.html
ARIMA 모델에서 파라메터의 역할을 아래와 같다.
앞에서는 html의 간단한 sheet를 소개 하였습니다. html은 주로 골격을 나타나는 것이라, 디자인을 하는데는 css로 하여야 합니다. 아래 코드와 같이 css 관련 하여 매우 간단하게 코딩 하겠습니다. body 부분의 css 코딩 ...