본문 바로가기

728x90
반응형
728x90
반응형
분류 전체보기 319

시계열 자료의 평활법 - 회귀평활 part 2 지난번 포스트(2020/10/15 - [머신러닝 with R/시계열모델링 with R] - 시계열 자료의 평활법 - 회귀평활 part 1)에 이어서 이번에는 loess, splin 평활법 등에 대해 알아보자. 첫 째, loess(local polynomial regression) 평활법은 시계열 데이터의 특정 윈도우에 대해 가중하여 평활화를 수행하며 자료를 쪼개서 가중회귀 분석을 수행하는 방법이다. 그리고 둘 째 Spline 평활법의 경우 차원의 수를 줄이려고 의도하지 않는 분석기법인 non-parametric regression 기법을 주로 이용하는 방법으로 3차 수식의 매끄러운 곡선으로 평활화한다. #loess, Spline 방법의 자세한 수리적 유도과정에 대해 좀 더 상세한 내용을 알고자하는 사람은.. 2020. 10. 19.
시계열 자료의 평활법 - 회귀평활 part 1 지난 포스트에 이어서 우리는 불필요한 잡음을 없애는데 계속해서 주력할 것이다. 왜냐? 대부분의 주식투자자들이 추세를 판가름하고자 할때 이동평균을 많이 활용한다. 즉 어제 오늘의 변동성에 휘둘리기 싫다는 의미가 된다. 하물며 일반적인 투자도 그러할진데 모델링을 이용한 AI 혹은 EA(Expert Adviser)로 구현하고자 한다면 더 더욱 이러한 문제에 직면하게 된다. 추후 다루겠지만 강화학습을 수행함에 있어서 일반적인 Policy Gradient 에서도 이러한 문제가 발생을 한다. 간단히 부연설명을 하자면 환경에서 주어지는 데이터가 조금만 변하더라도 정책 신경망의 최적화된 파라메터는 급격히 변동을 한다. 이러한 문제를 해결하고 강화학습의 학습이 잘 되도록 하기 위해서 Actor-Critic, A3C 등의.. 2020. 10. 15.
시계열자료의 평활법 - 지수 평활법 이동평균은 가중치가 없는 산술평균으로 평활하는데 비해 지수 평활은 가중치를 부여한 가중평균을 산정하는 방법이다. 이전 포스트에서(2020/10/15 - [머신러닝 with R/시계열모델링 with R] - 시계열 자료의 평활법 - 이동평균 평활법) 다루었던 가중이동평균 평활법과 별반 차이가 없다. 그러나 가중치를 연구자가 임의로 설정하지 않고 최소 SSE(sum sqared error)를 나타내는 알파값을 추정하는 방법을 적용한다면 홀트-윈터 방법을 이용할 수 있다. #홀트-윈터 방법의 자세한 수리적 유도과정에 대해 좀 더 상세한 내용을 알고자하는 사람은 관련서적을 참고하자. 아래의 추천도서는 개별 모델들의 수리적 유도과정 뿐만 아니라 적절한 샘플 예제도 구현하기 용이하도록 제공하고 있어 상당한 도움이 .. 2020. 10. 15.
시계열 자료의 평활법 - 이동평균 평활법 시계열의 자료는 추세, 계절, 경기 및 특이요인으로 구성된다. 이렇게 특정한 요인에 의해 표본 추출이나 잡음 때문에 데이터에 좋지 않은 미세한 변동이나 노이즈가 있을 때 이런 변동이나 불연속성을 약하게 하여 자료의 중심 집중도를 파악하기 위해 평활을 수행한다. 이러한 평활법의 방법으로 이동평균, 가중평균, 지수적 이동평균, 홀트-윈터스예측, 회귀모형 평활, 기타 등이 있는데 이중에서 이동평균의 경우 가장 많이 사용하고 일반적으로 널리 알려져 있다. 방법은 다양하지만 추구하는 바는 불규칙한 변동의 중심 집중도를 파악하기 위한 것이라는 목적은 동일하다. 자 그러면 이제부터 R을 이용해서 위의 평활법들을 수행해보자. 아래의 코드는 단순한 이동평균 평활법의 방법이다. 어떤 임의의 시계열 자료에 대해서 단순이동이.. 2020. 10. 15.
시계열 자료의 상관분석과 검정 시계열 자료는 인접한 데이터와 상관성을 가질 확률이 높은 편이다. 이러한 특성때문에 허구적인 회귀의 문제가 발생할 수 있고 그렇기 때문에 지난번 포스트에서 차분 안정화 작업을 통해 안정적인 시계열로 변환하는 방법을 알아보았다. 보통의 시계열 자료와 달리 경제학에서 다루는 시계열 자료들은 확정적이 아닌 확률적인 시계열 자료인 경우가 대부분이다. 특히 이러한 확률적 시계열 자료 중에서 무작위의 분포일 경우 백색잡음, 정규분포의 형태를 보이는 경우에는 가우시안 백색잡음 형태라 한다. 단순히 차분 시계열의 분포가 안정적이라는 것은 눈으로 봤을 때 직관적으로 추론하는 정도 이지만 이에 대한 통계적 검증을 수행하지는 않았다. 이제 안정성 검증을 수행해 볼 예정인데 그 전에 시계열 자료가 안정적이라는 것의 정의를 먼.. 2020. 10. 12.
시계열 자료의 허구적 인과관계 우선 시계열분석은 시차를 다루는 모형이라는 점에서 일반적인 회귀분석과 차이점이 있다. 동시적 영향을 고려한 정적모형이 그러한데 앞서 우리가 살펴보았던 회귀분석(2020/09/07 - [머신러닝 with R/데이터마이닝 with R] - 삼성전자 중회귀분석 with R - 심화편)이 그렇다. 즉 어떠한 임의의 시점에서의 횡단면적 분석법이고 종단면적 분석과는 괴리가 있다. 이전 포스트에서 다루었던 경로분석, 주성분 분석, 요인분석 역시 자기자신의 시차변수가 설명변수로 추가되었다면 이는 전혀 다른 결과를 불러왔을 것이다. 시리얼리 코릴레이티드 된 자료를 다루는 동적 모형 분석기법을 바로 시계열 분석이라고 하는데 주로 이코노믹 쇼크가 발생했을 때 그러한 충격파가 얼마나 영향을 미칠 것인가를 탐구하는 것으로 경제.. 2020. 10. 12.
시계열 분석이란? 다변량분석 : 2020/09/07 - [머신러닝 with R/데이터마이닝 with R] - 삼성전자 중회귀분석 with R - 심화편 요인분석 : 2020/09/09 - [머신러닝 with R/데이터마이닝 with R] - 요인분석(Factor Analysis) with R 주성분분석 : 2020/09/09 - [머신러닝 with R/데이터마이닝 with R] - 주성분분석(PCA) with R 구조화방정식 : 2020/09/14 - [머신러닝 with R/데이터마이닝 with R] - 구조방정식(SEM : Structural Equation Model) 모형 with R - 실전편 위와 같이 지금까지 우리가 분석해왔던 방법들은 어떤 시점의 데이터들의 집합 즉 횡단면 자료를 이용해서 분석을 해왔다. 즉 .. 2020. 9. 17.
Keras 를 이용한 텍스트마이닝으로 뉴스예측하기 with Python 지난 포스트 (2020/09/04 - [머신러닝 with Python/텍스트마이닝 with Python] - Keras 를 이용한 텍스트마이닝 with Python)에서 학습했던 모델을 이용하여 삼성전자의 뉴스를 학습한 뒤 "삼성전자의 주가 전망"에 대한 예측을 진행해보았다. 아래 첨부된 뉴스크롤링 파일(005930.txt)를 다운받아 파이썬 스크립트의 같은 경로에 저장하고 아래의 코드를 돌리면 삼성전자의 주가 전망은 "초 긍정적인 긍정적인 상황이라고 미 2일 현지시간 보도했다 보도했다 보도했다" 라고 예측된 문장(아래의 코드에 predict함수)이 나오게 된다. 문맥이 상당히 매끄럽지 못하다. 뭐 얼핏 봐서는 그런데로 향후 주가전망은 좋을 것이다라는 점을 추측할 수는 있겠지만 동사를 여러번 반복했다. .. 2020. 9. 17.
데이터구조 : Numpy 와 Pandas 머신러닝을 다루다 보면 가장 골치아픈게 데이터의 가공과 처리이다. 그렇기 때문에 우선 가장 많이 쓰이는 numpy 와 판다스의 사용법을 간략하게 짚고 넘어가보자. 우선 파이썬은 리스트와 튜플, 그리고 셋 정도로 구분해볼 수 있는데 그 중 사용빈도가 높은 것은 리스트와 튜플정도이다. 자 그렇다면 둘의 차이는 뭘까? 그렇다. 아래의 코드를 보자. [] 와 ()가 차이난다. 그 다음은? 리스트는 데이터를 추가하거나 삭제하는데 있어서 자유롭고 튜플은 그렇지 못하다. 왜? 귀찮게 뭐하러 이렇게 만들어놨을까? 그냥 리스트만 만들면 되지! 라고 생각할지도 모르겠지만 C++에서도 변수를 선언할 때 동적배열과 정적배열은 메모리 점유율이 다르다. double, int 등 타입을 선언할 때도 메모리 점유율이 다르다. 즉 자.. 2020. 9. 15.
신경망분석(Neural Net) with R - 실전편 이론적 백그라운드는 지난번 포스트 2020/09/10 - [머신러닝 with R/데이터마이닝 with R] - 신경망분석(Neural Net) with R - 이론편 에서 상세히 다루었으니 이번에는 바로 실전에 돌입한다. 우선 뉴널넷과 SVM의 성능비교를 위해서 stepwise 회귀분석과 비교를 실행해 보았다. 아래의 코드에서는 학습데이터와 테스트 데이터를 이분화하지 않고 단순히 잔차제곱합과 R^2 값만 계산하여 모델의 성능을 비교해봤지만 과적합 여부 등을 판단하기 위해서는 predict를 테스트데이터에 적용하여 어느 정도의 적중도가 있는지를 함께 검토해봐야 한다. Python 에서는 train, test split 이런 api 도 제공을 하지만 R에서는 직접 만들어줘야 한다. 엄청 번거롭다. 그래서 다.. 2020. 9. 10.
신경망분석(Neural Net) with R - 이론편 Tensorflow를 이용한 Python 머신러닝에서도 한번은 다룰 내용이지만 R 역시 원리는 동일하기 때문에 잠시 짚고 넘어가자. 인공신경망은 인간 두뇌구조와 유사한 뇌신경망의 원리를 모방한 기술로 학습을 통하여 데이터들간의 패턴 혹은 관계를 습득하는 방식을 의미한다. 이게 사실 인공지능이라는 아주 거창한 말로 불려서 그런거지 데이터마이닝의 관점에서 본다면 복잡한 구조를 가진 빅데이터로부터 예측문제를 해결하기 위한 (비)선형 분석방법이라고도 볼 수 있다. 우리가 일반적으로 인공신경망이라 함은 FFNN(Feedforward Neural Network)와 같은 계층적 네트워크를 의미하며 가장 먼저 개발되어 보편적으로 알려져 있다. 그 중에서 simple layer(광의의 의미에서 머신러닝), multi l.. 2020. 9. 10.
의사결정나무(Decision Tree) with R 의사결정나무는 기존의 다변량분석기법(로짓회귀, 선형회귀, 주성분, 요인 등)과 비교하여 비교적 직관적인 표를 이용하여 분석하고자 하는 방법이다. 분석의 대상이 연속형 자료인가 범주형 자료인가에 따라 회귀트리, 분류트리로 구분된다. 통계적 분석에서 봤을 때 크게 군집분석의 한 종류로도 볼 수 있다. 우선 트리의 구조는 회귀트리, 분류트리 할 것 없이 기본적으로는 루트마디, 자식마디, 부모마디, 끝 마디, 중간마디, 가지, 깊이 등으로 구성된다. 그냥 임의로 자료를 분류하거나 예측하는 것이 아니라 일정한 규칙 예를 들면 가지의 분기기분, 중지규칙, 가지치기 규칙 등에 따라 필요한 통계량이 각 각 다르다. 노드를 분류하는 핵심은 부모노드에서 자식노드로 분기할 때 무슨 변수를 어떻게 분류하여 구분하는 것이 결과.. 2020. 9. 10.