中文「預測」的含義在「英語」情境下則有兩種含義:
evaluate & forecast
關於 evaluate
「估算」常見有兩種情況:
基於關聯原則來類推,簡稱「類推法」,也就是先歸類,然後推導。比如格子衫、發量少、戴眼鏡、男性、程式設計師這幾個特徵是高度關聯的,知道「格子衫」和「發量少」就能推斷出此人職業很可能是「程式設計師」;
基於目標數據和已知數據存在「函數關係」,簡稱「函數法」或者「公式法」,即Y=f(X),基於函數規則就能計算得到目標數據Y。比如評估某次產品運營活動對交易產生的影響量(Y),那麼對應需要考慮的X可能包含活動覆蓋的人群屬性、人群數量、活動方式、優惠力度等;
類推法
類推法可以分為兩種:
相似個體類推
如上圖所示,假如現在我們要想估算主體B的屬性③的數值(橙色標記目標數據),那麼我們可以找到和B類似(AB在屬性②、④上相似)且同時具有屬性③的主體A,如果主體A的屬性③是已知的,那麼該數值可以當做主體B屬性③的估算值,如果可以匹配的已知相似屬性更多,得到的值一般更精確。
e.g. 要推算京東在微信端交易訂單量佔整體交易量的佔比,可以借鑑唯品會的數據。首先唯品會和京東的業務模式具有較高的相似性——都是電商平臺(雖然主要品類結構不一樣),主要交易端都是App\PC\Weixin這3個,唯品會和京東都在微信上都有「錢包入口」,整體上覆蓋的人群結構也差不多——現在知道了唯品會微信上交易量的佔比(數據已經相對穩定),那麼該數值可以作為預估京東數據的參考值基準。
註:因為京東在「發現」頁還有入口,而且唯品會和京東的交易量級以及品類結構上存在差異,所以數據還需要進一步調整。
歸屬群體類推
如上圖右圖,基於背景知識,我們知道要推算的個體X歸屬於某個群體,那麼可以用該群體的屬性來推斷X的對應屬性。
e.g. 我們到野外偶遇一隻不知所名的動物(未知的X),發現此動物尖牙利爪長尾巴(已知屬性),這和我們平時見到的貓科動物(歸屬的群體)特徵很匹配,我們知道貓科動物大多數是吃肉的,那麼可以推斷該動物也很可能不是吃素的(肉食動物)。
確定相似性可以參考的特徵:
函數法
目標數據和已知數據存在「函數關係」,即Y=f(X),基於函數規則就能計算得到目標數據Y。
常見的兩種函數或者公式如下:
連乘公式,常見於存在轉化率或集合包含關係的情況
加權公式,常見於存在多個成分或分類的情況
使用函數法需要明確目標數據的函數表達式,以及需要知道函數表達式中各變量的數值。
函數法中,因變量Y和自變量X的具有高相關性。
使用函數法進行估算的案例,可以參考前文從一道面試題談數據推算方法。
在該案例中,估算目標用戶群數量時用的就是連乘公式。
該城市總人口1000W,設符合用車條件的人群(16-60)佔比為60%(這個數據也可以到國家人口普查數據上找);設上述人群中有網際網路產品使用經驗的比例為60%(可以查下中國網際網路普及率);設有短距離出行需求的人數比例為15%(大多數時候選擇的交通工具是地鐵、公交、自駕);設該公司在該城市的市場份額為30%(假設要和ofo、摩拜3分天下,這裡的30%是假設只有3家投放單車時的值),基於以上假設可以得到目標用戶數為:1000W*60%*60%*15%*30% ≈ 16W人
e.g. 假設現在需要預估一次運營活動帶來的交易量,那麼可以先對交易量「細分」,看看活動覆蓋哪些人群、覆蓋哪些埠、不同人群或埠的交易轉化率(可以參考歷史數據或業務經驗)等,把每個細分人群細分埠的交易計算出來,再進行加總即可。
關於 forecast
基於時間序列的趨勢預測,是基於歷史數據預測未來發生的事件。
e.g. 進行年度KPI預測的時候,可以擬合曆年的實際交易數據——一般業務過了成熟期,就能看到比較明顯的S曲線(sigmoid curve)——基於擬合的曲線就能大致預測出下一年的交易量了。這個預測值可以作為基準,還要考慮業務上新的變化對數據進行調整,比如產品功能改變、人群定位變化等、渠道入口發生改變等。
e.g. 交易預估流程(先用線性回歸預測2018年度的總交易,然後拆分到季度)
註:此處交易是有明顯的季節性變化趨勢的。
註:該案例也可以Holt-Winters法來操作,把Residual的部分區分出來。
時間序列可以分解(decomposition)為4部分:
參考:https://en.wikipedia.org/wiki/Decomposition_of_time_series
長期趨勢(Trend),比如持續的增長或者降低,這種趨勢可能是線性也可能是非線性的(比如S型曲線);
季節變化(Seasonal),通常是一年時間內的周期波動(可能季度、月度或者周等不同時間顆粒度),季節變化通常是因為受到人們活動的周期性的影響而出現的。比如:①人行為上的周期性,e.g.一天的作息、一年4季的購衣需求、不同年齡階段的行為模式等;②周期性的社會活動,e.g.節假日、定期行業集會等;③商業業務的周期性,e.g.唯品會的早10晚8上新、公眾號通常在上班前或者下班後發布消息等;
發展周期(Cycle),不同於季節變化,發展周期的時間跨度更長(通常是兩年以上),而且和事物的生命周期有關(比如產品的生命周期等);
隨機噪聲(Reminder,或Residual),不能歸於以上3類的部分被稱為不規則剩餘(Irregular Remainder),可以看做是時間序列數據中的隨機成分;
舉個例子,原始時間序列如下圖所示:
數據源:https://raw.githubusercontent.com/jbrownlee/Datasets/master/airline-passengers.csv
可以分解為3部分(此處不考慮「發展周期」因素):
註:此處採用Holt-Winters』 additive method來分解,調用函數為statsmodels.tsa.seasonal.seasonal_decompose
時間序列預測的流程可以參考下圖
來源:http://people.duke.edu/~rnau/411fcst.htm
對於數據轉化和預測方法的選擇可以參考
https://otexts.com/fpp2/transformations.html
https://hbr.org/1971/07/how-to-choose-the-right-forecasting-technique
Selecting Forecasting Methods, J. Scott Armstrong
時間序列預測常見方法:
回歸模型,對於歷史數據進行擬合(可能是線性也可能是非線性),線性的情況意味著長期的變化趨勢基本一致(平穩增長或者平穩下降),非線性的情況則說明變化的速度不穩定(比如生長曲線);
ARIMA模型,差分自回歸移動平均模型(Autoregressive integrated moving average),ARIMA由自回歸模型、移動平均模型和差分法結合而來;
更多參考https://otexts.com/fpp2/arima.html
https://en.wikipedia.org/wiki/Autoregressive_integrated_moving_average
Holt Winters'方法,也被稱之為季節分解法,將原始時間序列分為level(基線)、trend(變化趨勢)、season(季節性波動)3部分;
更多參考https://otexts.com/fpp2/holt-winters.html
移動平均法(Moving Average),通常用於時間序列比較平穩的情況(stationary);
指數平滑法(Exponential Smoothing),對於參與預測的時間周期進行加權,可以看做是加權版的移動平均法;
關於時間序列預測的實操(Python)可以參考:
基於時間序列的趨勢預測時,需要注意:
要有完成的觀測周期,小心「黑天鵝」現象——火雞觀測了1000天沒有被吃掉,不能代表第1001天依然好運,所以完整的觀測周期很重要;
數據的周期長短要視具體的業務場景,比如可能考察產品的周期性,也可能是某個用戶群等,不同的場景的時間顆粒度也不一樣;
發展趨勢中需要區分自然因素和「人工」因素,自然因素是不可控的(比如PEST等外部因素的影響),「人工」因素是可控的,在進行預測時最好將不可控的隨機成分和可控的穩定成分區分開;
業務發展的預測要考慮市場環境以及產品生命周期,有可能這個市場本身就在縮小,或者產品已經經歷了成熟期;
注意觀測期和預測期是否會出現一些大的變化,比如產品的功能、業務覆蓋的人群、外部市場環境等,對預測指標影響較大的因素出現時,那麼觀測期的數據和預測期的數據大概率不能「同日而語」,需要進行較大的調整;
其他注意事項可以參考:http://people.duke.edu/~rnau/notroubl.htm
參考資料:
活用數據,驅動業務的數據分析實戰,陳哲,8.3.1
http://people.duke.edu/~rnau/411home.htm
Forecasting: Principles and Practice,https://otexts.com/fpp2/
http://ucanalytics.com/blogs/forecasting-time-series-analysis-manufacturing-case-study-example-part-1/
https://corporatefinanceinstitute.com/resources/knowledge/modeling/forecasting-methods/
http://www.forexabode.com/forex-school/technical-indicators/moving-averages/which-moving-averages-of-what-time-frames-are-best/