前言
大家好~我是drop-out(GitHub)潮改。今年我參加了IJCAI-17數(shù)據(jù)挖掘競(jìng)賽和KDD CUP 2017扁远,分別獲得了第三名和第九名。兩個(gè)比賽都是時(shí)間序列數(shù)據(jù)红省。我對(duì)時(shí)間序列接觸的比較多策菜,所以這里寫一篇文章,以IJCAI-17口碑客流量預(yù)測(cè)大賽為背景酒贬,介紹一下時(shí)間序列規(guī)則法又憨,讓大家快速入門。
IJCAI-17給的是螞蟻金服的支付數(shù)據(jù)锭吨,具體來說蠢莺,給的是店鋪(實(shí)體店)過去每天的客流量,預(yù)測(cè)店鋪未來14天每天的客流量零如。由過去外推未來躏将,這是典型的時(shí)間序列問題锄弱。像支付數(shù)據(jù)、客流量數(shù)據(jù)祸憋、交通數(shù)據(jù)等会宪,具有明顯的周期性。從預(yù)測(cè)的角度說蚯窥,周期性是核心掸鹅,只要抓住了周期性,任務(wù)就完成了一大半拦赠。
基本規(guī)則法快速入門
假設(shè)給定下面的數(shù)據(jù)巍沙,任務(wù)是預(yù)測(cè)第四周每天的客流量。
周一 | 周二 | 周三 | 周四 | 周五 | 周六 | 周日 | 周均值 | |
---|---|---|---|---|---|---|---|---|
第一周 | 20 | 10 | 70 | 50 | 250 | 200 | 100 | 100 |
第二周 | 26 | 18 | 66 | 50 | 180 | 140 | 80 | 80 |
第三周 | 15 | 8 | 67 | 60 | 270 | 160 | 120 | 100 |
明顯能看到周一到周日的周期波動(dòng)荷鼠。預(yù)測(cè)的核心任務(wù)就是盡可能準(zhǔn)確的提取這種周期句携。
第一步: 除以周均值,得到一個(gè)比例允乐。
第二步: 按列取中位數(shù)矮嫉。
就可以得到一組魯棒的周期因子。
周一 | 周二 | 周三 | 周四 | 周五 | 周六 | 周日 | |
---|---|---|---|---|---|---|---|
第一周 | 0.2 | 0.1 | 0.7 | 0.5 | 2.5 | 2 | 1 |
第二周 | 0.325 | 0.225 | 0.825 | 0.625 | 2.25 | 1.75 | 1 |
第三周 | 0.15 | 0.08 | 0.67 | 0.6 | 2.7 | 1.6 | 1.2 |
中位數(shù) | 0.2 | 0.1 | 0.7 | 0.6 | 2.5 | 1.75 | 1 |
做預(yù)測(cè)時(shí)喳篇,只要將周期因子敞临,乘以一個(gè)base,就可以做下一周的預(yù)測(cè)啦麸澜。比如說挺尿,我們?nèi)∽詈笠恢艿钠骄土髁?00作為base,那么我們直接乘上周期因子炊邦,就得到下一周的預(yù)測(cè):
周一 | 周二 | 周三 | 周四 | 周五 | 周六 | 周日 | |
---|---|---|---|---|---|---|---|
中位數(shù) | 0.2 | 0.1 | 0.7 | 0.6 | 2.5 | 1.75 | 1 |
預(yù)測(cè) (base=100) | 20 | 10 | 70 | 60 | 250 | 175 | 100 |
這里只拿了三周來舉例编矾。實(shí)際應(yīng)用當(dāng)然要取更長(zhǎng)的時(shí)段啦。具體取幾周以測(cè)試集的效果來確定馁害。
針對(duì)周期因子的優(yōu)化
按列提取中位數(shù)是一種簡(jiǎn)單而有效的提取周期因子的方法窄俏。中位數(shù)十分魯棒,不受極端值的影響碘菜。但中位數(shù)損失了很多信息凹蜈。實(shí)踐中,可以在此基礎(chǔ)上進(jìn)一步優(yōu)化忍啸。比如可以提取一個(gè)均值和一個(gè)中位數(shù)仰坦,然后將均值和中位數(shù)融合。融合的比例按照測(cè)試集的表現(xiàn)來確定计雌。也可以根據(jù)與預(yù)測(cè)周的時(shí)間距離來賦予不同的權(quán)重悄晃。
針對(duì)base的優(yōu)化
直接用最后一周的平均客流量作為base并不一定是最好的方法。也許最后三天或最后五天的均值能更好的反映最新的情況凿滤。但是妈橄,我們不能直接對(duì)最后三天客流量取均值(最后三天是周末庶近,這樣取的base就偏大了)。需要去掉周期性因素后眷蚓,再取平均鼻种。具體做法,就是用客流量除以周期因子溪椎。
周一 | 周二 | 周三 | 周四 | 周五 | 周六 | 周日 | |
---|---|---|---|---|---|---|---|
第三周 | 15 | 8 | 67 | 60 | 270 | 160 | 120 |
中位數(shù) | 0.2 | 0.1 | 0.7 | 0.6 | 2.5 | 1.75 | 1 |
去周期以后的客流量 | 75 | 80 | 95.7 | 100 | 108 | 91.4 | 120 |
這樣我們就可以取最后三天的平均普舆,(108+91.4+120)/3=106.5,作為base校读。具體取多少天的沼侣,也要通過測(cè)試集的表現(xiàn)來確定。當(dāng)然也可以按某些函數(shù)形式來給每天賦予不同的權(quán)重歉秫。
其他影響因素
在IJCAI-17的這個(gè)賽題里面蛾洛,天氣是非常重要的一個(gè)影響因素⊙丬剑可以提取殘差轧膘,然后用殘差訓(xùn)練一個(gè)天氣的模型。推薦使用xgboost兔甘。其他影響因素可以如法炮制谎碍。