전체 702

시계열 데이터를 RNN으로 분석할 때 데이터의 형태(차원)

입력데이터의 형태(차원) RNN모델에 시계열 데이터를 입력할 때 입력데이터의 형태는 3차원이 된다. (학습할 데이터의 수, sequence, x값의 개수) 데이터의 수 : 학습할 데이터의 개수 (데이터의 수-sequnce) sequence : 특정값을 구하기 위해 반영할 시간의 길이 x값의 개수 : 사용할 독립변수의 개수 아래의 예시에서 어떻게 이러한 모양이 나오는지 알아 본다. 이해를 돕기위해 데이터의 수는 빨간색, sequence는 초록색, x값의 개수는 파란색으로 표시한다 자전거 이용률 예시 season(계절), holdiay(방학여부), workingday(평일여부)에 따른 자전거 사용횟수(count)가 시계열적으로 나타나있는 데이터가 있다. 데이터의 개수는 총 13128개이다. X의 column..

RNN,LSTM,GRU를 이용한 비트코인 분석

RNN,LSTM,GRU 1. RNN 이전의 데이터가 다음 데이터에 영향을 준다. 시계열 분석에 유용하다 2. LSTM RNN의 단기기억문제 해결책으로 고안됨 (시간이 많이 지난 데이터의 영향력이 너무 낮아지는 문제) 3. GRU LSTM구조보다 간결하게 변경함, 빠른 속도와 유사한 성능 평가 함수 ### Evaluation of 1 pair of set def evaluation(Y_real, Y_pred, graph_on=False): loss_length = len(Y_real.values.flatten()) - len(Y_pred) if loss_length != 0: Y_real = Y_real[loss_length:] if graph_on == True: pd.concat([Y_real, pd...

holt-winter 선형추세+계절알고리즘 #비선형적 계절성 추정

holt-winter 알고리즘 비선형적 계절성을 추정하는데 사용한다. (1) additive seasonal meathod (2) multiplicative seasonal meathod 코드 import pandas as pd from statsmodels.tsa.api import ExponentialSmoothing import matplotlib.pyplot as plt location = './Data/BikeSharingDemand/Bike_Sharing_Demand_Full.csv' raw_all = pd.read_csv(location) # Holt-Winter's Seasonal target = raw_all.loc[:24*7*2, 'count'] target.plot(marker='o'..

공적분 모형 #삼성전자우와 삼성전자 주식의 공적분 판단 #페어트레이딩

공적분 모형 두 비정상성 시계열을 선형조합 했을 때 시계열의 적분 차수가 낮아지거나 정상상태가 되는 경우 * 적분차수 : 정상성이 되기까지 차분해야 하는 횟수 Y1의 적분차수가 1이고, Y2의 적분차수가 2이다. 이때 Y1과 Y2를 결합한 모형의 적분차수가 2(=max(y1 적분차수,y2적분차수)) 미만이 되면 Y1과 Y2는 공적분 상태라고 한다. 공적분 판별 VECM(Vector Error Correction Model)모형을 이용한다 위의 식을 통해 계산하고 이때 가설검정은 아래와 같이 해석한다 귀무가설 : 공적분 특성 없다 대립가설 : 공적분 특성 있다. 따라서 p-value가 유의수준보다 크면 공적분 특성이 있다고 판단한다. 삼성전자우와 삼성전자 주식의 공적분 판단실습 (1) 데이터로딩 # 데이터..

그래인저 인과관계 모형 #삼성전자 주식과 삼성전자우 주식의 인과관계 를 통한 실습

그래인저 인과관계 모형(granger cauality model) (1) 의미 X라는 사건과 Y라는 사건이 서로 인과관계가 있는지 확인하는 모형. 어떤 현상의 예측에 있어서 다른 정보를 이용하는 것이 얼마나 유의미한지 나타내는 척도. (2) 수행 순서 1. 사건 X와 Y를 설정한다. 2. X->Y일때의 가설검정을 수행한다. 3. Y->X일때의 가설검정을 수행한다. *가설검정 4. 결과해석 X->Y가 유의미하고 Y->X가 유의미하지 않으면 인과관계 (X->Y) 성립 Y->X가 유의미하고 X->Y가 유의미하지 않으면 인과관계 (Y->X) 성립 실습 삼성전자 우선주와, 삼성전자 간의 인과관계를 그래인저 모형을 통해 알아본다. (1) 데이터로딩 # 데이터 로딩 import pandas_datareader.da..

다변량 시계열 알고리즘 VAR

VAR알고리즘 벡터자기회귀(VAR) : 단변량 자기회귀의 일반적인 형태로서 여러개의 Y값이 시차에 따라 서로 영향을 주는 식(종속변수 y가 여러개) (1) var(1) : 시차 1까지 식에 포함시킴 (2) var(2) : 시차 2까지 식에 포함시킴 코드 예시 - 데이터 로딩 및 확인 import pandas as pd import numpy as np import matplotlib.pyplot as plt import statsmodels import statsmodels.api as sm # 데이터 로딩 raw = sm.datasets.macrodata.load_pandas().data dates_info = raw[['year', 'quarter']].astype(int).astype(str) ra..

fbprophet 라이브러리를 이용한 시계열 분석

페이스북에서 개발한 fbprophet을 이용하여 시계열 분석을 수행한다. 1. 필요 라이브러리 임포트 import timeit start = timeit.default_timer() from fbprophet import Prophet from fbprophet.plot import plot_plotly, plot_components_plotly from fbprophet.plot import add_changepoints_to_plot 2. 데이터 전처리 (1) 데이터 합치기 # Rearrange of Data Y_train_feR_prophet = Y_train_feR.reset_index() Y_train_feR_prophet.columns = ['ds', 'y'] YX_train_prophet =..

SARIMAX

1. SARIMAX의 의미 ARIMAX 모형에서 계절성 패턴을 추가한 모델. trend에 대하여 ARIMA를 수행하고, 계절성에 대해서 추가적으로 ARIMA를 수행한것으로 해석하면 된다. 2. 파라미터 (1) 파라미터 설명 총 7개의 파라미터가 존재한다. trend에 대한 부분(p,d,q)과 seasonal에 대한 부분(P,D,Q,m)으로 나뉜다. (2) 파라미터 선택방법 위와 같은 데이터에가 있을때 파라미터를 선택한는 방법은 아래와 같다. p : pacf에서 수렴하기 직전값. ( =2 ) d : adf테스트 및 추세의 가시적 확인으로 추세여부 확인( =1 ) q : acf에서 수렴하기 직전값 ( =3 ) P : pacf에서 계절성이 주기가 몇 번 반복 됐는지 확인 ( =3 ) D : 계절성이 있는지 확..

적분선형확률과정 ARIMA

1. ARIMA 분석 ARMA분석은 데이터에 추세가 있고 이 추세를 없애기 위해 ARMA에 (추세)차분을 추가로 적용한 상태를 말한다. (ARIMA = ARMA+차분) 즉 ARIMA(p,d,q)모델은 Y_t대신 (1-L)^d*Y_t 가 대입된 형태이다. acf결과 추세로 인한 비정상성이 보이고, 차분의 필요성이 있을 때 ARIMA(차분+ARMA적합) 분석을 수행한다. 2. 모수추정 ARMA와 마찬가지로 ACF와 PACF그래프를 보고 모수를 추정한다. 대략 아래와 같다. 3. 코드 import numpy as np import statsmodels.api as sm import matplotlib.pyplot as plt # 2차누적/1차누적/미누적 데이터생성 및 적분차수 이해 np.random.seed(..

AR, MA, ARMA, ARMAX

시계열 회귀분석의 종류인 AR, MA, ARMA 분석에 대해서 알아보고 실습을 진행해 본다. 1. AR, MA (1) AR(p) model Y_t가 Y_t의 p기 이전까지의 값에 의해 설명되는 모델 (2) MA(q) model Y_t가 현재영향(e_t)으로 부터 과거 q기 전까지 영향(e_t-q)에 의해 설명되는 모델 2. ARMA AR(p)와 MA(q)의 선형조합. 3. 파라미터 p,q는 어떻게 찾는가? AR과 MA를 이용하여 분석을 수행하기 위해서는 파라미터 p,q값을 분석자가 결정해야 한다. 이 파라미터를 찾는 방법은 ACF와 PACF를 사용한다. AR의 경우 PACF그래프에서 수렴하기 직전 마지막값이 p가 되고, MA의 경우 ACF그래프에서 수렴하기 직전값이 q가 된다. 이를 아래의 예시를 통해 ..

정상성 테스트 및 비정상성 제거 실습

0. 정상성의 의미 정상성의 의미와 예시에 대해서 아래의 글에 정리했다. sosoeasy.tistory.com/387 시계열에서 정상성의 의미 1. 의미 정상성(Stationarity Process)이란? => 평균, 분산, 공분산 및 기타 모든 분포적 특성이 일정함을 의미. 시계열이 정상적이다? => 시간의 흐름에 따라 "통계적 특성(평균, 분산, 공분산)"이 변하지 sosoeasy.tistory.com 1. 정상화 및 정상성 테스트 이번 장에서는 비정상성 데이터를 정상화 하고, 정상성을 테스트 하는 방법에 대해서 실습해 본다. 정상화 하는 방법은 4가지 정도가 있다. (1) 추세차분 (2) 계절성차분 (3) 로그화 (4) box-cox변환 각각을 실습을 통해 수행해 본다 2. (1)추세차분, (2)계..

앙상블기법 배깅(bagging)과 부스팅(boosting)

0. 앙상블 머신러닝에서 여러개의 모델을 학습시켜 모델의 예측결과를 이용해 하나의 모델보다 더 나은 값을 예측하는것 1. 배깅(bagging) 높은 variance를 낮추는 것 (과적합 된 모델을 샘플링을 통해 과적합을 완화시키는것) bootstrapping을 통해 여러 학습 데이터를 만들고 이들의 평균값을 구하는것. bias가 낮은 모델들을 이용하여 variance를 줄인다. (중심극한정리의 원리와 비슷하다) - 의사결정나무 from sklearn.tree import DecisionTreeRegressor # DecisionTree fit_reg5 = DecisionTreeRegressor().fit(X_train_feRSM, Y_train_feR) pred_tr_reg5_feRSM = fit_reg..

정규화 선형회귀 릿지(ridge), 라쏘(lasso), elastic net

0. 정규화 선형회귀? (1) 선형회귀 계수(Weight)에 대한 제약 조건을 추가함으로써 모형이 과도하게 최적화되는 현상인 과최적화를 막는 방법 (2) 계수의 크기가 커지면 과적합됨. => 계수의 크기를 제한함 * 기존의 회귀분석? 1. 릿지회귀(ridge Regression) (1) 정의 추정계수의 제곱합을 최소로 하는것. (2) 특징 - 제곱합을 최소화 하기 때문에 계수의 크가 줄어듬 => 과적합이 방지됨 - 다중공선성이 분산되기 때문에 효과적 - 딥러닝 loss function에서 L2 panelty로 사용됨 (3) 코드 # Ridge fit = Ridge(alpha=0.5, fit_intercept=True, normalize=True, random_state=123).fit(X_train, Y..

시계열 회귀분석 과정

아래와 같은 process를 가지는 시계열 회귀분석 및 머신러닝 과정을 정리한다. 1. 변수추출가용변수들을 이용해서 시간변수를 년, 월, 일, 요일, 시, 분, 초 등으로 분해하거나, 추세,계절성,잔차로 분해하여 파생변수를 만드는 행위sosoeasy.tistory.com/382각종 feature engineering후 시계열 회귀분석 하기각종 feature engineering을 수행한 후 회귀분석을 통해 시계열데이터를 분석해 본다 non_feature engineering과의 차이도 알아본다. 1. 필요한 라이브러리 다운 # Ignore the warnings # 버전이 바뀌었을때 발생..sosoeasy.tistory.com 2. 데이터 분할시계열 데이터를 train set, test set으로 나누기..