본문 바로가기

Analysis38

Lecture 14. Kaggle 자전거 수요 예측 (RF/SARIMA) 머신러닝 분석으로 수요 예측 시계열 분석으로 수요 예측 - SARIMA 0. 데이터 로드 Bike Sharing Demand Forecast use of a city bikeshare system www.kaggle.com 2년치 데이터로 시간당 데이터 축적 Y는 count, 즉 총 렌탈횟수 예측하기 1. 데이터 전처리 raw_all = pd.read_csv('./Bike_Sharing_Demand_Full.csv') # Feature Engineering # to_datetime, asfreq, seasonal_decompose(trend, seasonal), fill_na, # Day ,Week, diff, Year, Quater, Month, Hour, DayofWeek, lag1, lag2 .. .. 2021. 4. 3.
Lecture 13. 선형확률과정 분석실습 선형확률과정 분석 사이클 3~5단계 자동화 1. 데이터 전처리 및 시각화를 통해 Outlier 확인/변경/제거 2. 비정상 과정에서 정상 과정 추출 - 결정론적 추세나 확률적 추세가 있는지 확인 결정론적 추세는 회귀분석, 다항식 등으로 모형화 후 이를 분리 확률적 추세(ARIMA 모형) 경우에는 ADF(Augmented Dickey Fuller) 검정을 사용하여 적분차수로 차분 3. 정규성 확인 - 정규성 검정을 통해 자료의 분포가 정규 분포인지 확인 일반 선형 확률 과정인 경우에는 전체 시계열이 가우시안 백색 잡음의 선형 조합으로 이루어지기 때문에 시계열 자체도 가우시안 정규 분포 ARIMA 모형 등의 일반 선형 확률 과정으로 모형화하려면 우선 정규성 검정(Normality Test)을 사용하여 분포가.. 2021. 4. 3.
Lecture 12. 적분 선형확률과정 1. ARIMA (Auto-Regressive Integrated Moving Average) 1 이상의 추세차분이 적용(d>=1)된 Yt가 AR(p)와 MA(q)의 선형조합 Yt는 단위근 가진 비정상성, d번 차분한 Yt는 정상성 데이터 차분해야 정상성이 되는 Yt는 lag가 증가해도 ACF가 1에 가까워 쉽게 감소하지 않음 c 파라미터 (상수항) : 이론 수식 복잡성으로 생략 가능 d 파라미터 (차분) : 예측 구간추정범위를 급격히 상승, 과차분은 MA모형을 생성 -> ACF/PACF 증가 (1) ARIMA(0.0.0) : WN (2) ARIMA(0,1,0) : Random Walk (3) ARIMA(p,0,0) = AR(p) (4) ARIMA(0,0,q) = MA(q) (5) p=0, ARIMA(0.. 2021. 4. 1.
Lecture 11. 단순 선형확률과정 일반 선형확률과정 시계열 데이터가 가우시안 백색잡음의 현재값과 과거값의 선형조합 WN, MA, AR, ARMA, ARIMA, SARIMA 1. WN (White Noise) 잔차들은 정규분포, 평균 0, 일정한 분산, 가져야 함 시간의 흐름에 따라 상관성이 없어야 함 (cov = 0, autocorrelation = 0) : ACF로 확인 강정상 과정의 대표적 예시 가우시안 백색잡음, 베르누이 백색잡음 2. MA (Moving Average) 차수가 유한한 (q) 가우시안 백색잡음의 선형조합 Trend-cycle ACF가 q+1항부터 0으로 수렴 PACF가 지수적 감소, 진동하는 사인 형태 # ARMA(0,1) = MA(1) ar_params = np.array([]) #0 ma_params = np.a.. 2021. 3. 29.
Lecture 10. 타겟 데이터 정상성 변환 정상성 (Stationarity) 평균, 분산, 공분산이 시간의 흐름에 따라 변하지 않음 약정상 - 두 변수 비교 𝐸(𝑋𝑡) = 𝜇 for all time 𝑡 (The first moment estimation) 𝑉𝑎𝑟(𝑋𝑡) = 𝐸(𝑋^2𝑡) − 𝐸(𝑋𝑡)^2 covariance just depends on ℎ. 강정상 예시 - White noise 약정상은 두 변수로 비교했다면, 강정상은 세 변수부터 모든 변수들의 정상성을 확인함 비정상 확률과정 예시 - Random walk 일차모멘트, 이차모멘트가 변화 용어 Stationary Process: 정상성인 시계열데이터를 발생시키는 데이터셋(프로세스) Stationary Model: 정상성인 시계열데이터를 설명하는 모델 Trend Stationary: .. 2021. 3. 27.
Lecture 9. 시계열 머신러닝 알고리즘 정규화 회귀분석 알고리즘 정규화 : overfitting 을 막기 위해 파라미터 값을 줄이는 것, 계수의 크기를 제한하는 방법 파라미터 값에 제약을 줌 1. Standard Regression 식을 최소화하는 베타값을 찾아야 함 - RSS 최소화 2. Lidge Regression RSS + 페널티식 (제곱합) 베타를 제곱합하므로 큰 베타값에 민감하게 반응함 큰 베타값은 줄여야하므로 하이퍼파라미터(람다)를 크게 하면 가중치값이 작아짐 -> 베타에 0 가까운 값 부여 하이퍼파라미터를 작게 하면 가중치값이 커짐 베타 스케일을 조정해 현실성있는 계수 추정 모든 변수를 사용하기 때문에 계수가 작아지고 모형 복잡도가 줄어들며 계수가 많을수록 효과적이진 않지만 다중공선성을 방지할 수 있음 from sklearn.l.. 2021. 3. 27.
Lecture 8. 시계열 데이터 전처리 Condition Number Condition number가 클수록 변수들간의 scaling이 필요하거나 다중공선성이 나타남을 의미함 Condition number를 감소시켜야 함 1. Scaling 2. 다중공선성 제거 - VIF, PCA를 통해 변수 선택 3. 의존성이 높은 변수들에 패널티를 주는 정규화 Scaling 스케일링을 통해 변수간의 범위 설정 1. StandardScaler() 각 feature가 정규분포를 따른다는 가정 sklearn.preprocessing.StandardScaler().fit() sklearn.preprocessing.StandardScaler().transform() sklearn.preprocessing.StandardScaler().fit_transform() .. 2021. 3. 18.
Lecture 7. 잔차진단 검증지표 -> 수치 잔차진단 -> 시각화, 통계량 White Noise 백색잡음 2가지의 속성을 만족해야 하며 하나라도 만족하지 못하면 모델이 개선의 여지가 있음을 의미 f(x) + e 에서 잔차인 e가 특정한 패턴을 보이지 않아야하며 잔차의 모습이 whitenoise 이어야 한다. 1) 잔차 ~ i.i.d 잔차들은 정규분포이고 평균 0과 일정한 분산을 가져야 함 잔차들끼리는 독립이어야 한다. 2) 잔차들간의 상관관계 잔차들이 시간의 흐름에 따라 상관성이 없어야 함 Autocorrelation 자기상관함수 : 같은 변수, 자기 자신에 대한 상관관계 Partial Autocorrelation Function 편자기상관함수 : 자기상관함수에서 시간 사이의 상관성을 제거한 상관함수 SARIMA가 자기상관관계가.. 2021. 3. 16.
Lecture 6. 분석성능 확인 검증지표 R-squared(R^2) : (−∞,1] Mean Absolute Error(MAE) : [0,+∞) Mean Squared Error(MSE) : [0,+∞) Mean Squared Logarithmic Error(MSLE) : [0,+∞) Median Absolute Error(MedAE) : [0,+∞) Root Mean Squared Error(RMSE) : [0,+∞) Mean Absolute Percentage Error(MAPE) : [0,+∞) Mean Percentage Error(MPE) : (−∞,+∞) MAE = abs(Y_train.values.flatten() - pred_tr_reg1).mean() MSE = ((Y_train.values.flatten() - pre.. 2021. 3. 16.
Lecture 5. 시계열 데이터 시각화 1. Y와 X의 관계를 보기위해, 특성 파악 2. 알고리즘의 결과를 냉정하게 판단하기 위해 Histogram 히스토그램 raw_fe.hist(bins=20, grid=True, figsize=(16,12)) plt.show() Boxplot 박스플랏 raw_fe.boxplot(column='count', by='season', grid=True, figsize=(12,5)) plt.ylim(0,1000) Scatter plot 산점도 raw_fe[raw_fe.workingday == 0].plot.scatter(y='count', x='Hour', c='temp', grid=True, figsize=(12,5), colormap='viridis') plt.show() 데이터 갯수 세기 raw_fe['we.. 2021. 3. 15.