佘朝兵
摘要:在介紹了關(guān)聯(lián)規(guī)則挖掘算法的相關(guān)概念以及算法的基礎(chǔ)上,利用校園超市近兩個月的銷售記錄進(jìn)行挖掘分析,得出了該超市商品銷售的關(guān)聯(lián)規(guī)則,并利用對兩條規(guī)則的置信度進(jìn)行分析,建議采取將規(guī)則涉及的商品進(jìn)行組合銷售的策略。
關(guān)鍵詞:關(guān)聯(lián)規(guī)則;超市營銷;Apriori算法
中圖分類號:F721.7;TP311.13 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2018)07-0075-03
1 引言
校園超市作為大規(guī)模商品的集中地,為學(xué)生和老師的日常生活提供便利。超市的經(jīng)營策略是薄利多銷,因此如何提高超市的效益超市管理者面臨的難題。為此,采取的措施無非是兩個方面,概括起來就是開源節(jié)流。一方面,超市需要提高學(xué)生的銷售體驗,促進(jìn)商品的銷售量;另一方面,超市需要盡量地降低超市的運營成本。從銷售體驗角度而言,據(jù)調(diào)查,用戶在超市停留的時間越久,用戶產(chǎn)生的銷售額越高。因此,如何盡量滿足學(xué)生需求的前提下,提高學(xué)生在超市的逗留時間是一個可行的解決思路。從節(jié)約成本角度而言,超市的成本來自多個方面,如人力、庫存、商品本身的成本等。與其他超市相比,可以有效降低成本的一個策略是降低庫存。而這兩個問題可通過關(guān)聯(lián)規(guī)則挖掘算法來解決。關(guān)聯(lián)規(guī)則挖掘算法是數(shù)據(jù)挖掘領(lǐng)域非常經(jīng)典的算法,它主要通過對商品的銷售記錄進(jìn)行分析,挖掘出用戶經(jīng)常購買的商品的規(guī)律,如經(jīng)常買牛奶的用戶同時也會去買面包。利用挖掘得到的規(guī)則就可以采取不同的銷售策略。比如可以將規(guī)則中的兩件商品分別放置在不同區(qū)域,由于用戶買了其中一件商品后,大概率會去購買另一件商品,因此兩件商品的物理空間可提高用戶逗留超市的時間,提高用戶購買其他商品的概率??傊?,應(yīng)用關(guān)聯(lián)規(guī)則挖掘算法可有效提高超市的效益。
2 關(guān)聯(lián)規(guī)則挖掘算法思想以及相關(guān)概念
關(guān)聯(lián)規(guī)則挖掘算法中較為典型是Apriori算法。Apriori算法的核心思想是在給定支持度和置信度以及數(shù)據(jù)庫的前提下,通過掃描數(shù)據(jù)庫記錄,挖掘數(shù)據(jù)庫記錄中滿足給定支持度和置信度的規(guī)則。數(shù)據(jù)庫是由一條一條的記錄組成,每條記錄包括不同的物品信息。表1顯示的某個超市的銷售記錄,在該表中品名就是用戶特定時刻購買的商品集和。
項集支持度是指商品項集在數(shù)據(jù)庫的所有記錄中出現(xiàn)的頻率。項集支持度的計算公式如公式(1)所示:
其中表示商品項集,表示項集在數(shù)據(jù)庫中出現(xiàn)的次數(shù),表示數(shù)據(jù)庫中總記錄數(shù)。商品項集是指所有商品任意組合構(gòu)成的集和,如表1中的商品項集以及對應(yīng)的支持度如表2所示。
關(guān)聯(lián)規(guī)則的格式如,其中,都是項集,但是要求和之間沒有交集。具如華夫餅→方便面、華夫餅→{面包,方便面}等等。
其中是指數(shù)據(jù)庫中項集和同時出現(xiàn)的次數(shù)。以華夫餅→方便面、華夫餅→{面包,方便面}這兩條規(guī)則為例說明如表3所示。
假設(shè)指定要求關(guān)聯(lián)規(guī)則的支持度閥值為0.5,置信度的0.7,則表3中只有華夫餅→方便面這條規(guī)則滿足要求。
3 Apriori算法步驟
根據(jù)上節(jié)提到的算法概念,最終的規(guī)則需要滿足支持度和置信度兩個條件。而規(guī)則是由項集構(gòu)成,因此算法的過程由生成項集、生成規(guī)則這兩步進(jìn)行:第一步尋找滿足支持度要求的項集;第二步由所有符合要求的項集生成候選規(guī)則,最終從候選規(guī)則中篩選出滿足支持度和置信度要求的規(guī)則。而在第一步中由于滿足要求的項集包含的項目數(shù)的范圍是1~(其中表示數(shù)據(jù)庫中所有物品的數(shù)量)。因此生成的過程是最先得到只包含1個項目的項集,再逐步遞增生成其他項集;第二步中的規(guī)則利用先前得到的項集的子集構(gòu)成。以表1的數(shù)據(jù)記錄為例,根據(jù)表2中只包含一個項目的項集支持度,發(fā)現(xiàn)只有{華夫餅}、{方便面}的支持度超過0.5,然后計算由{華夫餅}和{方便面}構(gòu)成的項集{華夫餅、方便面}支持度,發(fā)現(xiàn)其支持度也超過了0.5,滿足要求。由于無法生成只包含三個項目的項集,因此所有生成項集的過程結(jié)束。接下來,根據(jù)剛才生成的項集得到規(guī)則。由于{華夫餅}沒有子集,因此不能生成規(guī)則,而{華夫餅、方便面}構(gòu)成的項集只能生成{華夫餅→方便面}、{方便面→華夫餅}這兩個候選規(guī)則,接下來就只需要分別計算上述兩個規(guī)則的置信度即可得到答案。
獲取滿足需求的項集算法的偽代碼如表4所示。
4 實驗結(jié)果
為驗證算法的有效性,特選擇某校園超市一段時間的銷售數(shù)據(jù),應(yīng)用Apriori算法挖掘。實驗工具采用Anaconda3,實驗過程在windows 2017操作系統(tǒng)上進(jìn)行。
4.1 數(shù)據(jù)來源與數(shù)據(jù)預(yù)處理
本實驗的數(shù)據(jù)來源是某校園超市2018年4、5月兩個月的數(shù)據(jù)。保存的格式是xls格式,每條記錄只包含一件物品,共計31211條記錄。數(shù)據(jù)格式如表5所示。
由于同一個票號有不同的記錄,而Apriori算法要求將同一個票號的所有物品只屬于同一條記錄。因此有必要將如表5所示的原始銷售數(shù)據(jù)進(jìn)行預(yù)處理。處理代碼如下:
def read_data_from_xls(filename):
data = xlrd.open_workbook(filename)
table = data.sheets()[0]
nrows = table.nrows
cur_data={}
idList=[]
LastData=[]
for i in range(1,nrows): # 除了標(biāo)題行外,循環(huán)逐行讀取
t_id=table.row_values(i)[2]#獲取票號
if( not t_id in idList ):
if(len(idList)>0):
LastData.append(cur_data[idList[len(idList)-1]])
cur_data[t_id]=[table.row_values(i)[4]]#獲取貨號
idList.append(t_id)
else:
cur_data[t_id].append(table.row_values(i)[4])
LastData.append(cur_data[t_id])
return LastData
4.2 指定支持度和置信度的挖掘結(jié)果
實驗設(shè)計了兩個函數(shù),其中L,supportData=apriori(dataSet,minSupport)函數(shù)得到的是指定支持度下的頻繁項集,以及每個項集的支持度;而rules=generateRules(L,supportData,minConf)函數(shù)則以前函數(shù)得到的結(jié)果以及最小置信度作為參數(shù)挖掘規(guī)則。本文以最小支持度0.03,最小置信度0.3進(jìn)行實驗,挖掘出的規(guī)則如表6所示。
表6中數(shù)字對應(yīng)的是貨號,通過匹配原始記錄得到貨號對應(yīng)的貨名,得到規(guī)則如下:
{麻辣風(fēng)味腸---->清真香腸}、{麻辣風(fēng)味腸---->依娜麗豆干}
5 實驗結(jié)果分析及其應(yīng)用
通過實驗發(fā)現(xiàn)3%的用戶會同時購買麻辣風(fēng)味腸和清真香腸或者麻辣風(fēng)味腸和依娜麗豆干。原因可能與超市所處地理位置有關(guān)。超市所處的高校位于湘西,而臘腸等產(chǎn)品是湘西特產(chǎn),結(jié)合學(xué)生的年齡以及喜愛的口味,麻辣風(fēng)味腸的熱銷符合現(xiàn)實情況。而清真香腸等產(chǎn)品的熱銷是由于超市所屬高校位于民族地區(qū),高校內(nèi)有部分學(xué)生屬于少數(shù)民族,其中新疆學(xué)生占較大比例。為了照顧新疆學(xué)生的民俗風(fēng)情,校園超市內(nèi)單獨設(shè)置了清真食品攤位。而其他學(xué)生對新疆的清真食品具有好奇心,加上部分清真食品符合學(xué)生口味,因此也屬于學(xué)生喜歡的食品。
從規(guī)則的置信度來看,由于上述規(guī)則的置信度不高,不宜將規(guī)則所列的食品從物理空間上隔開。因此不妨將風(fēng)味腸和清真香腸食品等商品組合成套餐,按一定折扣銷售,將會進(jìn)一步促進(jìn)上述商品的銷售。
參考文獻(xiàn)
[1]賈克斌,李含婧,袁野.基于Apriori算法的數(shù)據(jù)挖掘在移動醫(yī)療系統(tǒng)中的應(yīng)用[J].北京工業(yè)大學(xué)學(xué)報,2017,43(3):394-401.
[2]李志芳.數(shù)據(jù)挖掘技術(shù)在超市營銷系統(tǒng)中的應(yīng)用研究[D].保定:華北電力大學(xué),2011.
[3]黃子航.關(guān)聯(lián)規(guī)則挖掘在超市商品銷售中的應(yīng)用研究[J].赤峰學(xué)院學(xué)報(自然科學(xué)版),2017,33(16):11-12.
[4]Peter Harrington,李銳等譯.機(jī)器學(xué)習(xí)實戰(zhàn)[D].北京:人民郵電出版社,2013.
[5]陳麗芳.基于Apriori算法的購物籃分析[J].重慶工商大學(xué)學(xué)報(自然科學(xué)版),2014,31(5):84-89.