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