【數(shù)據(jù)競賽】kaggle競賽寶典-樣本組織篇!
樣本篩選、樣本組織之樣本組織部分
1. kaggle競賽寶典-競賽框架篇!
4.1?kaggle競賽寶典-樣本篩選篇!

樣本組織,乍一看這個詞可能會有些許陌生,我們舉一個銷量預(yù)估的例子,就很容易理解了:
我們希望預(yù)測未來兩周商店每一天的商品銷量,這樣可以方便商家進貨,降低預(yù)估不準(zhǔn)帶來的貨物囤積或者缺貨供應(yīng)不足而帶來的損失,現(xiàn)在呢,我們的商家有著歷史上過去兩年每一天的各個商品的銷量信息,那么該如何建模呢?

因為我們無法拿到除了星期節(jié)假日等信息外無法獲取更多的未來兩周的信息,那么這個時候我們就只能基于過往預(yù)測將來。這個時候數(shù)據(jù)樣本的組織就會顯得非常重要。我們需要思考標(biāo)簽數(shù)據(jù)如何進行構(gòu)建,特征從哪些數(shù)據(jù)中進行構(gòu)建。
這個時候大家再看欺詐反欺詐,圖像分類,文本分類等的問題,就會發(fā)現(xiàn)這兩類問題存在非常大的區(qū)別,后者的樣本和數(shù)據(jù)已經(jīng)準(zhǔn)備就緒了,我們不需要再去思考標(biāo)簽如何進行構(gòu)建,原始特征數(shù)據(jù)如何設(shè)計等問題。

涉及到樣本組織的問題最為常見的就是與時間序列建模相關(guān)的問題,例如各大電商或者視頻網(wǎng)站的搜索與推薦等問題,商店的銷量預(yù)測,股價的預(yù)測等。那么如何進行樣本的組織呢?
1. 基于最小單位的滑動建模
什么是最小單位呢?此處我們將其與預(yù)測問題相關(guān)聯(lián):
如果我們的預(yù)測問題是預(yù)測未來N天商店每一天的銷量,那么這邊最小的單位就是1天的銷量; 如果我們的預(yù)測問題是預(yù)測未來N個月店鋪每個月的銷售額,那么這邊最小的單位就是1個月的銷售額; 如果我們的預(yù)測問題是預(yù)測未來N個小時每個小時的人流量,那么這部最小單位就是1個小時的人流量;
也就是說我們把給定的問題劃分為了N個小問題,這樣我們每次建模的時候就僅僅只需要拿出最小單位的數(shù)據(jù)來當(dāng)做標(biāo)簽。例如,我們預(yù)測未來N天的每一天的銷量,下面每個小的圓圈表示一天的情況,我們再預(yù)測未來第二天的銷量的時候,樣本的組織形式就可以按照下面的形式進行:

使用第的數(shù)據(jù)作為標(biāo)簽,使用的數(shù)據(jù)進行特征的構(gòu)建; 使用第的數(shù)據(jù)作為標(biāo)簽,使用的數(shù)據(jù)進行特征的構(gòu)建; 使用第的數(shù)據(jù)作為標(biāo)簽,使用的數(shù)據(jù)進行特征的構(gòu)建; 依次類推;
這種建模是非常通用的,基本所有的問題都可以按此類方式進行建模。但問題也較為明顯,我們需要構(gòu)建多個模型進行訓(xùn)練和預(yù)測,會非常耗時。
2. 基于測試組的滑動建模
什么是測試組?我們舉幾個例子:
如果我們的預(yù)測問題是預(yù)測未來N天商店每一天的銷量,那么這邊測試組就是N天商店每一天的銷量; 如果我們的預(yù)測問題是預(yù)測未來N個月店鋪每個月的銷售額,那么這邊測試組就是N個月的每個月銷售額; 如果我們的預(yù)測問題是預(yù)測未來N個小時每個小時的人流量,那么這部測試組就是N個小時每個小時人流量;
和基于最小單位的滑動建模不同,我們把給定的問題劃分為了一個問題,如下圖所示,我們預(yù)測未來3天的每一天的銷量,下面每個小的圓圈表示一天的情況,我們再預(yù)測未來第N+1到第N+3天的每一天銷量的時候,樣本的組織形式就可以按照下面的形式進行:

使用第天的數(shù)據(jù)作為標(biāo)簽,使用的數(shù)據(jù)進行特征的構(gòu)建; 使用第天的數(shù)據(jù)作為標(biāo)簽,使用的數(shù)據(jù)進行特征的構(gòu)建; 使用第的數(shù)據(jù)作為標(biāo)簽,使用的數(shù)據(jù)進行特征的構(gòu)建; 依次類推;
這種建模也是非常通用的,基本所有的問題也都可以按此類方式進行建模。這么做我們只需要訓(xùn)練一個模型,相較于基于最小單位的滑動建模,這種樣本組織的方式會更為通用一些,但是也存在些許問題,因為我們每次訓(xùn)練的樣本會成倍變多,所以需要耗費更多的存儲資源。
3. 基于周期形式的建模
上面兩種形式的建模很多時候可以拿到不錯的效果,但也存在一些問題,它們都忽略了周期性,比如我們預(yù)測的是本周三到下周三每天商店的銷量,而我們在使用上面的方式進行樣本組織的時候則往往會很隨意的將某個周四到下個周四的數(shù)據(jù)當(dāng)做標(biāo)簽去訓(xùn)練,這么做在預(yù)測的時候會帶來較差的效果,尤其是在數(shù)據(jù)集的周期性較為顯著的情況下。那么這個時候,我們基于周期形式的建模則往往可以幫助我們解決此類問題。
如下圖所示,我們預(yù)測未來一周中每一天的銷量,下面每個小的圓圈表示一天的情況,我們再預(yù)測未來第N+1到第N+7天的每一天銷量的時候,樣本的組織形式就可以按照下面的形式進行:

使用第天的數(shù)據(jù)作為標(biāo)簽,使用的數(shù)據(jù)進行特征的構(gòu)建; 使用第天的數(shù)據(jù)作為標(biāo)簽,使用的數(shù)據(jù)進行特征的構(gòu)建; 使用第的數(shù)據(jù)作為標(biāo)簽,使用的數(shù)據(jù)進行特征的構(gòu)建; 依次類推;
這種建模可以很好地考數(shù)據(jù)集合中存在的周期性,在過往的諸多競賽中也都取得了不俗的效果,比上面的兩種策略都要好出很多,在天池的地鐵賽建模中這種樣本組織方式也取得了不俗的效果。
大家也發(fā)現(xiàn)了,基于周期形式的建模也可以融入基于最小單位的滑動建模以及基于測試組的滑動建模這兩種樣本組織的思想,形成兩種新的樣本組織形式。
4. 其它注意事項
大家如果仔細閱讀過往幾年的相關(guān)的涉及到樣本組織的競賽就可以發(fā)現(xiàn),基本90%左右的獲獎方案都可以劃分為上面介紹的三種形式中的某一種或者幾種的組合。此處給出一些需要注意的事項或者上分的細節(jié)。
一定要考慮周期性!例如預(yù)測未來一周每個小時的地鐵流量,那么建模的時候最好是做好標(biāo)簽的對應(yīng),預(yù)測星期三早上8點的地鐵流量,那么建模的時候?qū)⒚恐苋缟?點的數(shù)據(jù)作為標(biāo)簽;
盡可能不浪費數(shù)據(jù):有的時候我們的任務(wù)是預(yù)測未來8天的銷量,那么建模的時候我們會習(xí)慣性地以7天為一個周期進行建模,有的時候我們發(fā)現(xiàn)訓(xùn)練集最后6天的數(shù)據(jù)無法形成一個周期,這個時候就會將這些數(shù)據(jù)丟棄,這么做就浪費了數(shù)據(jù),這個時候可以將最后6天也作為標(biāo)簽,不需要追求完整的一周數(shù)據(jù);
未來數(shù)據(jù)也并不是全都不可以獲取:樣本組織的時候,我們都習(xí)慣性地盡可能不考慮未來的數(shù)據(jù),但諸如星期,節(jié)假日等信息都是非常明確的,還有距離當(dāng)前的時間等信息都非常有價值;

在涉及到時間相關(guān)的問題中,樣本組織的好壞對于模型帶來的影響是巨大的,本小節(jié)我們介紹了樣本組織的三種常見的實用的樣本組織策略,以及很多需要注意的細節(jié)。
往期精彩回顧
本站qq群704220115,加入微信群請掃碼:
