七、基於機器學習方法對銷售預測的研究

基於機器學習方法對銷售預測的研究

在開始今天的分享之前,我首先跟大家簡單的聊一下,剛剛過去的雙十一,大家可能更關心的是雙十一的折扣,什麼商品打了什麼折扣。但是對於天貓而言,他們可能更關心的是雙十一當天的銷售額是多少,因爲知道銷售額,他就能提前做一個準備,做到未雨綢繆。

作者:唐新春來源:大數據雜談|2016-12-28 15:19

 收藏

  分享

 

很高興“InfoQ”團隊和“百分點大數據學院”牽頭舉辦此次活動。“百分點大數據學院”是由百分點發起的大數據領域專業、開放的分享交流平臺,通過定期舉辦線上線下活動,邀請大數據領域學術專家、技術領袖、企業高層,分享行業、技術、應用等方面最前沿的經驗與見解。也非常感謝InfoQ的團隊能夠提供這麼好的一個機會給大家做一次分享。我分享的主題是《基於機器學習方法對銷售預測的研究》,從百分點運用機器學習落地服務的角度,介紹機器學習的核心思路和實踐。

首先我先自我介紹一下,在加入百分點之前,曾在生物信息公司中負責生物大數據的分析和數據挖掘;在百分點負責在金融領域的徵信模塊開發、銷售預測領域預測模型研究,以及零售類用戶畫像的研發等工作。

銷售預測的基本情況

在開始今天的分享之前,我首先跟大家簡單的聊一下,剛剛過去的雙十一,大家可能更關心的是雙十一的折扣,什麼商品打了什麼折扣。但是對於天貓而言,他們可能更關心的是雙十一當天的銷售額是多少,因爲知道銷售額,他就能提前做一個準備,做到未雨綢繆。

我們這邊有三組數據,第一組是在雙十一的前十天,網上有一個專家預測,雙十一是1180億,7天以後馬雲放出豪言,說今年的雙十一可能要突破1500億,去年是920多億。在雙十一的前一天,網上有一個專家預測了今年的雙十一是1200億,最後雙十一是1207億。

這裏有兩個問題,第一個問題,預測是怎麼做出來的?第二個問題是:對於同一件事情它是預測出不同的結果,什麼結果是好與壞?第一個問題是怎麼預測的問題,第二個問題是預測的效果好與壞的問題。這就引出了我的主題,《機器學習對銷售預測的研究》。

機器學習是常用的日常分析的方法,另一方面機器學習在海量數據中挖掘其中的規律效果非常好。

首先,說說,銷售預測的現狀和痛點。銷售只是一個商業問題,要做的是滿足用戶的需求,同時對後續的運營做主導。而且它的目的並不僅是增加企業的銷量,而是能夠讓企業能夠獲利,利潤增加,所以它是一個商業問題。

對於這樣一個商業問題,它在商業環境裏面地位是顯而易見的,這裏面有物流、庫存、促銷、財務等等四個方面的作用。對於銷售預測的痛點,有三方面:①商業環境變化莫測,要做到預測非常準確可能會比較困難;②銷售預測並不是一個純粹的銷售預測,它與企業的整體的反應鏈相關的;③有企業產品比較單一,或者是服務比較單一,想要通過這個銷售預測來做這個指導,來指導研發新的產品,或者是通過價格進行動態定價。

在我看來,我覺得核心的痛點就是預測的精確性的問題,也就是第一個痛點。如果第一個痛點很好的解決掉,後面痛點就很好解決。預測的精確性爲什麼是核心的痛點呢?這裏面就要從預測開始講起,我們對一個事件進行預測是這樣一個過程,就是基於歷史的情況進行推演出一個規律,通過這個規律來進行推演到未來。它的特點就是我的短期的預測的精度要遠遠高於長期的預測的精度,即,未來一週的預測要比未來三個月的精度要高。

同時對於預測的話,我們會有幾個方面的假設,第一方面是變化模式,其實就是數據裏面的規律,它是我們對於這個待預測事物的瞭解因素。比如說你要去預測明天彩票的號碼,我們已經通過對彩票的分析我們知道沒有因素是可以影響它的,所以我們是預測不了明天的彩票。這是第一個變化模式。

第二方面,我們要基於數據來做,你的數據量太少,我們這邊也做不了,就是一定要達到數據量的級別我們才能做數據挖掘,或者機器學習。

第三方面,我們做機器學習,我們做預測,都會有一個理論框架,在整個理論框架下我們才能做,才能落地。所以這三方面就構成了我們今天要講的銷售預測的體系框架。銷售預測體系框架到底是什麼呢?

其框架就是銷售預測的基本步驟,即確定預測目標、收集和理解數據、建立模型和評價指標。

銷售預測的基本步驟 

第一步,確定預測目標:首先要研究一下它的預測的對象,比如我要預測衣服,衣服是冬天的衣服,肯定是有季節性的,預測對象不一樣,場景不一樣,我們預測的方法也會不一樣。

同時,做銷售預測一般會有一個預期,我們希望這預測做未來4周的預測,還是未來5天的預測,這是有一個短期的預測和長期的預測。如果是希望太高的話我們可能達不到,希望太小,我們花費了這麼多的時間和精力。通常而言,你要預測未來一個月的銷量,至少需要兩年的數據。

此外,因爲需要跟業務進行對接,所以業務目標也很重要。一方面是模型的精確性,即,我們可以給出一個精確度,另一方面是模型的可解釋性,即,我們的結果更多是要根據後面的業務部門來進行交接,進行溝通,這時候你就不能解釋,好與不好爲什麼,這要帶有可解釋性。

綜上所需,確定預測目標要分兩方面進行權衡,即預測精確性和模型可解釋性。

第二步,收集數據或理解數據階段。而這一步通常包括三個小的子步驟,即:收集數據、數據探索和數據預處理。要儘可能多的獲得數據,同時,還要理解數據背後的故事與含義。這裏有一個小故事:我當時在做項目的時候,我當時電商的銷售預測的時候,我看了一下庫存,一般來說你賣出一件商品庫存就會減,但是我在數據庫裏看庫存爲什麼是負值呢?我就和業務部門進行溝通,原來他們把庫存的默認值就是負值。這就是對於我們在做預測的時候,對數據背後的含義一定要理解清楚。這是一個數據探索。

而數據探索,其目的是爲了更好地發現數據的規律,對應用建模提供一個指導方案。

數據預處理是因爲同時收集的原始數據可能非常髒、質量非常差,需要做數據清洗。數據預處理的方法很多,這裏主要介紹兩個數據預處理方法,缺失值處理和數據轉換。缺失值處理是指,發現缺失值的時候,需要理解缺失背後的原因是什麼,是數據庫的技術問題還是真正業務的原因導致它缺失?如果是後者業務原因導致缺失,我們再來考慮怎麼處理缺失值,處理缺失值的方法大體有兩類:直接刪除法和插補法。直接刪除法是將缺失率較高的特徵或樣本數據進行刪除,而插補法是通過已有的數據對缺失值進行填補。而數據變換是指數據的分佈與我們假設的數學模型會不一樣,這樣的數據將會對預測精度會有一定的影響。因此,導入模型之前我們就要把數據進行變換,一般有兩種方法:直接對數據進行變換、Box-Cax變換。

第三步是應用建模。銷售預測的方法有很多種類,本報告主要是介紹以下三類:第一類就叫主觀預測法,即,專家法;第二類是時間序列法,即指數平滑法和自迴歸移動模型;第三類是機器學習中的迴歸算法。

銷售預測的基本方法

專家法是指通過人的判斷,人的經驗對於未來的銷售做一個預測,它的優點是比較快速,比較簡單,就是很快就能夠給一個結果。缺點就是我們預測的結果跟你預測的結果都不一樣,帶有差異性。這個專家法其實很多公司在前期他們都是用專家法來進行預測的。還有我們的客戶他們在剛成立的電商,他也是用專家法來做的。

時間序列的方法中最簡單是指數平滑法。它的特點是“重近輕遠 ”,即通過不同的權重來控制預測的精度。優點是簡單、適合於趨勢預測;缺點是精確率不高。

ARIMA模型是相對比較複雜一點,其原理是用銷量去預測未來銷量

無論是指數平滑還是ARIMA模型,其預測對於趨勢性較強的數據集效果比較好,但如果遇到趨勢不那麼強的數據集,則效果不太理想,這時,可以考慮用機器學習的方法進行銷售預測。

機器學習的整體流程爲:首先,將數據集劃分爲訓練集和測試集,其次,對於訓練集做特徵篩選,提取有信息量的特徵變量,而篩除掉無信息等干擾特徵變量,再次,應用算法建立模型,最後,結合測試集對算法模型的輸出參數進行優化。

這裏主要介紹線性迴歸模型、決策樹(迴歸樹)模型、隨機森林、xgboost、神經網絡、支持向量迴歸等六種算法模型。

線性迴歸模型:假設銷量與影響銷量的因素是線性關係的,包括誤差分佈、線性方程和激活函數等。

決策樹(迴歸):其原理是通過if-then規則對特徵變量進行逐步決策來構建的模型。此處,可以舉一個例子來簡單講解決策樹算法的思想是什麼?比如說我想給一個妹紙進行顏值評分,分值範圍爲[0,10]。評分的第一輪判斷是五官是否端正?如果爲否,打3分;如果爲是,則進行第二輪判斷,即身材,身材不好則打5分。身材好的話再進入第三輪判斷,即是否有錢,有錢就是典型的白富美,就是9分。沒錢則爲7分。從圖中可以看出,其判斷決策的過程倒過來看是一個樹,紅色是它的葉子,葉子對應他的分值,黃色是變量。

隨機森林是從決策樹演變而成的一個算法,但其思想與決策樹相比增加了集成思想。同時,其“隨機”具有兩層含義,第一層是對特徵變量進行隨機選擇。第二層是,對訓練集樣本進行隨機選擇。

xgboost是基於傳統的GBDT算法進行了優化的集成算法,它是數據挖掘大賽上面得分非常高的算法。它的思想是這樣的,我給一個數據集,我現在有一個問題,就是要看他一家人當中是否會喜歡電子遊戲,也是通過構建樹的情況進行判斷,比如年齡、性別進行判斷,它會反映這個家庭成員對應的我們的樣本會打一個分,最後男孩給2分,女孩給1分。有時候我們一棵樹確定不了,我們就規定多棵樹,樹1和樹2之間並不是獨立的,第一棵樹的時候對樣本做第一次判斷,判斷的時候有對和錯,但是我會更關注於我判斷錯的那一部分,我在規定第2棵樹的時候,我把預測錯的更多的考慮一下,就會變成第2棵樹,我會過多的關注那些預測錯的,再依次的來進行優化。

神經網絡是指模擬大腦神經元的工作的非線性模型,神經網絡是現在最火的一個深度學習的基礎。其包括三個部分:輸入層、隱藏層和輸出層。輸入層在銷售預測中則爲影響銷量變換的各相關因素變量;輸出層爲銷量;中間隱藏層爲各相關因素變量到銷量之間的一個非線性映射關係,通常爲一個函數

神經網絡是在反欺詐領域用得比較多,像現在的銀行、互聯網金融,有的人進行欺騙性的貸款,就用神經網絡可以很快的把他發現出來。還有檢測病人也可以用到神經網絡。

支持向量迴歸其本質是跟SVM是一樣,即尋找能使迴歸局域更大的margin,其適用於小數據集和高維數據集。

到目前爲止,已經簡單介紹了六種常用於銷售預測的機器學習方法,這些算法也就很好地回答了前面“雙十一”銷售額例子的第一個問題,即如何進行銷售預測?

銷售預測效果評估

第四步是評價指標,即預測效果好與壞的問題。對此問題,我想從兩個方面跟大家進行分享,即評估方法論和評估的定量指標。第一方面,方法論K折交叉驗證。其基本思想爲:將總數據集均勻劃分爲k等份(假設取k=10),第一次對數據集進行劃分過程爲:第一份作爲測試值,驗證這個模型,剩下第2到第10個做訓練集。第二次劃分過程爲:把第2個作爲測試值,剩下9個作爲訓練集,然後依次進行訓練集和數據集劃分,一共會,得到10個模型,選擇最小的作爲我們最終的模型。

第二方面是評估指標RMSE,值越小,說明預測值與真實值之間的差異就越小,模型效果就越好。

至此,已經把銷售預測的四大步驟均已經介紹完畢了,下面就以某電商網站的銷售預測案例作爲理論實戰分享。

項目案例

下面我們進入機器學習的實戰部分。我會大家看一下案例在上述理論框架的效果怎麼樣。

第一步,確定預測目標是爲某類商品歷史銷量排行前20的單個商品進行未來7天的預測。

第二步,收集和理解數據,本案例一種爲六大維度72個指標。其實,影響銷量變化的因素錯中複雜,除了本身歷史銷量外,還有一些:比如說競爭對手的因素、促銷因素、新聞熱點因素、口碑因素、隨機事件因素、非技術因素等等,但是,對於算法建模而言,我們需要把有數據支持的、並且能夠可控的影響銷量的相關因素考慮進去,因此,才得出了六大維度72個指標(特徵變量)體系。

我們對72個指標(特徵變量)進行了數據探索,這裏以節假日等級與銷量的關係爲例,通過對數據探索發現了一條規律,即:節假日等級越高,銷量會越好。

第三步爲應用建模,我們使用了6個機器學習模型和1個ARIMA模型對該案例進行了預測建模,其結果如上圖所示,該結果對比圖橫座標是真實銷量值,縱座標爲算法模型預測值。不同顏色的線對應不同的算法預測結果擬合線,中間45°虛線爲參考線,與參考線越近的算法,其效果越好。從圖可以看出xgboost和隨機森林兩個算法的效果是比較好的。

第四步爲評價指標,這裏不僅輸出RMSE值,而且還將歷史銷量與未來預測銷量進行可視化展示,即如上圖所示。

我們對所有的預測算法進行了總結,包括預處理、變量篩選方法、可解釋性和精確性等內容。

同時,我們也對基於機器學習對銷售預測的研究進行了總結,主要分機器學習、數據、效果和業務四個方面。

第一方面是機器學習層面,即機器學習可能更多的是關注相關關係。做銷售預測,我們只用到了跟銷量變化有關的因素變量,而不是因果變量。有些客戶會問我們:現在我要提高商品銷量,請你們算法人員告訴我調哪些參數能夠讓銷量增加?其實這就是一個不合理的需求,因爲我是做預測的時候我們用到機器學習的模型,我只是用到像庫存、價格、節假日,是跟銷量無關係的,但是並不是默認認爲庫存高就一定會影響銷量的增加,庫存低就一定影響銷量減小。因爲後者它是一個因果關係,而我們做機器學習用的是一個相關性的關係。

第二方面是數據的層面,沒有數據或數據質量差,效果就會較差,業界流行一句話“垃圾進垃圾出”就是指數據。

第三方面是效果層面。其實,效果是評估一個模型對於好與壞。對於銷售預測而言,其效果可能主要體現在是否增加企業的利潤。但是這樣的效果不太好評論,因爲這不僅僅要考慮預測的精度、模型的可解釋性等算法效果,還要考慮企業的供應鏈、整體能力等。不能將機器學習的預測效果作爲衡量企業是否增加利潤的惟一標準。

第四方面是業務層面,即在機器學習訓練之前的數據預處理、訓練之中以及訓練之後的模型評估都需要一定的業務理論作爲指導。嘗若業務理論偏弱,則可能會影響整個建模過程,其效果也會受到影響。而且我們是從算法的角度,解決的是算法的問題,但是算法的問題,最終還是要回到我們業務問題,在銷售預測上我們要回到怎麼樣提高業績。

銷售預測終究還是一個商業問題,我們只是從數據層面,從算法層面很難能夠很好的把這個商業問題解決掉。我們認爲這個效果已經比較好了,其實是比那種大數據的精準營銷、精準預測還是有一段的距離要走。這是我們對於用機器學習來做產業落地的一個展望和規劃。

我的分享就到這兒。謝謝大家!

答疑環節

提問1:銷售預測的銷售指標如何定?通過哪些維度預測?預測週期大概多長?

答:銷量預測的指標體系的整理主要是通過業務邏輯和待預測商品本身的數據情況而確定的。比如電商類某商品的銷量預測,從業務上進行商業分析可以得出,庫存因素、價格因素、口碑因素、節假日因素、促銷廣告因素、新聞熱點因素(比如三鹿奶粉被新聞曝光,導致國產奶粉在線上銷售受阻)、國家政策因素(主要是指跨境電商,國家稅率的高低)等等因素,同時,也需要結合待預測商品本身的數據情況,如果以上的幾個業務上分析的因素,只有庫存因素和節假日因素,那就只能用這兩個因素進行預測了,後期等獲取到其他因素的數據再進行補充。

而預測週期的確定需要業務部門結合企業的整體供應鏈能力以及盤點本身歷史數據情況而定,如果企業的數據質量較好,歷史數據量又較多(比如超過2年以上的數據),那麼預測週期可以設置長一點。但是對於銷量預測而言,有一個特點,即短期預測的精度要遠高於長期預測的精度,也就是說預測未來一週的精確率要比預測未來三個月要高得多。

提問2:電商類銷量預測,有什麼特殊的要求和使用的場景?比如樣本量,準確性?

答:電商類的銷量預測與實體的銷量預測的主要區別在於用戶體驗上,我們稱電商銷售預測爲線上預測,而實體的銷量預測,比如衣服的銷量預測、藥店的銷量預測和文具的銷量預測等都屬於線下預測;而對於線上預測,除了本身的商業環境影響(價格、庫存、質量、評價等等)外,還有一部分影響銷量的因素是互聯網上的用戶行爲數據,主要包括瀏覽、點擊和收藏等數據,這些用戶行爲數據主要是通過布碼技術活動的(通過將抓取的代碼部署在web端或PC端),同時,還需要考慮用戶行爲數據的滯後性,即某用戶收藏了該商品,但是需要經過一定時間才能下單購買,這個時候需要把具有滯後性的變量進行拆分,再加入到機器學習模型中去。

對於樣本量的多少,需要以預測的目標而定,預測目標較短,則所需要的訓練集就少一些,如果預測目標較長(超過5天),一般則需要1年以上的歷史數據。至於準確性,需要結合數據情況而定,準確性的指標通常用RMSE,RMSE越小則準確性越好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章