南楠
(三門峽職業(yè)技術(shù)學(xué)院,河南三門峽472000)
改進(jìn)Apriori 算法在太陽能銷售系統(tǒng)中的應(yīng)用研究
南楠
(三門峽職業(yè)技術(shù)學(xué)院,河南三門峽472000)
文章以力諾瑞特太陽能銷售系統(tǒng)為例,采用以十字鏈表改進(jìn)的Apriori算法,對每年同期或最近階段的銷售商品數(shù)據(jù)進(jìn)行挖掘分析。充分利用其龐大的售后數(shù)據(jù),了解顧客的購買需求及更進(jìn)一步獲得熱賣商品間的關(guān)系,為公司今后的商品銷售搭配及新顧客的開發(fā)提供有力的保障體制。
數(shù)據(jù)挖掘;商品銷售預(yù)測;Apriori算法
近幾年數(shù)據(jù)挖掘算法被普遍的應(yīng)用于商品零售業(yè)的銷售過程中。對于一個(gè)企業(yè)準(zhǔn)確了解客戶的需求與購買趨勢,有針對性的制定銷售方案是非常重要的。數(shù)據(jù)挖掘中的關(guān)聯(lián)規(guī)則就可以完成從老顧客的購買習(xí)慣中分析預(yù)測出新顧客的需求,挖掘出潛在的購買力,目標(biāo)明確的展開宣傳。通過對銷售數(shù)據(jù)進(jìn)行分析,及時(shí)調(diào)整銷售商品類型與價(jià)格,改進(jìn)服務(wù),本文以力諾熱特太陽能銷售系統(tǒng)為例,給出如何運(yùn)用改進(jìn)Apriori算法作為關(guān)聯(lián)規(guī)則來預(yù)測商品的銷售趨勢與挖掘新顧客的營銷策略當(dāng)中。
1.1 數(shù)據(jù)挖掘
數(shù)據(jù)挖掘技術(shù)主要工作是對數(shù)據(jù)庫中大量的無序數(shù)據(jù)進(jìn)行分析挖掘,找出其內(nèi)在數(shù)據(jù)間聯(lián)系、預(yù)測數(shù)據(jù)的變化趨勢,挖掘其深層價(jià)值為后期的決策提供有力保障[1]。數(shù)據(jù)挖掘的實(shí)施一般包括初始數(shù)據(jù)、挖掘數(shù)據(jù)與分析結(jié)果總結(jié)規(guī)律。
數(shù)據(jù)挖掘按照功能從整體上分為兩種:預(yù)測規(guī)律型和描述特征型。細(xì)化之后包括:概念描述、關(guān)聯(lián)規(guī)則、聚類分析等。一般情況下都是綜合多種挖掘技術(shù)對數(shù)據(jù)進(jìn)行分析提取,獲取人工無法發(fā)現(xiàn)的知識與信息。
1.2 Apriori算法
在商品銷售關(guān)聯(lián)規(guī)則的挖掘中最常用的就是Apriori算法,其作用是對數(shù)據(jù)庫中大量事務(wù)項(xiàng)集進(jìn)行挖掘分析,取得其內(nèi)在關(guān)聯(lián)性。
Apriori算法在挖掘時(shí)一般分為兩步[2]:
步驟一:根據(jù)設(shè)定的最小支持度找出滿足的所有事物數(shù)據(jù)集組合
步驟二:根據(jù)設(shè)定的最小置信度找出事物數(shù)據(jù)間關(guān)聯(lián)規(guī)則
具體流程如下:
假設(shè)初始事物數(shù)據(jù)項(xiàng)集為K,里面包含多個(gè)數(shù)據(jù)項(xiàng),設(shè)定一個(gè)最小支持度mins和一個(gè)最小置信度minc:
(1)掃描迭代出頻繁項(xiàng)集
1)掃描整個(gè)數(shù)據(jù)庫K;
2)統(tǒng)計(jì)每個(gè)數(shù)據(jù)項(xiàng)出現(xiàn)的次數(shù)M;
3)M/數(shù)據(jù)項(xiàng)總次數(shù)與最小支持度mins比較;
4)除去小于mins的數(shù)據(jù)項(xiàng)得出頻繁項(xiàng)集X1;
5)X1自身進(jìn)行笛卡爾積,得出的數(shù)據(jù)項(xiàng)集合與mins值比較,小于其值的集合除去,產(chǎn)生候選項(xiàng)集;
6)重復(fù)1)-5)直至得出最大頻繁項(xiàng)集Xn。
(2)由步驟(1)得出的頻繁項(xiàng)集挖掘關(guān)聯(lián)規(guī)則[3]
1)從步驟(1)中每次掃描得出的頻繁項(xiàng)集X中求其非空子集;
2)對于X的每個(gè)非空子集S,剔除X中數(shù)據(jù)項(xiàng)個(gè)數(shù)與非空子集S個(gè)數(shù)之比小于預(yù)先設(shè)定的置信度minc的數(shù)據(jù)項(xiàng)。
Apriori算法缺點(diǎn):數(shù)據(jù)庫過大時(shí)每次生成的候選頻繁項(xiàng)數(shù)過多;掃描、自連接、比較剔除耗時(shí)長,I/O操作效率低。
分析出商品銷售時(shí)的關(guān)聯(lián)度,商品銷售商就可以準(zhǔn)確的掌握銷售商品間的聯(lián)系,聯(lián)系度高的、熱銷的商品進(jìn)行搭配銷售,即方便顧客選購又會增加銷售額,使商家也更節(jié)約時(shí)間成本獲取最大利潤。
本文中太陽能銷售數(shù)據(jù)庫主要以商品售后數(shù)據(jù)庫為例來演示如何進(jìn)行挖掘分析。商品售后數(shù)據(jù)庫中創(chuàng)建的表包括商品基本信息表,供貨商表,顧客表,進(jìn)貨表,除此之外還有一些銷售中產(chǎn)生的關(guān)聯(lián)表:銷售明細(xì)表,進(jìn)出庫詳情表,顧客反饋表等。使用挖掘算法進(jìn)行數(shù)據(jù)分析的主要功能流程圖如下:
圖1 商品預(yù)測系統(tǒng)數(shù)據(jù)庫挖掘流程圖
3.1 改進(jìn)Apriori算法
本文采用十字鏈表表示數(shù)據(jù)項(xiàng)的改進(jìn)算法,一次性掃描數(shù)據(jù)庫生成用結(jié)點(diǎn)表示數(shù)據(jù)項(xiàng)的十字鏈表,再利用指針遍歷的方式產(chǎn)生候選項(xiàng)集,最后輸出頻繁項(xiàng)集[4]。該算法極大地減少掃描數(shù)據(jù)庫的次數(shù),提高算法的使用效率。
具體改進(jìn)算法描述如下:
(1)掃描數(shù)據(jù)庫,構(gòu)造數(shù)據(jù)項(xiàng)十字鏈表。鏈表中以結(jié)點(diǎn)方式表示事務(wù)頭,數(shù)據(jù)項(xiàng),項(xiàng)目頭,結(jié)點(diǎn)結(jié)構(gòu)如下:
圖2 十字鏈表結(jié)點(diǎn)結(jié)構(gòu)圖
圖2 中,事務(wù)頭結(jié)點(diǎn)中sno為事務(wù)順序號,N1為該事務(wù)鏈中數(shù)據(jù)項(xiàng)個(gè)數(shù),next、first為向下、向右鏈接指針;數(shù)據(jù)項(xiàng)結(jié)點(diǎn)中N2為層數(shù),兩個(gè)next為向下、向后鏈接指針;項(xiàng)目頭結(jié)點(diǎn)中item為項(xiàng)目名稱,N3為項(xiàng)目垂直方向數(shù)據(jù)項(xiàng)數(shù)目,next、first為向下、向后鏈接指針[5]。
(2)構(gòu)建頻繁1-項(xiàng)集L1,掃描十字鏈表項(xiàng)目頭結(jié)點(diǎn),當(dāng)N3>mins時(shí),把該結(jié)點(diǎn)加入頻繁1-項(xiàng)集L1中。
(3)自連接與剪枝操作:
1)L1作自連接,生成Ck候選集;
2)掃描十字鏈表事務(wù)頭結(jié)點(diǎn),當(dāng)N1<mins時(shí),該事務(wù)鏈后所有數(shù)據(jù)項(xiàng)結(jié)點(diǎn)的數(shù)據(jù)域全置為0;
3)掃描十字鏈表項(xiàng)目頭結(jié)點(diǎn),當(dāng)N3<mins時(shí),該數(shù)據(jù)項(xiàng)垂直方向下所有數(shù)據(jù)項(xiàng)的數(shù)據(jù)域全置為0。
(4)構(gòu)建頻繁項(xiàng)集Lk
從Ck中項(xiàng)目頭結(jié)點(diǎn)垂直向下掃描,遍歷整個(gè)十字鏈表,中間遇到N2的值為0則向右掃描,直到最后一個(gè)不為0數(shù)據(jù)項(xiàng)。若掃描完生成的數(shù)據(jù)項(xiàng)鏈都在同一層上,則表明該項(xiàng)目列為候選集中一項(xiàng),項(xiàng)目頭中數(shù)值加1[6]。重復(fù)以上步驟直到每個(gè)項(xiàng)目頭都被掃描完,將每個(gè)項(xiàng)目頭中N3值與mins比較,小于mins的項(xiàng)目頭從候選集中刪除,得到的即為頻繁項(xiàng)目集Lk。
(5)若Lk為非空,重復(fù)(3)、(4)步,直至Ck為空。
(6)輸出頻繁項(xiàng)集Lk。
3.2 算法描述
輸入:事務(wù)數(shù)據(jù)庫D,最小支持度mins
輸出:頻繁項(xiàng)集Lk
(1)掃描數(shù)據(jù)庫,構(gòu)造十字鏈表
(2)L1=find_frequent_1-itemsets(L)
(3-5)for(k=1;Ck!=null;k++){
Ck=self_join(Lk)
For each Sx∈Ck{
For each Ix∈Ck{
If(N1<mins)N2=0;//橫向數(shù)據(jù)域置0
If(N3<mins)N2=0;//縱向數(shù)據(jù)域置0}}
Lk={Sx∈Ck|Sx.N2!=0∧Ix.N3>mins}}
(6)return Lk
3.3 改進(jìn)算法的應(yīng)用分析
改進(jìn)后的算法用于對太陽能銷售系統(tǒng)數(shù)據(jù)進(jìn)行挖掘,尋求其潛在的商品關(guān)聯(lián),為銷售商提供有效建議。太陽能銷售系統(tǒng)數(shù)據(jù)庫中包含多張表,本文僅使用其中三張表來進(jìn)行挖掘分析,分別是訂單表(訂單編號,購買商品編號,訂單日期,顧客編號),商品表(商品編號,商品名稱),顧客回購商品表(顧客編號,回購商品編號,備注)。其中對顧客回購商品表進(jìn)行挖掘主要目的是分析初購商品搭配的合理性,給出最優(yōu)組合。數(shù)據(jù)庫結(jié)構(gòu)圖如下:
圖3 太陽能銷售數(shù)據(jù)庫關(guān)系圖
后臺數(shù)據(jù)庫采用sql server2008,前臺實(shí)現(xiàn)頁面采用JSP,在實(shí)現(xiàn)過程中會用到Java的多個(gè)類,如Dbreader類完成讀數(shù)據(jù),Ruleparser類可以解析規(guī)則,完成編碼與名稱間轉(zhuǎn)換等。挖掘前先對數(shù)據(jù)進(jìn)行過濾,不合格的記錄全部從分析表中刪除,例如沒有銷售過的商品直接從sp表中刪除掉,提高分析準(zhǔn)確度。分析過程中截取一個(gè)時(shí)間段商品的銷售情況進(jìn)行挖掘,本實(shí)驗(yàn)中截取3個(gè)月內(nèi)銷售記錄,以天轉(zhuǎn)化為事務(wù)序號,以每天銷售的不同系列的太陽能數(shù)量以及配件為事務(wù)項(xiàng)進(jìn)行挖掘。
經(jīng)過過濾后的數(shù)據(jù)就可以運(yùn)行程序進(jìn)行挖掘分析,下圖即為使用JSP完成的數(shù)據(jù)挖掘初始界面:
圖4 系統(tǒng)數(shù)據(jù)挖掘初始界面
運(yùn)行程序預(yù)測時(shí),設(shè)置最小支持度mins=10%,最小置信度minc=60%。運(yùn)行之后產(chǎn)生的關(guān)聯(lián)規(guī)則如圖所示:
圖5 關(guān)聯(lián)規(guī)則輸出圖
把改進(jìn)后算法應(yīng)用到系統(tǒng)數(shù)據(jù)庫的挖掘中,輸出如圖5結(jié)果,可以看出最終輸出的關(guān)聯(lián)規(guī)則中基本都大于設(shè)定的最小支持度和置信度,但有些數(shù)據(jù)偏低,例如17、18條事務(wù)的支持度偏小,說明顧客購買商品搭配不合適,應(yīng)該根據(jù)顧客反饋表中數(shù)據(jù)再進(jìn)行校對為后期營銷策略制定提供可靠依據(jù)。同時(shí)對那些支持度和置信度較高的事務(wù),例如12、19、20條事務(wù)的分析,不僅可以在進(jìn)貨,商品擺設(shè)和搭配促銷上增加力度,而且給出了人工無法發(fā)現(xiàn)的信息,例如第20條規(guī)則顯示購買經(jīng)濟(jì)型、小容量的太陽能時(shí)并不是配件也搭配經(jīng)濟(jì)型的,而是搭配高檔配件的多些。從輸出的規(guī)則中仔細(xì)查看,即可得出一個(gè)可行的后期銷售指南,為商家配貨銷售提供可靠保障。
本文是把挖掘技術(shù)實(shí)際應(yīng)用到商品銷售過程中,把采用十字鏈表改進(jìn)的Apriori算法應(yīng)用到太陽能銷售系統(tǒng)中,比原有算法極大的縮短了運(yùn)行時(shí)間。由此也可以總結(jié)出顧客的消費(fèi)規(guī)律,預(yù)測新客戶的購買趨勢,公司可以根據(jù)上述分析結(jié)果來采購熱賣商品,安排熱賣商品的擺放位置增加銷售額。同時(shí)與老客戶保持聯(lián)系隨時(shí)更新分析結(jié)果調(diào)整商品銷售策略。
[1]JiaweiHan.數(shù)據(jù)挖掘概念與技術(shù)[M].范明,譯.北京:機(jī)械工業(yè)出版社,2007.
[2]汪珊珊,王兵,楊旭光,程宗毛.產(chǎn)品銷售預(yù)測的數(shù)學(xué)模型及應(yīng)用[J].中國外資,2012,(12):263-264.
[3]徐輝增.關(guān)聯(lián)規(guī)則數(shù)據(jù)挖掘方法的研究[J].科學(xué)技術(shù)與工程, 2012,(1):60-63.
[4]唐輝.關(guān)聯(lián)挖掘技術(shù)在商品銷售中的應(yīng)用研究[D].北京:北方工業(yè)大學(xué),2011.
[5]李磊,段隆振.一種基于十字鏈表的頻繁項(xiàng)集挖掘算法[J].江西科學(xué),2009,27(6).
[6]王海容.數(shù)據(jù)挖掘在學(xué)生成績分析的應(yīng)用[J].電子設(shè)計(jì)工程, 2013,21(4):4-56.
(責(zé)任編輯:方少卿)
TP311.13
A
1671-752X(2015)04-0043-03
2015-09-12
南楠(1981-),女,河南洛陽人,三門峽職業(yè)技術(shù)學(xué)院信息傳媒學(xué)院講師,碩士。
銅陵職業(yè)技術(shù)學(xué)院學(xué)報(bào)2015年4期