1. 程式人生 > >大資料教你實現預測未來,這不是夢

大資料教你實現預測未來,這不是夢

隨著資料探勘與人工智慧技術的發展,越來越多的企業將大資料運用到生產實踐與決策指導中。其中,構建合適的模型對未來的趨勢進行預測,是資料探勘中十分重要的一部分。

本文將通過一個小案例教會你如何利用資料探勘技術實現預測未來不是夢。

【工具】R語言

【演算法】多元線性迴歸模型

【目標】預測2018年第一季度小賣部的周均客流量 

資料準備

線性迴歸是指利用數理統計中迴歸分析原理,來確定兩種或兩種以上變數間相互依賴的定量關係的一種統計分析方法,運用十分廣泛,其表達形式為y = w'x+e。多元線性迴歸預測,則是指利用兩個或兩個以上自變數的最優組合對因變數進行預測。

看不懂?沒關係,我舉個栗子你就明白了——在本文案例“預測2018年第一季度小賣部的周均客流量”的課題中,因變數就是我們需要預測的內容,即客流量;自變數則指的是可能對小賣部客流量產生影響的若干個因素。

自變數的選擇尤為重要,一個優秀的資料分析師應該運用其嚴密的邏輯、熟練的業務和天馬行空的想象力,儘可能地將所有的相關因素一列俱全!手機前的你也可以暫停幾秒,看看自己腦海中能想出什麼樣的自變數因素呢?

經過思考和討論,分析師給出了以下一些自變數清單:

  • 小賣部業務水平相關因素:商品種類、商品價格、商品缺貨率、售貨員人數、收銀臺數量、促銷商品數量、促銷折扣力度……

  • 小賣部所在社群相關因素:社群佔地面積、社群居住人口、社群人流量、社群房價、社群物業服務水平……

  • 巨集觀經濟因素:居民消費指數、恩格爾係數、定期存款利率、活期存款利率……

  • 其他因素:政府政策、天氣情況……

也許你會覺得這些變數——也太多了吧!怎麼找啊!怎麼處理啊!跟客流量有毛線關係啊!不用擔心,一方面,比我們更加機智的模型演算法會幫我們挑選出最合適、預測效果最佳的幾個變數;另一方面,受現實因素的限制,許多的變數資料是我們無從蒐集或無法獲取的。

我們採用了實地考察、走訪調查、蹲點採集、撒嬌賣萌等各種手段,最終獲取到了以下8個指標作為預測模型的自變數:

  • 小賣部商品種類

  • 小賣部商品均價

  • 小賣部開啟的收銀臺數量

  • 小賣部的促銷力度

  • 小賣部的衛生情況

  • 小賣部商品缺貨率

  • 小區客流量

  • 當地氣溫

要注意,一家人呢,最重要的就是整整齊齊,資料也是。以上資料必須時間跨度統一(都是從2003年1月至2018年3月的資料)、粒度統一(都是周度資料),且獲取的資料越多,模型預測的效果也就越好。

當然還少不了已知的小賣部客流量資料(2003年至2017年的周度資料)。

構建預測模型

接下來是高大上的程式碼實現階段,不要緊張,請跟著我一步步走——

1、輸入資料。

train為訓練集資料,即2003年至2017年所有欄位的周度資料。test為預測資料,需要預測2018年第一季度的客流量,則,test資料集包括了2018年1月至3月共13周的自變數資料。

2、擬合線性模型。

R中實現擬合線性模型的基本函式是lm(),客流量即為需要擬合得因變數,英文字元“.”代表資料框df_train中的全部變數。

用summary檢視擬合結果,結果中有四個指標需要關注:

  • 一是每個變數倒數第二列的t value,即T檢驗,是檢驗變數顯著性的指標。

  • 二是每個變數最後一列的P值,P值越小,迴歸效果越顯著,後面星級越高。

  • 三是倒數第二行擬合優度R-squared和修正擬合優度Adjusted R-squared,衡量回歸方程對樣本的擬合程度,值越接近於1,迴歸效果越好。

  • 四是最後一行的F-statistic值,即我們常說的F統計量,是檢驗方程整體顯著性的指標。

3、逐步迴歸,構建最優模型。

在step和drop過程中,模型會自動篩選出一些對於預測效果無影響或是起反作用的不好的自變數,也就是P值較大的變數。drop函式會給出下一步線性擬合的變數因素。有時也可以根據P值手動篩選掉效果不佳的變數因素。

在第2步summary(Lm)的結果中,“收銀臺數量”這一變數的P值約為0.08,其星級也小於其他變數,因此可以在下一步擬閤中嘗試去掉該變數。

檢視step2的擬合結果:去掉“收銀臺數量”這一變數後,擬合優度R-squared和修正擬合優度Adjusted R-squared和上一步的值相差不多,說明提出的變數並沒有對結果產生較大的影響。

在構建擬合模型過程中,可以不斷地剔除P值較大、星級較小、擬合效果不好的變數,直到模型能夠使用最少的因素達到最佳的預測效果。

預測結果

構建出最佳的擬合模型後,我們就可以用該模型來進行預測。predict函式的兩個引數分別為“構建出的擬合模型”和“預測集的變數資料”,即呼叫step2模型對test資料集進行預測。輸出predict結果,即得到了預測出的2018年第一季度共13周的小賣部客流量資料。

經過縝密的分析和精確的計算,我們最終得到了最終結果——2018年第一季度小賣部的周均客流量預計為:

同學們學會了嗎?程式碼拿去,趕快練習練習,下一個資料分析高手就是你哦!