1. 程式人生 > >時序預測之一_概述

時序預測之一_概述

1. 說明

 前一段參加了天池的“鹽城汽車上牌量預測“比賽。第一次面對大規模的時序問題,從比賽的過程,到賽後各位大佬的演算法分享,收穫很多。也將解決該類問題的套路在此總結一下。
 本篇是總述,其中提到的具體演算法,如:加窗,ARIMA,傅立葉/小波變換,LSTM等等將在本系列的後續文章中一一詳述。

2. 問題描述

 上牌量預測是一個典型的時序問題,且資料簡單清晰,以複賽A榜資料為例,它提供了前3年的10種品牌汽車每天的上牌量,預測未來半年中每天的各品牌的上牌量。
 提供的資訊只有之前的上牌量,日期資料和星期幾,是一個單變數的預測問題(暫不計各品牌間的相互影響),比較困難的是:它不是預測一天,而是預測幾百天,有些時序模型無法使用。

3. 步驟

 對比一下自己和大家的解決方案,基本都可以拆解成以下步驟

(1) 還原日期

 比賽資料對日期進行了脫敏處理,沒給具體年月日,但提供了周幾的資訊,其中有些節假日上牌量為0的也沒有給出對應記錄。第一步大家都補全了日期,加入了真實日期,和節假日資訊。
 這裡介紹兩個相關陰曆的時間轉換庫:
chinese_calendar,Lunar-Solar-Calendar-Converter

(2) 從日期中提取資訊

 這是各顯神通的環節,大家根據自各經驗,提取了各種各樣的特徵,總結如下:
 假期長度、調休日期、與節假日的時間距離;
 某年中的第幾個月,某年有的第幾周,某月中的第幾周,某月中的第幾日,某年中的第幾日(陰曆/陽曆分別取),正數/倒數第幾個工作日。

(3) 提取週期資訊

 對於週期提取,基本有兩種做法,一種是手工計算出同比,環比,往期資料,直接加入Feature,然後用GBDT生成決策。另一種是用ARIMA預測出大致的週期趨勢,然後用GBDT描述其餘細節。

i. 手工加入週期數據

 有一些方案完全沒使用趨勢和週期演算法,排名也挺靠前的,其原因是,他們直接把週期和統計資料做成了特徵,比如:用shift()把前N天的上牌量做為當天的特徵,用rolling()將前N天均值作為當天特徵,將陰曆/陽曆的去年同期(月、周)資料作為當期特徵,環比的最大值,最小值,分位數等等。這種方法的好處是模型可以同時處理維度的各種特徵,美中不足是可能損失一些對趨勢的預測。

ii. 演算法預測週期和趨勢資料

 此類方案以ARIMA代表,ARIMA,小波變換,線性擬合,它們是解決時序問題的傳統方法。再與GBDT演算法相結合,處理一些不能被週期性識別的細節。這種方法的優點是兼顧整體和細節,問題時在預測長週期時,後期有嚴重的衰減。

(4) 梯度下降決策樹

 幾乎所有的人都使用了梯度下降決策樹(GBDT)類演算法和交叉驗證(CV),值得注意的是,有一些特徵需要處理成“類別”而非“資料”,比如“月份”,“周幾”,“品牌”等等,否則很影響效果。

4. 原理

 對於時序問題,一般可以拆解為:趨勢+週期+突發事件。

(1) 趨勢

 一般需要先擬合趨勢,比如使用:滑動平均模型,指數平均模型,線性迴歸等等。其中需要注意的是拐點的識別(不限於此題),比如一些股票緩漲急跌,即它在上升和下降的趨勢中規律完全不同,則需要分段處理。另外我理解,趨勢有含有兩部分,一部分和均值相關,一部分和方差相關。均值描述位置的高低,方差描述波動的大小。

(2) 週期

 這裡指的週期是大週期,中週期,小週期,相互交錯,包含的情況。比如年內變化,周內變化都呈明顯週期性。一般可使用:季節模型,小波/傅立葉變換,差分週期等等。我覺得ARIMA也可算做一種週期性工具,它的主旨也是用過去的N項預測未來。
 週期與趨勢的組合,又有交乘和疊加等不同方式。

(3) 突發事件

 現在一般都用機器學習的工具處理突發事件和結果的關係,比如隨機森林,梯度下降決策樹,還可能用到關聯規則等等。

(4) 擴充套件

 不只是時序問題,其它的機器學習問題也是一樣,比如說大分類包含小分類這種情況,也類似於週期。都需要去考慮統計特徵。

相關推薦

時序預測之一_概述

1. 說明 前一段參加了天池的“鹽城汽車上牌量預測“比賽。第一次面對大規模的時序問題,從比賽的過程,到賽後各位大佬的演算法分享,收穫很多。也將解決該類問題的套路在此總結一下。 本篇是總述,其中提到的具體演算法,如:加窗,ARIMA,傅立葉/小波變換,LSTM等等將在本系列的後續文章中一一詳述。2.

雲服務器之安全組之一_好玩的安全組

click sdn iyu 現在 規則 cli csdn 端口 斷開 原文地址 根據好多的小夥伴反應,阿裏的安全組規則是個什麽鬼啊,怎麽還這麽麻煩,把端口啥的都給我開好,剩下的我搭建好網站就行,你看別的服務商就這樣,我就問一句安全嗎? 用啥開啥,是保障網站安全的一個很重要的

教程 | Kaggle網站流量預測任務第一名解決方案:從模型到代碼詳解時序預測

abs rdf reg lock 集成 deep 月份 current 均值 https://mp.weixin.qq.com/s/JwRXBNmXBaQM2GK6BDRqMw 選自GitHub 作者:Artur Suilin 機器之心編譯 參與:蔣思源、路雪、黃小天

[轉]TensorFlow如何進行時序預測

TensorFlow 是一個採用資料流圖(data flow graphs),用於數值計算的開源軟體庫。節點(Nodes)在圖中表示數學操作,圖中的線(edges)則表示在節點間相互聯絡的多維資料陣列,即張量(tensor)。它靈活的架構讓你可以在多種平臺上展開計算,例如臺式計算機中的一個或多個CPU(或GP

Eclipse3.6.2安裝ADT16.0.1問題解決之一 Eclipse3.6.2安裝ADT16.0.1問題解決之一_文件下載https://doc.docsou.com/b62d7f0f90647

1、錯誤提示是: Cannot complete the install because one or more required items could not be found. Software being installed: Android Development Tools 16.0.1

SLS機器學習最佳實戰:時序預測

為何需要預測? 通過分析序列進行合理預測,做到提前掌握未來的發展趨勢,為業務決策提供依據,這也是決策科學化的前提。時間序列就是按時間順序排列的一組資料序列。時間序列分析就是發現這組資料的變動規律並用於預測的統計技術。 明天的賬單大約多少??(根據在各個雲產品中資源消耗量進行預測 ---> 業務

Linux PM domain framework(1)_概述和使用流程

1. 前言 在複雜的片上系統(SOC)中,設計者一般會將系統的供電分為多個獨立的block,這稱作電源域(Power Domain),這樣做有很多好處,例如: 1)將不同功能模組的供電分開,減小相互之間的干擾(如模擬和數字分開)。 2)不同功能所需的電壓大小不同:小電壓能量損耗低,

時間序列(單個時序+預測下一步)

""" Created on Wed Dec 19 21:02:24 2018 @author: 87671 """ ''' Univariate LSTM Models(只有一個時間序列) 參考連結:https://machinelearningmastery.com/how-to-develo

Linux動態調頻系統CPUFreq之一概述【轉】

轉自:https://blog.csdn.net/zhangyongfeiyong/article/details/53506362 隨著技術的發展,我們對CPU的處理能力提出了越來越高的需求,晶片廠家也對製造工藝不斷地提升。現在的主流PC處理器的主頻已經在3GHz左右,就算是智慧手機的處理器也已經可以工作

二十三種設計模式_概述

概述及詳解:https://blog.csdn.net/qq_25827845/article/details/52932234     一、Singleton,單例模式:保證一個類只有一個例項,並提供一個訪問它的全域性訪問點 二、Abstract Factory,抽

DPCM (Dynamic PCM)系列之一概述

http://blog.csdn.net/azloong/article/details/50162241 Dynamic PCM   ===========   1. Description   ==============   Dynamic PCM allows 

時序預測歸一化

在做預測問題時,當資料的量綱存在較大差異時,歸一化非常重要。以下問題是我遇到的: 1.多個維度的資料,是對每一個樣本進行歸一化?還是對每一個維度(屬性)歸一化 2.訓練集和測試集放在一起歸一化?還是分開歸一化? 問題1: 對每一個屬性進行歸一化,從sklearn的文件中提到:MinM

LSTM時序預測時歸一化問題

LSTM時序預測時歸一化問題 在做專案時,發現數據歸一化對模型訓練結果影響很大,其中還涉及到很多細節問題。以下通過空氣汙染預測的例子來進行說明。(資料和程式碼網上都有提供) 描述:在空氣汙染預測例子中,共有8個屬性,利用過去24小時的汙染資料和天氣條件預測下一個時刻(t+1)可能的汙染值

Linux動態頻率調節系統CPUFreq之一概述

隨著技術的發展,我們對CPU的處理能力提出了越來越高的需求,晶片廠家也對製造工藝不斷地提升。現在的主流PC處理器的主頻已經在3GHz左右,就算是智慧手機的處理器也已經可以工作在1.5GHz以上,可是我們並不是時時刻刻都需要讓CPU工作在最高的主頻上,尤其是移動裝置和膝上型電

Arduino簡單例項之一_人體感測器

1)       說明 人體紅外感應模組是基於紅外線技術的自動控制產品。附近有人時,對應引腳高電平,反之為低平臺。 5米內有效。可用螺絲(下圖中橙色部分)調節靈敏度和延時。 2)       硬體 H

阿里天池競賽 A股上市公司營收預測 使用LSTM模型做時序預測

參賽結束了,最後結果一百多名,先把清洗好的資料和預測演算法檔案記錄下來。 使用的完全程式碼和資料 程式碼註釋如下 # -*- encoding:utf-8 -*- import pandas as pd import numpy as np import sys f

QT5學習之路_概述

2018年1月17號,開始了Qt5的學習,耐心的看完一本書,完成一件事,做好整理,慢慢來~ Qt 是一個跨平臺的框架。 基礎視窗部件QWidget類是所有使用者介面物件的基類,視窗和控制元件都是直接或

LVDS之一_理解SerDes

原文地址: http://blog.sina.com.cn/s/blog_aec06aac01013m5g.html FPGA發展到今天,SerDes(Serializer-Deserializer)基本上是標配了。從PCI到PCI Express, 從ATA到SA

Hibernate繼承對映之一_用一張表對映

這次給大家發的是hibernate的繼承對映,繼承對映的例項有很多:例如dog、cat都是animal的子類 這裡用的是文章Article、主題Topic和回覆Reply給大家做講解。 主題和回覆都

時序預測之二_ARIMA

1. 說明 ARMA迴歸滑動平均模型(Autoregressive Moving Average Model,簡記ARIMA),是研究時間序列的重要方法,由自迴歸模型(簡稱AR模型)與滑動平均模型(簡稱MA模型)為基礎“混合”構成。常用於具有季節變動特徵的銷售量、市場規模的預測等。AR