黃雪華
摘要:關(guān)聯(lián)規(guī)則挖掘是數(shù)據(jù)挖掘中最重要的挖掘理論之一,廣泛應(yīng)用于圖書推薦、產(chǎn)品銷售、欺詐發(fā)現(xiàn)、疾病醫(yī)治等實(shí)際業(yè)務(wù)中。該文通過介紹關(guān)聯(lián)規(guī)則的相關(guān)理論及算法,并應(yīng)用于產(chǎn)品數(shù)據(jù)中,結(jié)合SQL server及ASP.NET,獲取產(chǎn)品銷售推薦列表。
關(guān)鍵詞:關(guān)聯(lián)規(guī)則分析;數(shù)據(jù)挖掘;產(chǎn)品銷售
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2017)25-0020-03
Abstract: Association rule is one of the most important mining theories. It is widely used in book recommendation, product sale, fraud discovery, disease treatment and other business. This paper introduces the related theories and algorithms of association rules, and applies them to product data, and combines SQLServer and ASP.NET to get the sales recommendation list.
Key words: association rule analysis; data mining; product sales
市場(chǎng)競(jìng)爭(zhēng)越來越激烈,客戶的要求越來越高,如何挖掘出潛在客戶和客戶潛在的消費(fèi)模式,激起客戶的消費(fèi)欲望并吸引他們實(shí)現(xiàn)消費(fèi),是商家時(shí)刻關(guān)注的重要課題及重大難題,也是關(guān)聯(lián)規(guī)則應(yīng)用的一個(gè)非常重要的研究領(lǐng)域。
如今信息量遞增,數(shù)據(jù)呈爆炸式增長(zhǎng),電子商務(wù)發(fā)展迅速也逐漸成熟,收集了海量的客戶信息及消費(fèi)數(shù)據(jù),數(shù)據(jù)與數(shù)據(jù)之間存在各種不能為人們很容易就能發(fā)現(xiàn)的隱性規(guī)律,如產(chǎn)品與產(chǎn)品的關(guān)聯(lián),用戶的潛在興趣,用戶的消費(fèi)模式。
數(shù)據(jù)挖掘中的關(guān)聯(lián)規(guī)則挖掘能從這些大量的銷售數(shù)據(jù)中發(fā)現(xiàn)隱藏的規(guī)律,并制定相應(yīng)的銷售策略如通過產(chǎn)品的擺放順序、打折銷售、捆綁銷售、推薦產(chǎn)品;從而達(dá)到刺激客戶的消費(fèi)欲望的目的,提高銷售量,增加銷售利潤(rùn)。著名的啤酒與尿片的例子就是從沃爾瑪超市銷售數(shù)據(jù)中發(fā)現(xiàn)的關(guān)聯(lián)規(guī)律。
本文將關(guān)聯(lián)規(guī)則理論應(yīng)用于產(chǎn)品數(shù)據(jù),從而發(fā)現(xiàn)隱藏的銷售規(guī)律。
1 關(guān)聯(lián)規(guī)則相關(guān)理論
關(guān)聯(lián)規(guī)則挖掘發(fā)現(xiàn)大量數(shù)據(jù)中項(xiàng)集之間有趣的關(guān)聯(lián)或相關(guān)聯(lián)系。交易數(shù)據(jù)庫(kù)中關(guān)聯(lián)規(guī)則的目的就是發(fā)現(xiàn)不同商品之間的聯(lián)系規(guī)則。其典型例子就是“購(gòu)物籃分析”。該過程通過發(fā)現(xiàn)顧客放入購(gòu)物籃中不同商品之間的聯(lián)系,分析顧客購(gòu)買習(xí)慣。通過了解哪些商品頻繁地被顧客同時(shí)購(gòu)買,可以幫助商家指定營(yíng)銷策略。如顧客經(jīng)常一起購(gòu)買的產(chǎn)品可以放在一起,也可以進(jìn)行捆綁銷售。如購(gòu)買了《數(shù)據(jù)庫(kù)》參考書的客戶很有可能會(huì)購(gòu)買程序設(shè)計(jì)語(yǔ)言、數(shù)據(jù)庫(kù)應(yīng)用程序開發(fā)、數(shù)據(jù)挖掘方面的書;這些書籍就可以擺放在一起來增進(jìn)銷售。
1.1 關(guān)聯(lián)規(guī)則定義
設(shè)I={I1,I2,…,IN}是項(xiàng)的集合,其中i的值(k=l,2,…,m)可以代表購(gòu)物籃中的物品。其中,項(xiàng)的個(gè)數(shù)為k,則稱該項(xiàng)集稱為k-項(xiàng)集[1]。
設(shè)D是任務(wù)相關(guān)的數(shù)據(jù)庫(kù)事務(wù)的集合,A是一個(gè)項(xiàng)集,B是一個(gè)項(xiàng)集,A [?]I,B[?]I,且A[?]B=[φ]關(guān)聯(lián)規(guī)則A=>B表示當(dāng)項(xiàng)集A出現(xiàn)時(shí),B也可能會(huì)出現(xiàn)。
1.2 關(guān)聯(lián)規(guī)則相關(guān)概念
關(guān)聯(lián)規(guī)則分析涉及幾個(gè)概念:
一般來說,滿足一定支持度和置信度的關(guān)聯(lián)規(guī)則,才是用戶感興趣的。設(shè)定最小支持度min_s,當(dāng)項(xiàng)集的支持度大于min_s時(shí)就是頻繁項(xiàng)集。設(shè)定最小置信度min_c,當(dāng)頻繁項(xiàng)集生成的關(guān)聯(lián)規(guī)則的置信度大于min_c時(shí),就是強(qiáng)關(guān)聯(lián)規(guī)則,一般,強(qiáng)關(guān)聯(lián)規(guī)則才是用戶感興趣的規(guī)則。
1.3 關(guān)聯(lián)規(guī)則算法
Apriori算法[1]是關(guān)聯(lián)規(guī)則中最重要的算法。根據(jù)任何頻繁項(xiàng)集的子集仍然是頻繁項(xiàng)集,而任何非頻繁項(xiàng)集的超集都是非頻繁的,因此,Apriori算法首先找到頻繁K-1項(xiàng)集,再由頻繁K-1集連接找到頻繁K項(xiàng)集;即首先找出所有的一項(xiàng)集C1,后確定所有的頻繁一項(xiàng)集I1;再由I1連接形成候選二項(xiàng)集,類似生成頻繁三項(xiàng)集及K項(xiàng)集等。
給定事務(wù)數(shù)據(jù)庫(kù),如表1所示。假定最小支持度計(jì)數(shù)為2。
(7) 由I3產(chǎn)生C4,由于{I1,I2,I4}及{I2,I3,I4}都不是頻繁集,所以I4=[φ] ,找出了所有的頻繁項(xiàng)集,算法終止??梢缘玫疆a(chǎn)品I1,I2,I3經(jīng)常會(huì)被一起購(gòu)買;用戶經(jīng)常會(huì)同時(shí)購(gòu)買產(chǎn)品I1,I3,I4。這些經(jīng)常一起購(gòu)買的產(chǎn)品可以擺放在一起,或者采取其他的相應(yīng)的刺激銷售的策略。
2 關(guān)聯(lián)規(guī)則應(yīng)用
2.1 產(chǎn)品銷售數(shù)據(jù)說明
客戶購(gòu)買的歷史信息中,總共有128種產(chǎn)品,銷售訂單數(shù)據(jù)共21255條,銷售詳單數(shù)據(jù)共52761條,給出部分事務(wù)數(shù)據(jù)如圖1及圖2所示,圖1給出了銷售訂單數(shù)據(jù),給出了每個(gè)銷售單號(hào)及顧客編號(hào)等信息;圖2銷售詳單數(shù)據(jù)給出了每個(gè)銷售單號(hào)所包含的賣出的產(chǎn)品等數(shù)據(jù)信息。
2.2 算法運(yùn)用
(1) SSAS建模
本文采用SQL Server Analysis Service建立挖掘模型,采用關(guān)聯(lián)規(guī)則算法對(duì)數(shù)據(jù)進(jìn)行挖掘分析,所得結(jié)果如圖3所示??梢垣@得每種產(chǎn)品的支持度,以及產(chǎn)品之間的關(guān)系,完成產(chǎn)品的推薦。銷售訂單數(shù)據(jù)包含銷售的訂單編號(hào),顧客編號(hào)等信息;而銷售的詳單數(shù)據(jù)則包含每個(gè)訂單購(gòu)買的所有產(chǎn)品信息。在此數(shù)據(jù)上建立v Assoc Seq Orders挖掘模型,采用關(guān)聯(lián)規(guī)則算法對(duì)產(chǎn)品model這一列進(jìn)行預(yù)測(cè),哪些產(chǎn)品經(jīng)常被一起購(gòu)買??梢垣@取每一種產(chǎn)品的支持度,每一種產(chǎn)品關(guān)聯(lián)最緊密的幾種產(chǎn)品,以及產(chǎn)品之間關(guān)聯(lián)的規(guī)則。endprint
(2) DMX挖掘
開發(fā)客戶端應(yīng)用程序顯示挖掘結(jié)果,通過ADOMD.NET數(shù)據(jù)訪問對(duì)象訪問數(shù)據(jù)挖掘結(jié)構(gòu)。通過DMX[2]表達(dá)式對(duì)挖掘結(jié)果進(jìn)行查詢,輸出到客戶端應(yīng)用程序中。在本應(yīng)用中進(jìn)行挖掘并預(yù)測(cè)購(gòu)買了Mountain-100產(chǎn)品的客戶,更可能購(gòu)買哪四種產(chǎn)品。其DMX語(yǔ)句如下所示:
SELECT FLATTENED PredictAssociation([v Assoc Seq Orders].[v Assoc Seq Line Items],INCLUDE_STATISTICS,4) FROM [v Assoc Seq Orders] NATURAL PREDICTION JOIN (SELECT(SELECT 'Mountain-100' AS[Model]) AS[v Assoc Seq Line Items]) AS t;
建立挖掘結(jié)構(gòu)v Assoc Seq Orders,并獲取推薦的四種產(chǎn)品列表及每種產(chǎn)品同時(shí)被購(gòu)買的概率。除了推薦Mountain-100的相關(guān)產(chǎn)品,還可以為任何其他產(chǎn)品進(jìn)行推薦。DMX語(yǔ)句修改如下:
SELECT FLATTENED PredictAssociation([v Assoc Seq Orders].[v Assoc Seq Line Items],INCLUDE_STATISTICS,4) FROM [v Assoc Seq Orders] NATURAL PREDICTION JOIN (SELECT(SELECT '"+product+"' AS[Model]) AS[v Assoc Seq Line Items]) AS t
(3) ASP.NET顯示
ADOMD.NET[3] 是對(duì)ADO.NET在多維數(shù)據(jù)集上的擴(kuò)展,用于面向Aalysis Services數(shù)據(jù)庫(kù)的訪問,在C#中嵌套DMX語(yǔ)句實(shí)現(xiàn)對(duì)預(yù)測(cè)結(jié)果的訪問與可視化顯示,其主要代碼如下所示,C#語(yǔ)言與分析服務(wù)數(shù)據(jù)源建立連接并打開連接,執(zhí)行DMX語(yǔ)句,最后讀出并顯示出挖掘結(jié)果。
2.3 算法運(yùn)行結(jié)果
預(yù)測(cè)的結(jié)果如圖4所示,向購(gòu)買了Mountain-100產(chǎn)品的客戶推薦了四種產(chǎn)品,排在第一位的Sport-100產(chǎn)品的支持度為6171,概率約為0.29,即約有29%的可能性購(gòu)買此產(chǎn)品;排在第二位的產(chǎn)品是Water Bottle,其支持度為4076,具有19.1%的可能性購(gòu)買該產(chǎn)品。類似的還為客戶推薦了產(chǎn)品Patch kit及Mountain Tire Tube。當(dāng)然,客戶還可以在下拉框中選擇其他產(chǎn)品的名稱,并為其他產(chǎn)品進(jìn)行推薦。
3 總結(jié)
本文介紹了關(guān)聯(lián)規(guī)則的相關(guān)理論,包括定義,概念及算法,用SQL Server2014為產(chǎn)品銷售數(shù)據(jù)建立挖掘模型進(jìn)行挖掘分析,采用DMX語(yǔ)句獲取挖掘結(jié)果為顧客推薦可能購(gòu)買的產(chǎn)品從而刺激消費(fèi),通過在C#語(yǔ)言中采用ADOMD.NET對(duì)挖掘結(jié)果進(jìn)行訪問,最終把推薦結(jié)果顯示在網(wǎng)頁(yè)中。
參考文獻(xiàn):
[1] 韓家煒,Micheline Kamber, Tang,Jian Pei.數(shù)據(jù)挖掘概念與技術(shù)[M].北京:機(jī)械工業(yè)出版社,2012:157-164.
[2] Jamie MacLennan,ZhaoHui Tang,Bogdan Crivat.數(shù)據(jù)挖掘原理與應(yīng)用(第2版)[M].北京:清華大學(xué)出版社,2010:278-298.
[3] 黃興榮,李昌領(lǐng). 基于SQL Server 2005的數(shù)據(jù)挖掘的研究[J]. 計(jì)算機(jī)與現(xiàn)代化,2010,177:195-198.
[4] http://www.cnblogs.com/aspnetx/archive/2013/02/25/2931603.html.endprint