隨著人工智能技術的不斷發展,智能預測已經成為各個領域的重要應用之一。現在,智能預測技術已經廣泛應用于金融、零售、醫療、能源等領域,為企業和個人提供決策支持。
智能預測技術通過分析大量的數據,利用機器學習和深度學習算法構建模型,對未來的趨勢和事件進行預測。由于智能預測技術的準確性和可靠性不斷提高,各個領域都在積極探索和應用智能預測技術,以獲得更好的決策效果和效益。
本文通過一個零售行業銷售預測的實戰案例來介紹永洪科技的數據變換操作節點和LightGBM算法,以幫助廣大用戶了解和學習整個數據處理和模型訓練、預測、評估的全過程。
中國零售業是國家經濟的重要支柱之一,其在2021年的社會消費品全年零售總額達到了440823億元,同比增長12.5%。盡管線上零售業務正在迅速發展,但線下零售仍然占據了巨大的份額。
隨著數字化轉型的推進,企業可以利用人工智能技術實現更精細化的運營,從而提高零售店的銷量和效益。永洪的深度分析功能是一種非常有用的工具,可以幫助企業更好地預測零售店的銷量情況,從而制定更精準的銷售策略和運營計劃。今天,我們就通過永洪科技的深度分析功能,教您預測零售店的銷量情況。
我們以一個在7個歐洲國家經營著3000多家藥店的連鎖企業為例,通過構建模型,可以幫助它的門店經理提前至多六周預測每日的銷售額。需要有兩張數據表,分別為各個門店的信息數據和從所有門店匯總來的歷史銷售信息,詳細字段描述如下表。門店的銷售情況受到許多因素的影響,包括促銷、競爭、學校和國家假日、季節性和地區,這個可以根據您的實際情況修改。
字段名稱 | 字段描述 | 數據類型 |
Store | 門店的唯一Id | 數值型 |
StoreType | 區分4種不同的商店模式 | 文本型 |
Assortment | 描述門店分類級別 | 文本型 |
CompetitionDistance | 到最近的競爭對手門店的距離(以米為單位) | 數值型 |
CompetitionOpenSinceMonth | 最近的競爭對手門店的(大概)開店月份 | 數值型 |
CompetitionOpenSinceYear | 最近的競爭對手門店的(大概)開店年份 | 數值型 |
Promo2SinceWeek | 該店開始參與促銷活動的日歷周 | 數值型 |
Promo2SinceYear | 該店開始參與促銷活動的年份 | 數值型 |
PromoInterval | 連續時間間隔的促銷活動,活動重新啟動的月份。 | 文本型 |
Promo2 | 門店有無持續不斷的促銷活動 | 數值型 |
表1門店信息字段描述
字段名稱 | 字段描述 | 數據類型 |
Store | 門店的唯一Id | 數值型 |
DayOfWeek | 一周的周幾 | 數值型 |
Date | 日期 | 數值型 |
Sales | 當天的營業額 | 數值型 |
Open | 門店當天是否營業 | 布爾型 |
Promo | 門店當天是否有促銷活動 | 布爾型 |
SchoolHoliday | 是否受公立學校停課影響 | 布爾型 |
StateHoliday | 是否國家假日 | 文本型 |
表2?銷售信息字段描述
對于這種預測的場景,我們一般會將其抽象為一個回歸問題,LightGBM算法在實際工程項目中對類別型特征的處理非常適合一些金融數據或多因素影響的銷量數據建模場景,所以我們選擇LightGBM回歸。
首先要分析數據,然后對數據進行預處理,永洪科技的深度分析功能提供了幾十種數據變換節點,采用了可視化的操作方式,通過鼠標拖拽即可完成流程的搭建。選中商店數據節點,在右側的數據探索可以查看對字段的統計分析結果。(以下使用的數據處理節點為根據此數據分析選擇的,不代表所有場景都需要使用這些節點,需要根據數據情況選擇。)
選擇CompetitionDistance字段,在統計中缺失值數量顯示存在3個缺失值,且各個門店差別較大(最小20,最大75860),故而使用缺失值填充節點處理。
又通過數據分布直方圖可知存在數據傾斜,所以需要進行對數變換。為了知道促銷距今有多少周,還需要將Promo2SinceYear和Promo2SinceWeek字段的信息合并處理為Promo2Weeks字段,因為銷量和促銷的時間相關。使用計算列節點,新建對數變換和Promo2Weeks計算列。
因為上述計算過程會出現缺失值,故需要將其填充,否則空值無法分析。
對于銷售信息數據,我們從數據探索的盒須圖中可以看出Sales字段存在明顯偏離其它數據的值。
所以先使用過濾節點,過濾偏離數據,運行后發現此數據并沒有參加促銷,因為促銷才更能影響銷量,故將其判斷為異常值過濾掉,且不需要未營業時的商店銷售數據,因為此數據對銷量判斷沒有意義,故將未營業時數據過濾。
接下來從日期特征提取年、月、日特征,為了后續可以精細的按月判斷促銷。
因為需要將商店數據中的PromoInterval字段與銷售信息中的Month字段結合,判斷銷售記錄是否在促銷期間發生,所以我們通過聯接節點將兩個數據合并在一起。
如果想預測商品銷量的話,是不是促銷月是很重要的信息,所以通過計算列節點新建名稱為是否為促銷月的數據。
最后,使用過濾節點將最后48天的數據(即過濾大于等于2015年6月14日的數據)劃分為測試集,其它為訓練集(即過濾小于2015年6月14日的數據)。至此,數據預處理流程結束。
之后,我們在訓練集過濾節點后接LightGBM回歸節點,并調整其配置參數,如果不是很了解參數,也可以選擇自動調參,特征列字段為Promo2Weeks-Fill Null Value、PromoInterval等,目標列選擇Sales。
測試集過濾和LightGBM回歸節點后接模型應用節點,此流程是為了將訓練完成的模型用于測試集,所以模型應用節點的自變量需要和模型的特征列一致(可以直接復制粘貼字段)。因變量需要在選擇列中新建變量,命名為predict。
模型應用后接回歸性能評估,用各種指標比較真實值和預測值的差距。最后通過連接圖片視圖、表格視圖或數據集視圖查看結果。
運行實驗后,可以在模型應用結果中查看預測值。除此之外,我們還可以查看在測試集上預測的銷售額和測試集中樣本的實際銷售額的對比圖,評估預測準確性。
本案例是一個常用的預測場景,可以大致總結為以下過程,此流程為機器學習的通用流程。
也可以查看和了解更多內置案例,精準的預測不僅能幫助企業提前制定規劃,也可以幫企業降低風險。在數字化轉型的大潮中,讓我們一起攜手前行。