蔡芬
(泉州師范學院,福建泉州 362000)
21世紀是信息大爆炸的年代,面對著海量的銷售數(shù)據(jù),零售超市越來越重視對日常銷售數(shù)據(jù)的利用,從中發(fā)掘有利于超市經營決策的信息。超市經理的職責之一是確保高的銷售額,那么,理解客戶的購物模式是達到該目標的第一步。利用關聯(lián)規(guī)則挖掘技術對零售超市的海量交易數(shù)據(jù)進行分析,發(fā)現(xiàn)客戶的購物模式,進行貨架的陳列優(yōu)化,將是很有必要的研究。
本文的數(shù)據(jù)和課題均來源于泉州某大型連鎖超市。課題組基于數(shù)據(jù)挖掘技術構建經理人輔助決策平臺,“貨架陳列優(yōu)化輔助決策模塊”就是決策支持模塊之一。挖掘模型把事務數(shù)據(jù)庫轉換成“二維垂直存儲結構”,基于這種垂直數(shù)據(jù)格式來進行挖掘操作以提高挖掘效率,并在挖掘模型中加入“多層”機制,使得挖掘結果更合理適用。
系統(tǒng)體系結構如圖1所示。
圖1 超市決策支持系統(tǒng)體系結構圖
首先,為了不給超市的營運數(shù)據(jù)庫造成額外的負擔,各種異構數(shù)據(jù)被抽取裝載到與異構數(shù)據(jù)庫結構完全相同的數(shù)據(jù)緩存區(qū)暫存;接著,數(shù)據(jù)被轉換、清洗和去噪成為存儲在SQLServer服務器上的主題數(shù)據(jù)庫;主題數(shù)據(jù)庫被聚集為存儲在Analysis Server中的數(shù)據(jù)立方體以便被數(shù)據(jù)挖掘模塊快速訪問;最后,通過數(shù)據(jù)挖掘分析得到的信息被收集起來提供給經理人,輔助其進行決策[1-3]。
系統(tǒng)使用MS Sql Server作為數(shù)據(jù)緩存區(qū)和數(shù)據(jù)倉庫的服務器,使用Analysis Services作為數(shù)據(jù)立方體服務器。服務端和客戶端程序均使用.Net架構,C#語言編寫。在C#中引入DSO(Microsoft Decision Support Object)組件,通過組件的使用,可以在Analysis Services中建立數(shù)據(jù)立方體。使用XMLA(Microsoft XML for Analysis)實現(xiàn)Analysis Services上多維數(shù)據(jù)集和挖掘程序的無障礙交互[4]。
多維數(shù)據(jù)集使用星型模式,以購物小票為中心,通過關鍵字與各個維表相連,每個維表按需求劃分維度。多維數(shù)據(jù)立方體的星型模式如圖2所示。
圖2 關聯(lián)規(guī)則星型立方體
使用DSO組件在Analysis Services上建立數(shù)據(jù)立方體的示例程序如下。
//利用MDStore建立clsCube對象DsoCube
Dim DsoCube As DSO.MDStore
//建立數(shù)據(jù)立方體sales
Set DsoCube=DsoDB.MDStores.AddNew(“sales”)
//建立維度對象
Dim DsoDim as DSO.Dimension
//建立商品維度
Set DsoDim=DsoDB.Dimensions.AddNew(“item”)
//建立維度層次
Dim DsoLev As DSO.Level
//添加層次
Set DsoLev=DsoDim.Levels.AddNew(“item_name”)Set DsoLev=DsoDim.Levels.AddNew(“category1”)
Set DsoLev=DsoDim.Levels.AddNew(“category2”)
…
End With
2.2.1 “多層”挖掘機制
“多層”挖掘機制的建立,對于超市商品的關聯(lián)規(guī)則挖掘是很有必要的。因為數(shù)據(jù)的“稀疏性”,最底層的數(shù)據(jù)項之間很難找出有意義的強關聯(lián)規(guī)則。比如:“潘婷倍直垂順洗發(fā)露200 mL”、“潘婷倍直垂順洗發(fā)露400 mL”、“飄柔滋潤去屑洗發(fā)露禮盒裝”和“品客薯片 (香蔥味)”之間就很難得到強關聯(lián)規(guī)則,而也許購買了洗發(fā)露,又購買了薯片就是一條強關聯(lián)規(guī)則。又比如數(shù)據(jù)庫中很多事務都包含“蘋果”項,那么“蘋果”就會出現(xiàn)在很多推導出來的強關聯(lián)規(guī)則當中,而有時候,這些關聯(lián)規(guī)則毫無意義。為了使挖掘工作有意義,就必須設計“多層”挖掘模型。
根據(jù)項目數(shù)據(jù)的特點,設計了包括商品編號在內的六層商品概念分層,以26大類劃分為例,商品的概念分層圖如下。
圖3 一級分類26類商品的概念分層圖
商品分層中,一級分類劃分、二級分類劃分和最底層商品編號信息直接提取于超市的管理信息系統(tǒng)。三級到五級分類的劃分和分類數(shù)據(jù)字典的編寫為后期數(shù)據(jù)預處理時添加。系統(tǒng)的關聯(lián)挖掘工作通過在六個不同的商品層次間靈活轉換,實現(xiàn)商品關聯(lián)規(guī)則更有效的挖掘。
2.2.2 垂直存儲結構的使用[5]
挖掘算法執(zhí)行中,如果直接和事務數(shù)據(jù)庫進行數(shù)據(jù)存取操作,隨著數(shù)據(jù)量的增大,必然產生大量的I/O操作,致使挖掘效率低下。設計二維垂直存儲結構,把挖掘算法中對數(shù)據(jù)庫記錄的操作,轉化成對二維垂直存儲結構中對于數(shù)組的操作,可以大大提高挖掘效率。
為了說明此存儲結構,截取2013年8月16日事務數(shù)據(jù)庫中小票數(shù)據(jù)記錄如下。
表1 2013年8月16日小票事務數(shù)據(jù)截取
轉換為二維垂直存儲結構,假設為C1如下。
表2 小票事務數(shù)據(jù)截取的二維垂直數(shù)據(jù)格式
此存儲結構包含兩個維度:“項”,指的是需要挖掘的頻繁項集;“支持的事務列表”,指的是該項對應的支持事務列表,并且結構按照支持度記數(shù)倒敘排序。
2.2.3 基于垂直存儲結構的挖掘算法
基于此二維垂直存儲結構的挖掘算法基本原理等同于經典的關聯(lián)算法Apriori,首先產生頻繁項集,然后生成規(guī)則,生成頻繁項集也是分成兩步,即連接步和剪枝步。傳統(tǒng)的事務數(shù)據(jù)庫讀取方式,每次生成n項頻繁項集并記數(shù)都要遍歷一次數(shù)據(jù)庫;而采用此存儲結構的存儲方式,每次生成n項頻繁項集并記數(shù)只需要進行n個集合的并運算,并計算集合內元素的個數(shù),又因為數(shù)組按支持度記數(shù)排序,連接和剪枝的操作簡單且更高效。
如圖2所示的二維存儲結構進行頻繁項集的生成,假設最小支持度記數(shù)為2。
頻繁1項集進行連接運算,并刪除小于最小支持度記數(shù)的項,生成2項集頻繁項集C2如下。
表3 小票事務數(shù)據(jù)截取的2項頻繁項集挖掘
頻繁2項集進行連接運算后,首先根據(jù)Apriori性質,刪除了存在非頻繁項子集的3項集,例如 (蘋果,特價水果 (1),普甜后腿肉),接著刪除小于最小支持度記數(shù)的頻繁項,生成3項頻繁項集C3如下。
表4 小票事務數(shù)據(jù)截取的3項頻繁項集挖掘
至此,找出了所有的頻繁項集。
該示例根據(jù)超市某門店中2013年8月16日~2013年11月12日的所有商品小票數(shù)據(jù)在模塊下進行關聯(lián)規(guī)則的挖掘分析。
根據(jù)部分關聯(lián)規(guī)則挖掘結果,嘗試給出該分店貨架陳列以下建議。
1)由強關聯(lián)規(guī)則 (黨參,上牛肉 ->香蔥、鯊魚肉;芹菜->香蔥;雞翅中,芹菜 ->香蔥等)可知,消費者在購買鮮肉類產品后都購買了香蔥。
建議:可在鮮肉類陳列區(qū)域增加一個移動貨架用于擺放香蔥,增加商品的銷售。
2)強關聯(lián)規(guī)則 (百事+七喜,魚肉丸->春菜;雪碧+果粒橙促銷裝,鮮白金針菇->魚肉丸)表明,消費者在購買火鍋料后會繼續(xù)購買飲料。
建議:可以在凍品類陳列區(qū)域增加一個移動貨架用于擺放飲料,增加商品的銷售。
3)強關聯(lián)規(guī)則 (直火烘焙->直火烘焙咖啡;美嚼果汁軟糖檸檬,美嚼橡皮糖葡萄->美嚼果汁軟糖荔枝;蒙牛果蔬酸酸乳,蒙牛真果粒->蒙牛果蔬酸酸乳等)表明,消費者傾向于購買同一品牌的同一產品,品牌忠誠度較強。
建議:可以對商品的品牌進行研究,增加品牌的粘性。
4)強關聯(lián)規(guī)則 (川南酸菜魚佐料,青瓜 ->活草;毛哥酸菜魚調料->活草魚等)表明,消費者在購買調料后會繼續(xù)購買草魚。
建議:可在冰鮮類陳列區(qū)域增加一個移動貨架用于擺放調料,增加商品的銷售。
5)強關聯(lián)規(guī)則 (蘭美舒韻蘆薈凝膠深層補水嫩白面膜25 mL,大紅棗 ->蘭美舒婷薰衣草精油晚安果纖眼膜25 mL)表明,消費者在購買面膜后會繼續(xù)購買紅棗。
建議:可在護膚品陳列區(qū)域增加一個移動貨架用于擺放紅棗,增加商品的銷售。
6)強關聯(lián)規(guī)則 (金鑼火腿腸70g*9,地瓜->夏洋白菜)表明,消費者在購買香腸后會繼續(xù)購買蔬菜。
建議:可在蔬菜陳列區(qū)域內增加一個移動貨架,用于擺放香腸,增加商品的銷售。
7)強關聯(lián)規(guī)則 (干脆面,洗衣液->干脆杯)表明,消費者在購買洗衣液后會繼續(xù)購買干脆面。
建議:可在空白區(qū)域增加一個移動貨架用于陳列洗衣液和干脆面,增加商品銷售。
8)強關聯(lián)規(guī)則 (惠爾康果10冰糖雪梨果汁飲料現(xiàn)有,心相印優(yōu)選系列二層手帕紙=現(xiàn)有 ->惠爾康果蘋果果汁飲料;雀巢咖啡1+2奶香串裝,心相印優(yōu)選系列二層手帕紙->雀巢咖啡1+2串裝)表明,消費者在購買飲料后會繼續(xù)購買手帕紙。
建議:可以在飲料陳列區(qū)域增加一個移動貨架用于陳列手帕紙,增加商品的銷售。
經過實地考察,嘗試給出該超市貨架初步擺放建議如下圖4所示,其中,灰色是可以考慮增加的移動貨架。
圖4 超市貨架陳列優(yōu)化示意圖
開發(fā)基于.NET框架和數(shù)據(jù)倉庫技術的經理人輔助決策系統(tǒng)。通過在“貨架陳列優(yōu)化輔助決策”模塊的關聯(lián)挖掘模型設計中建立基于“二維垂直存儲結構”的數(shù)據(jù)格式,使得挖掘工作更高效;通過在挖掘模型中加入“多層”機制,使得挖掘結果更有意義,從而有效幫助超市進行貨架擺放優(yōu)化。下一步工作重點是優(yōu)化“最小支持度閥值”的設定算法,讓挖掘結果更具說服性。
[1]Han Jiawei,Kamber Micheline.數(shù)據(jù)挖掘概念與技術[M].范明,孟小峰,譯.北京:機械工業(yè)出版社,2007.
[2]MacLennan Jamie,Tang ZhaoHui.數(shù)據(jù)挖掘原理與應用[M].董艷,程文俊,譯.北京:清華大學出版社,2010.
[3]Lu SF,Lu ZD.Fast mining maximum frequent itemsets[J].Journal of Software,2001,12(2):293 -297.
[4]Microsoft.XML for Analysis(XMLA)[EB/OL].[2014 -03 -10].http://technet.microsoft.com/zh - cn/library/ms186604.aspx.
[5]文拯.關聯(lián)規(guī)則算法的研究[D].長沙:中南大學,2009.