1. 程式人生 > >機器學習(十一)時間序列模型

機器學習(十一)時間序列模型

1 時間序列簡介

1.1 定義

時間序列是指將同一統計指標的數值按其發生的時間先後順序排列而成的數列。

1.2 構成要素

時間序列可以分為長期趨勢(trend)、季節變動(seasonal)、迴圈變動(cycling)和隨機波動(irregular)四個部分。

  • 長期趨勢( T )現象在較長時期內受某種根本性因素作用而形成的總的變動趨勢
  • 季節變動( S )現象在一年內隨著季節的變化而發生的有規律的週期性變動
  • 迴圈變動( C )現象以若干年為週期所呈現出的波浪起伏形態的有規律的變動
  • 不規則變動(I )是一種無規律可循的變動,包括嚴格的隨機變動和不規則的突發性影響很大的變動兩種型別


    1531909-3b5d2136df815f87.png 構成要素

2 時間序列模型詳解

2.1 插值法

在講AR模型之前,我們先了解下插值法

插值法又稱“內插法”,是利用函式f (x)在某區間中已知的若干點的函式值,作出適當的特定函式,在區間的其他點上用這特定函式的值作為函式f (x)的近似值,這種方法稱為插值法。如果這特定函式是多項式,就稱它為插值多項式。

插值法也有很多種,我們以簡單為例講下線性插值法:

1531909-7896dfa9e68115a0.png

2.2 AR模型

AR模型(Auto regressive Model)是一種線性預測,即已知N個數據,可由模型推出第N點前面或後面的資料(設推出P點),所以其本質類似於插值,其目的都是為了增加有效資料,只是AR模型是由N點遞推,而插值是由兩點(或少數幾點)去推導多點,所以AR模型要比插值方法效果更好。

AR模型(自迴歸模型),是統計上一種處理時間序列的方法,用同一變數例如x的之前各期,亦即x1至xt-1來預測本期xt的表現,並假設它們為一線性關係。因為這是從迴歸分析中的線性迴歸發展而來,只是不用x預測y,而是用x預測 x(自己);所以叫做自迴歸。

1531909-f09d5ce80051f913.png AR模型

下面是一個四階自迴歸模型的圖線:

def AR(b, X, mu, sigma):
    """This functions simulates and autoregressive process
    by generating new values given historical values AR coeffs b1...bk + rand"""
    l = min(len(b) - 1, len(X))
    b0 = b[0]

    return b0 + np.dot(b[1:l + 1], X[-l:]) + np.random.normal(mu, sigma)


#Generate random data.
np.random.seed(8)
b = np.array([0.2, 0.04, 0.4, 0.05])
X = np.array([1])
mu = 0
sigma = 1

for i in range(1,1000):
    X = np.append(X, AR(b, X, mu, sigma))

#Plot the AR series.
fig, ax = plt.subplots(figsize = (15, 7))
plt.plot(X)
plt.xlabel("Time values")
plt.ylabel("AR values")
plt.show()
1531909-dc22449c8086a2ff.png AR模型時序圖

2.3 MA模型

MA模型(moving average model)稱為滑動平均模型,MA模型和AR大同小異,它並非是歷史時序值的線性組合而是歷史白噪聲的線性組合。與AR最大的不同之處在於,AR模型中歷史白噪聲的影響是間接影響當前預測值的(通過影響歷史時序值)。

令{et}代表未觀測的白噪聲序列,{zt}是觀測到的時間序列,將線性過程{zt}表示成現在和過去白噪聲變數的加權線性組合,對於以下形式的序列

1531909-77eca5ec438d7d12.png
稱為滑動平均MA(q)模型。

2.4 ARMA模型

ARMA模型(auto regressive moving average model)自迴歸滑動平均模型,模型參量法高解析度譜分析方法之一。這種方法是研究平穩隨機過程有理譜的典型方法。它比AR模型法與MA模型法有較精確的譜估計及較優良的譜解析度效能,但其引數估算比較繁瑣。

自迴歸移動平均模型由兩部分組成:自迴歸部分和移動平均部分,因此包含兩個階數,可以表示為ARMA(p,q),p是自迴歸階數,q為移動平均階數,迴歸方程表示為:


1531909-34f6f0039325adc4.png ARMA模型

從迴歸方程可知,自迴歸移動平均模型綜合了AR和MA兩個模型的優勢,在ARMA模型中,自迴歸過程負責量化當前資料與前期資料之間的關係,移動平均過程負責解決隨機變動項的求解問題,因此,該模型更為有效和常用。

from __future__ import print_function
import numpy as np
import statsmodels.api as sm
import pandas as pd
from statsmodels.tsa.arima_process import arma_generate_sample
np.random.seed(12345)

arparams = np.array([.75, -.25])
maparams = np.array([.65, .35])


arparams = np.r_[1, -arparams]
maparams = np.r_[1, maparams]
nobs = 250
y = arma_generate_sample(arparams, maparams, nobs)


dates = sm.tsa.datetools.dates_from_range('1980m1', length=nobs)
y = pd.Series(y, index=dates)
arma_mod = sm.tsa.ARMA(y, order=(2,2))
arma_res = arma_mod.fit(trend='nc', disp=-1)


print(arma_res.summary())

import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(10,8))
fig = arma_res.plot_predict(start='1999-06-30', end='2001-05-31', ax=ax)
legend = ax.legend(loc='upper left')
plt.show()
fig.show()
1531909-633f8b23a9e0dc7e.png

2.5 ARIMA模型

介紹時間序列平穩性時提到過,AR/MA/ARMA模型適用於平穩時間序列的分析,當時間序列存在上升或下降趨勢時,這些模型的分析效果就大打折扣了,這時差分自迴歸移動平均模型也就應運而生。ARIMA模型能夠用於齊次非平穩時間序列的分析,這裡的齊次指的是原本不平穩的時間序列經過d次差分後成為平穩時間序列。

在現實生活中,存在很多非平穩的時間序列,它們的均值和方差是隨著時間的變化而變化的,幸運的是,統計學家們發現,很多時間序列本身雖然不平穩,但是經過差分(相鄰時間點的指標數值相減)之後,形成的新時間序列就變成平穩時間序列了。因此,差分自迴歸移動平均模型寫成ARIMA(p,d,q)。p代表自迴歸階數;d代表差分次數;q代表移動平均階數。在spss軟體中,有時輸出的ARIMA模型包括6個引數:ARIMA(p,d,q)(P,D,Q),這是因為如果時間序列中包含季節變動成分的話,需要首先將季節變動分解出來,然後再分別分析移除季節變動後的時間序列和季節變動本身。這裡小寫的p,d,q描述的是移除季節變動成分後的時間序列;大寫的P,D,Q描述的是季節變動成分。兩個部分是相乘的關係。因此,ARIMA(p,d,q)(P,D,Q)也被稱為複合季節模型。
資料分析技術:時間序列分析的AR/MA/ARMA/ARIMA模型體系

參考資料

相關推薦

機器學習時間序列模型

1 時間序列簡介 1.1 定義 時間序列是指將同一統計指標的數值按其發生的時間先後順序排列而成的數列。 1.2 構成要素 時間序列可以分為長期趨勢(trend)、季節變動(seasonal)、迴圈變動(cycling)和隨機波動(irregular)四個部分。 長期趨勢( T )

機器學習 SVM-支援向量機

春夜喜雨 好雨知時節,當春乃發生。 隨風潛入夜,潤物細無聲。 野徑雲俱黑,江船火獨明。 曉看紅溼處,花重錦官城。 前言         週末很多城市下開了雨,下雨中也不乏忙忙碌碌的人們,有的天不亮已經忙碌匆

機器學習與深度學習系列連載: 第一部分 機器學習決策樹2Decision Tree

決策樹2 決策樹很容易出現過擬合問題,針對過擬合問題,我們採用以下幾種方法 劃分選擇 vs 剪枝 剪枝 (pruning) 是決策樹對付“過擬合”的 主要手段! 基本策略: 預剪枝 (pre-pruning): 提前終止某些分支的生長 後剪枝 (post-pr

吳恩達機器學習K-means無監督學習、聚類演算法

目錄 0. 前言 學習完吳恩達老師機器學習課程的無監督學習,簡單的做個筆記。文中部分描述屬於個人消化後的理解,僅供參考。 如果這篇文章對你有一點小小的幫助,請給個關注喔~我會非常開心

演算法工程師修仙之路:吳恩達機器學習

吳恩達機器學習筆記及作業程式碼實現中文版 第八章 應用機器學習的建議 決定下一步做什麼 獲得更多的訓練例項——通常是有效的, 但代價較大, 下面的方法也可能有效, 可考慮先採用下面的幾種方法: 嘗試減少特徵的數量; 嘗試獲得更多的特徵

機器學習 輕鬆理解模型評價指標

篇首語        相信大家都知道下面的圖片是啥意思,每個無論在啥公司、無論哪個行業都有自己的KPI評價指標,公司會根據公司情況設定公司戰略KPI、部門KPI、以及每個人的指標,對於員工也是比較關心自己的KPI因為關係著你

機器學習之numpy和matplotlib學習

今天繼續來學習numpy。 學習有關複數矩陣在numpy中的建立和使用。 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Author : SundayCoder-俊勇 # @File : numpy3.py import

機器學習與深度學習系列連載: 第二部分 深度學習卷積神經網路 2 Why CNN for Image?

卷積神經網路 2 Why CNN 為什麼處理圖片要用CNN? 原因是: 一個神經元無法看到整張圖片 能夠聯絡到小的區域,並且引數更少 圖片壓縮畫素不改變圖片內容 1. CNN 的特點 卷積: 一些卷積核遠遠小於圖片大小; 同樣的pat

python學習 文件和流

內存 無緩沖 abcd 連接 sss 文件操作 打開文件 while 3.5 11.1 打開文件   >>> f = open(r‘c:\text\somefile.txt‘), 第一個參數是文件名,必須有;第二個是模式;第三個參數是緩沖。   11.1

linux學習用戶和用戶組管理

gin rec uda username type /usr 之前 密碼 只有一個 一、用戶文件 文件:/etc/passwd 這個文件記錄了用戶了用戶名,用戶id,所屬組,家目錄,shell信息: [root@iZ25lzba47vZ ~]# tail -n3 /etc

mybatis學習——springmvc++spring+mybatis整合

transacti servlet 自動註入 為我 reac content attribute 定義 property 做任何一個項目都以一個需求,這裏先定義一下需求:利用三大框架查詢酒店列表。 一、搭建開發環境 1、創建一個web項目 我這裏用的是 jdk1.8+to

Java學習

nwr 定義 多線程操作 常用 yield 安全 cin try 過程 Java在設計之初就已經考慮到了線程的問題,因此Java可以有多種方式調用線程。 1.通過繼承線程類的方式調用線程。通過對函數public void run(){……}進行覆蓋來實現相關的程序 2.通過

Python學習 Python 類

count sym == AC val setter 輸入 com ttr Python 類 面向對象編程是有效的軟件編寫方法之一。 python程序編寫方法 1、函數編程,使用函數方式 2、面向對象編程,使用類方式 創建類 創建方法 構造方法,__ini

【JMeter4.0學習】之JMeter對Mysql、Oracle數據庫性能測試腳本開發

conn 遇到的問題 mys .cn SQ 數據庫性能測試 pos rac 問題總結 一、MySQL數據庫鏈接: 註:下面所產生的問題一律參考詳見:《【JMeter4.0】之遇到的問題總結(持續更新)》(包括Mysql、Orcale) 準備:引包,包路徑一定要放對位置,

操作系統學習 、一致代碼段和非一致代碼段

操作 使用 異常 不知道 .html 代碼段 tails 用戶 logs 一、概述 操作系統保護模式下把代碼段分為一致代碼段和非一致代碼段的原因是:內核程序和用戶程序要分開,內核程序不能被用戶程序幹擾。但是有時候用戶程序也需要讀取內核的某些數據,於是操作系統就從內核程序中分

操作系統學習 、頁級保護

之前 成對 enter 緩沖 目錄 處理 lB 限制 頁表 一、頁級保護方式 頁目錄和頁表表項中的讀寫標誌R/W和用戶/超級用戶標識U/S提供了分段機制保護屬性的一個子集。分頁機制只識別兩級權限。特權級0、1和2被歸類為超級用戶級,而特權級3被稱為普通用戶級。普通用戶級的頁

C++學習C語言部分之 練習

文件頭 語句 font 判斷 c++ c++學習 %d \n AI 1 /* 2 3 1.if 4 輸入一個成績 進行分級 5 6 輸入一個數字 判斷是否是水仙花數 7 比如 153 = 1 * 1 * 1 + 5 * 5 * 5 + 3

C++語言學習——多態

構造 name ast 匹配 地方 參數 替代 xxxx pri C++語言學習(十一)——多態 一、多態簡介 C++中的多態(polymorphism)是指由繼承而產生的相關的不同的類,其對象對同一消息會作出不同的響應。多態性是面向對象程序設計的一個重要特征,能增加程序的

深度學習RNN入門學習

RNN入門學習 原文地址:http://blog.csdn.net/hjimce/article/details/49095371 作者:hjimce 一、相關理論 RNN(Recurrent Neural Networks)中文名又稱之為:迴圈神經網路(原來還有一個遞迴神經網路

吳恩達機器學習機器學習流水線、上限分析

目錄 0. 前言 1. 流水線 2. 上限分析(Ceiling analysis) 學習完吳恩達老師機器學習課程的照片OCR,簡單的做個筆記。文中部分描述屬於個人消化後的理解,僅供參考。 如果這篇文章對你有一點小小的幫助,請給個關注