趙海建 向俊宇 楊迎鐳
摘? 要: 煙草零售環(huán)節(jié)積累了大量交易數(shù)據(jù),但其中隱藏的有價(jià)值的信息還未被有效挖掘。本文針對(duì)某省煙草零售戶卷煙進(jìn)銷存流水?dāng)?shù)據(jù)進(jìn)行數(shù)據(jù)挖掘研究。在原始數(shù)據(jù)清洗和預(yù)處理之后,對(duì)于零售戶分類中遇到的噪聲數(shù)據(jù),運(yùn)用K-means算法進(jìn)行聚類。對(duì)聚類中的噪聲干擾,提出了離群點(diǎn)消除方法,將離群點(diǎn)劃分到另外的Voronoi單元中,增強(qiáng)正常數(shù)據(jù)點(diǎn)的聚類有效性。該系統(tǒng)在營(yíng)銷實(shí)踐過程中得以應(yīng)用,證明了方法的有效性。
關(guān)鍵詞: 零售數(shù)據(jù); 數(shù)據(jù)挖掘; K-means; 離群點(diǎn)檢測(cè); Voronoi單元
中圖分類號(hào):TP391? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? ?文章編號(hào):1006-8228(2023)09-120-05
Research on retail data mining and clustering noise elimination method
Zhao Haijian, Xiang Junyu, Yang Yinglei
(Chongqing China Tobacco Industry Co., Ltd., Chongqing 400060, China)
Abstract: A large amount of transaction data has been collected in the tobacco retail segment, but the hidden valuable information has not been effectively mined. In this paper, a series of data mining research is carried out for the transaction data of tobacco retailers in a province. After the original data cleaning and preprocessing, the K-means algorithm is applied to cluster the noisy data encountered in the classification of retailers. For the noise interference in clustering, an outlier elimination method is proposed to divide the outliers into other Voronoi units to enhance the clustering effectiveness of normal data points. The system is applied in the process of marketing practice, which proves its effectiveness.
Key words: retail data; data mining; K-means; outlier detection; Voronoi Unit
0 引言
煙草零售是煙草銷售的重要組成部分,其零售網(wǎng)絡(luò)經(jīng)過多年建設(shè),已經(jīng)取得較大成效,大量交易數(shù)據(jù)被記錄下來。但這些數(shù)據(jù)處于分散割裂狀態(tài),往往不能有效傳遞到供應(yīng)鏈上其他環(huán)節(jié),由于數(shù)據(jù)的零散、異構(gòu)、數(shù)據(jù)缺失、噪聲多等原因,也難以開展有針對(duì)性的分析挖掘,成為煙草供應(yīng)鏈決策的薄弱環(huán)節(jié)。
反觀我國(guó)電商平臺(tái)之所以能成功,不僅僅因?yàn)槠鋵⒔灰椎膱?chǎng)所從線下轉(zhuǎn)到了線上,更在于其借助互聯(lián)網(wǎng)巨大的優(yōu)勢(shì),融合大數(shù)據(jù)等技術(shù)實(shí)現(xiàn)“智慧零售”[1]。如果能合理運(yùn)用數(shù)據(jù)挖掘技術(shù),深入挖掘其中蘊(yùn)藏的潛在價(jià)值信息,將為企業(yè)貨源投放、市場(chǎng)調(diào)控、品牌營(yíng)銷、風(fēng)險(xiǎn)評(píng)估和預(yù)警等方面提供數(shù)據(jù)支持,為企業(yè)提供有針對(duì)性的決策意見或建議,有助于零售環(huán)節(jié)的創(chuàng)新發(fā)展。
1 研究現(xiàn)狀
1.1 煙草零售的發(fā)展現(xiàn)狀和創(chuàng)新思路
經(jīng)過多年的煙草零售網(wǎng)絡(luò)建設(shè),煙草零售環(huán)節(jié)已積累了大量的經(jīng)營(yíng)數(shù)據(jù),目前缺乏有效、合適的手段發(fā)揮其作用,其中潛在的商業(yè)價(jià)值未能充分挖掘,現(xiàn)有的一些研究,如:按照客戶價(jià)值進(jìn)行分類聚類,實(shí)現(xiàn)客戶細(xì)分,從而可以為不同類別的零售戶提供有針對(duì)性的個(gè)性化服務(wù)。閆磊等[2]從客戶價(jià)值評(píng)價(jià)指標(biāo)的維度對(duì)零售客戶進(jìn)行了聚類,將大量指標(biāo)按照分成貢獻(xiàn)度、影響度、支持度、成長(zhǎng)度和規(guī)范度幾類,從客戶當(dāng)前價(jià)值以及潛在價(jià)值的角度進(jìn)行量化分析和聚類。劉坤達(dá)等[3]突出了品牌特征,選用少量指標(biāo)進(jìn)行K-means聚類分析。張鍵等[4]基于客戶畫像構(gòu)建了一套監(jiān)管模型,有效提升了市場(chǎng)監(jiān)管成效。
1.2 K-means聚類方法的研究
K-means是常用的數(shù)據(jù)分析技術(shù),它簡(jiǎn)單直觀,速度較快,并可調(diào)整它的許多參數(shù)以適配實(shí)際問題。Moodleya等[5]為了更好地開展零售業(yè)務(wù)營(yíng)銷,提出了一種有針對(duì)性的促銷算法,利用模糊C-means聚類和Apriori關(guān)聯(lián)規(guī)則挖掘算法等,有效識(shí)別商品的最佳目標(biāo)客戶。劉瀟、王路遙、Hossain等也分別利用K-means方法對(duì)零售戶開展分類的特征提取[6-8]。
K-means算法有一個(gè)重要的缺陷,它無法處理數(shù)據(jù)中的噪音。許多技術(shù)如DBSCAN已經(jīng)被提出并被廣泛研究。然而,這些方法只是將K-means作為初始的一個(gè)步驟,而較少考慮如何進(jìn)行改進(jìn)以使其適應(yīng)噪聲數(shù)據(jù)集。其中,Chawla等[9]提出了一種改進(jìn)K-means方法,但要求將離群點(diǎn)的數(shù)量作為參數(shù)進(jìn)行設(shè)置。Gan等[10]提出了KMOR算法,它要求輸入兩個(gè)額外的參數(shù),其中一個(gè)是最大的離群值。ODC算法[11]將離群點(diǎn)和真實(shí)數(shù)據(jù)點(diǎn)之間的“差異”作為一個(gè)參數(shù),而Neo-K-means[12]則要求輸入兩個(gè)參數(shù)α和β,它們與數(shù)據(jù)點(diǎn)在聚類中的分配有關(guān),也就是離群點(diǎn)的數(shù)量。
2 K-means聚類離群點(diǎn)消除方法
本文提出了一種改進(jìn)的K-means聚類方法,將K-means方法擴(kuò)展到噪聲數(shù)據(jù)集,以去除聚類結(jié)果中的離群點(diǎn),而無需額外的參數(shù)。
2.1 K-means聚類方法
K-means聚類是一種劃分式的聚類算法,其原理簡(jiǎn)單,算法效率高。但是,由于無法預(yù)先確定聚類的數(shù)量即k值,使用上也存在一定的局限性。
進(jìn)行K-means聚類前需要進(jìn)行數(shù)據(jù)預(yù)處理的準(zhǔn)備工作,包括數(shù)據(jù)的準(zhǔn)備、清洗、特征構(gòu)建、特征標(biāo)準(zhǔn)化、確定k值等。最優(yōu)k值的確定常采用手肘法和輪廓系數(shù)法。以手肘法為例,它采用SSE(誤差平方和)作為評(píng)估聚類好壞的標(biāo)準(zhǔn),如公式⑴所示,其中Ci是第i個(gè)簇,mi是Ci的聚類中心:
[SSE=i=1kp∈Cip-mi2]? ⑴
SSE隨著k值的增大而減小,且剛開始會(huì)迅速下降,隨著k的增大,SSE下降的速度逐步減慢,從k-SSE的圖像上可以找到曲率較大一點(diǎn),對(duì)應(yīng)的k值可以作為最優(yōu)的k值。因圖像上這一點(diǎn)的形狀向手肘,故稱手肘法。
對(duì)標(biāo)準(zhǔn)化后的數(shù)據(jù)集應(yīng)用K-means算法,持續(xù)將樣本劃分到k個(gè)樣本集合(即簇)中,直到聚類中心的變化小于一定的閾值或達(dá)到設(shè)定的迭代次數(shù),最終得到k個(gè)簇,每個(gè)簇包含一定的樣本量,簇的中心也就是樣本集合的特征均值,反映了這個(gè)簇的整體特征。
2.2 離群點(diǎn)消除
上述過程得到了k個(gè)聚類簇,但在簇中各數(shù)據(jù)點(diǎn)與聚類中心的距離相差較大,某些點(diǎn)與兩個(gè)乃至多個(gè)聚類中心距離接近,只是因?yàn)槲⑿〉牟罹喽鴦澣肫渲心硞€(gè)簇,這樣的點(diǎn)顯然更應(yīng)作為離群點(diǎn)被分離出去。本文提出一種方法,從上一節(jié)的聚類結(jié)果開始,探索離群點(diǎn)所在的區(qū)域。
由于聚類中心是由所有簇中數(shù)據(jù)點(diǎn)取平均得來的,因此,數(shù)據(jù)點(diǎn)越近中心,它被正確分類的可能性越大;反之,數(shù)據(jù)點(diǎn)與中心相距越遠(yuǎn),它被錯(cuò)誤分類或成為離群點(diǎn)的可能性就越大。為此,對(duì)離群點(diǎn)的搜索應(yīng)該從離聚類中心最遠(yuǎn)的位置開始。K-means聚類簇將空間剖分為Voronoi單元,相鄰Voronoi單元之間是超平面。如圖1所示,在超平面的交匯處,可以找到離聚類中心最遠(yuǎn)的點(diǎn),該點(diǎn)可記為m。
在一個(gè)[d]維的數(shù)據(jù)空間中,[d+1]個(gè)Voronoi單元能夠確定這樣一個(gè)交點(diǎn)[m],它是數(shù)據(jù)空間中的一個(gè)點(diǎn),滿足[vj-m=r,j∈1,2,…,d+1]。其中[vj]是Voronoi單元的中心,即K-means方法發(fā)現(xiàn)的聚類中心,[r]是m與Voronoi單元中心的距離。如果其中一個(gè)Voronoi單元中心與[m]的距離不等于[r],[m]將被分配到距離最小的Voronoi單元。
當(dāng)找到這些交點(diǎn)時(shí),假設(shè)這些交點(diǎn)的區(qū)域應(yīng)被視為包含離群點(diǎn)。我們保留聚類的形態(tài),在交點(diǎn)處新建一個(gè)Voronoi單元,但該單元中的所有數(shù)據(jù)點(diǎn)都被視為離群點(diǎn)(見圖1(b))。在原有的聚類簇之外,創(chuàng)建這樣的離群Voronoi單元有時(shí)可能是錯(cuò)誤的,因?yàn)檫@樣的離群Voronoi單元可能也把一些正常的數(shù)據(jù)點(diǎn)包含進(jìn)來。為此,必須設(shè)置一個(gè)標(biāo)準(zhǔn)來決定是否需要?jiǎng)?chuàng)建這樣的離群Voronoi單元。本文使用了最小描述長(zhǎng)度(MDL)策略,它假設(shè)聚類的編碼成本取決于聚類的好壞,而編碼成本與聚類編碼所需的內(nèi)存直接相關(guān)。應(yīng)用該準(zhǔn)則,可推算新建的Voronoi單元是否保留,然后開始下一次迭代。在圖1(b)中,找到了新的Voronoi單元交點(diǎn),可以采取與之前相同的步驟。在此之前會(huì)更新聚類中心。這一過程迭代進(jìn)行,直到找不到其他交點(diǎn)用于改善聚類。
2.2.1 尋找Voronoi單元交點(diǎn)
有幾種方法可以用于搜尋Voronoi單元的交點(diǎn)。最直觀的方法是用幾何計(jì)算法找到m。但如果在d維數(shù)據(jù)空間中有k個(gè)K-means中心,在不知道這些中心的相鄰關(guān)系的情況下,需要遍歷所有組合以找到Voronoi單元的組合,這種方法效率較低。
本文使用Avis-Fukuda算法,它專門用于尋找Voronoi交點(diǎn)。Avis-Fukuda算法將每個(gè)Voronoi單元的中心作為輸入,并計(jì)算這些Voronoi單元的交點(diǎn),即從一個(gè)Voronoi單元的中心和約束它的其他中心開始,形成一個(gè)圍繞中心的凸多面體,該凸多面體的角就是要找的交點(diǎn)。它用線性優(yōu)化方法計(jì)算出最近的頂點(diǎn),然后沿著凸多面體的邊找到其他頂點(diǎn)。通過這種方式,可以找到凸多面體的所有角點(diǎn),即所有Voronoi交點(diǎn)。
2.2.2 MDL準(zhǔn)則
找到Voronoi單元的所有交點(diǎn)后,下一步要決定是否新建Voronoi離群?jiǎn)卧?。MDL假設(shè),較低的編碼成本意味著更好的聚類。因此,如果新的Voronoi噪聲單元降低了總的編碼成本,算法就會(huì)保留新的Voronoi噪聲單元。編碼成本由兩部分組成。模型[LM]的編碼成本和數(shù)據(jù)[LD|M]的編碼成本。因此,總的編碼成本可通過公式⑵計(jì)算:
[LM,D=LM+L(D|M)]
[=i=1Kj=1Cilog2NCi+i=1Kpi2log2(Ci)-i=1Kx∈Cilog2(pdf(x))] ⑵
其中,[K]是聚類[Ci]的數(shù)量;[N]是數(shù)據(jù)點(diǎn)[x]的數(shù)量;[pi]是參數(shù)的數(shù)量。
編碼成本推導(dǎo)如下:只要知道聚類的大小,便可以計(jì)算模型編碼成本[LM],它跟數(shù)據(jù)點(diǎn)的分布有關(guān)。一般K-means假設(shè)基于正態(tài)分布,該分布在所有方向上的方差都一樣。因此,基于這一假設(shè),數(shù)據(jù)點(diǎn)與中心的距離就足以確定其概率。聚類的正態(tài)分布取決于兩個(gè)參數(shù),即均值和聚類方差。聚類均值就是聚類中心,基于聚類可計(jì)算方差。假設(shè)[x]是正態(tài)群中的一個(gè)隨機(jī)點(diǎn),聚類在每個(gè)維度都是[N0,α]的正態(tài)分布,即方差為[α]的正態(tài)分布,因此找到[α]就是方差。計(jì)算[x]到中心的距離[distx,0=i=1dαXi2],其中[Xi]服從[N0,α]分布,因此[αXi]也是[N0,α]分布的,從而更新[distx,0]的計(jì)算方法,如公式⑶:
[distx,0=i=1d(αXi)2]
[=α2i=1d(Xi)2=αi=1dXi2] ⑶
[Y=i=1dXi2]被稱為卡方分布,把它標(biāo)為[pdfx]。不同的是,這里有系數(shù)[α]。如果[i=1dXi2~pdfx],則[αi=1dXi2~1αpdfxα],由此得到了概率分布。利用方差公式,可得概率密度函數(shù),如公式⑷:
[pdfx=xd-1e-xd2α2xd2-1αdΓ(d2)] ⑷
其中,[Γ]是標(biāo)準(zhǔn)的伽馬函數(shù)。
至于應(yīng)該用哪種[pdf]來模擬噪聲,一般采用均勻分布的噪聲,但它可能會(huì)被異常值扭曲。為了降低異常值的影響,本方法假設(shè)噪聲也服從正態(tài)分布。噪聲分布的參數(shù)計(jì)算同前,即平均值是所有數(shù)據(jù)點(diǎn)的平均值,噪聲的方差是所有數(shù)據(jù)點(diǎn)的方差。
3 數(shù)據(jù)分析與數(shù)據(jù)挖掘的設(shè)計(jì)與實(shí)現(xiàn)
煙草零售環(huán)節(jié)海量原始數(shù)據(jù)存在不完整、含噪音、不一致等問題,需要通過數(shù)據(jù)清洗、轉(zhuǎn)換、歸納等手段進(jìn)行預(yù)處理,從而解決數(shù)據(jù)的不規(guī)范問題。本文所使用的原始數(shù)據(jù)為2020年8月至2021年3月某省級(jí)煙草公司零售戶卷煙零售的進(jìn)銷存流水?dāng)?shù)據(jù),共計(jì)3357萬(wàn)余條。初步分析數(shù)據(jù),存在大量重復(fù)值、缺失值和少量異常值,以及不一致的情況。為此,對(duì)于重復(fù)記錄,經(jīng)過謹(jǐn)慎清洗,共刪除3.01%的數(shù)據(jù);對(duì)于占大量的結(jié)存、銷售價(jià)格缺失情形,基于前后數(shù)據(jù)進(jìn)行填補(bǔ);對(duì)于異常值,通過數(shù)據(jù)校驗(yàn),依次消除。
隨后作了多維聚合分析,以時(shí)間、產(chǎn)品、銷售三個(gè)維度來進(jìn)行:時(shí)間維度劃分為日、周、月;產(chǎn)品維度劃分為規(guī)格、品牌、制造企業(yè);銷售維度劃分為零售戶、縣、地市、省等。將經(jīng)過清洗后的流水?dāng)?shù)據(jù)作為事實(shí)表,構(gòu)建星型模型,開展了OLAP數(shù)據(jù)分析國(guó),主要的分析指標(biāo)包括基礎(chǔ)指標(biāo)(購(gòu)進(jìn)量、銷售量、售價(jià)等)、零售戶指標(biāo)(活躍客戶數(shù)、經(jīng)銷客戶數(shù)、凈增長(zhǎng)率等)、品牌銷售指標(biāo)(覆蓋率、鋪貨率等)等類別。
本文構(gòu)建了帶品牌特征的聚類模型,使用客戶與品牌連接的數(shù)據(jù)作為聚類樣本,有效擴(kuò)大了聚類特征值的多樣性,增大了樣本集合。選擇聚類特征時(shí),通過構(gòu)建五個(gè)二級(jí)特征指標(biāo),反映樣本的品牌傾向性、當(dāng)前價(jià)值、潛在價(jià)值三個(gè)方面。數(shù)據(jù)集首先按照月份進(jìn)行分組,分別對(duì)每月的數(shù)據(jù)進(jìn)行聚類分析。針對(duì)數(shù)據(jù)的量綱不同,因此通過Z-score標(biāo)準(zhǔn)化方法進(jìn)行標(biāo)準(zhǔn)化和無量綱化處理。然后采用手肘法確定聚類最優(yōu)k值,通過比較每個(gè)月的k-SSE圖像,并多次試驗(yàn),最終確定k取5。圖2以2月份為例展示k-SSE圖像。
經(jīng)過K-means算法多輪迭代后,得到了各月的聚類結(jié)果。各簇的聚類中心如表1所示。
使用雷達(dá)圖進(jìn)行繪制,如圖3所示,可以觀察到各個(gè)簇的特征。
為每個(gè)簇確定類別的過程,如果僅參考特征排名,則存在不穩(wěn)定性(如圖3 SHCZ指標(biāo)中G1為次高、G0為最差,但他們的值幾乎接近),因此還參考了指標(biāo)的相對(duì)大小的等級(jí)(簡(jiǎn)稱指標(biāo)等級(jí))。指標(biāo)等級(jí)指一組簇類的某一指標(biāo)經(jīng)min-max歸一化后的值所處的范圍等級(jí),0~0.2之間表示E,0.2~0.4之間表示D,以此類推。從而將簇的特征數(shù)據(jù)轉(zhuǎn)化為等級(jí)與排名的形式,以便賦予類別標(biāo)簽。從品牌傾向度、商戶當(dāng)前價(jià)值、商戶潛在價(jià)值三個(gè)角度,用H、X、L分別表示高、中、低,分別根據(jù)指標(biāo)等級(jí)、排名進(jìn)行評(píng)估、綜合與擬合后確定類別。各類的大致特征為:HHX(A類)、LHX(B類)、HLH(C類)、LLH(D類)、XLL(E類)。所刻畫的五類分別為:重點(diǎn)客戶的主銷品牌、重點(diǎn)客戶的非主銷品牌、成長(zhǎng)型客戶的主銷品牌、成長(zhǎng)型客戶的非主銷品牌、低價(jià)值和低潛力客戶。
該分類方法已在企業(yè)十余個(gè)基層銷售組織中進(jìn)行推廣應(yīng)用,在三個(gè)多月的試用過程中收集銷售人員的意見與反饋,并進(jìn)行統(tǒng)計(jì)分析。分析結(jié)果表明,本方法所分類的85%以上的產(chǎn)品符合銷售人員的原有判斷,并有所細(xì)化。其余分類有差異的主要涉及中等偏下的產(chǎn)品。按照本方法的分類開展相應(yīng)營(yíng)銷工作后,銷量有10%以上幅度增長(zhǎng),說明本方法將數(shù)據(jù)中的一些隱含信息挖掘了出來,并有效指導(dǎo)了營(yíng)銷工業(yè)的開展。
4 總結(jié)
本文針對(duì)省級(jí)煙草公司所轄零售戶卷煙的進(jìn)銷流水?dāng)?shù)據(jù)開展了一系列數(shù)據(jù)挖掘工作。在調(diào)研銷售分析相關(guān)方法的基礎(chǔ)上,選擇K-means聚類算法作為零售戶分類的基礎(chǔ)方法,在聚類成果之上進(jìn)行離群點(diǎn)消除。在此基礎(chǔ)上開展數(shù)據(jù)分析和數(shù)據(jù)挖掘,完成了數(shù)據(jù)清洗與預(yù)處理、多維分析處理和數(shù)據(jù)展示。本文所開發(fā)的系統(tǒng)已在該煙草公司應(yīng)用實(shí)施,取得了良好的應(yīng)用效果。
參考文獻(xiàn)(References):
[1] 李衛(wèi)華.大數(shù)據(jù)背景下傳統(tǒng)零售企業(yè)精準(zhǔn)營(yíng)銷探析[J].商業(yè)
經(jīng)濟(jì)研究,2019(15):71-74.
[2] 閆磊,劉旭,徐斌.基于客戶價(jià)值的卷煙零售客戶分類研究與
應(yīng)用[J].價(jià)值工程,2019,38(25):89-90.
[3] 劉坤達(dá),宋紅文,張衛(wèi)東,等.品牌優(yōu)先的零售客戶細(xì)分研究[J].
現(xiàn)代商貿(mào)工業(yè),2021,42(32):45-46.
[4] 張健,魏生強(qiáng),張瀛.精準(zhǔn)畫像提高煙草專賣監(jiān)管效能——
基于粗糙集的大數(shù)據(jù)分類監(jiān)管體系研究[J].海峽科學(xué),2021(8):69-73.
[5] Raymond Moodleya, Francisco Chiclanacb, Fabio Caraf-
finia, et al. A product-centric data mining algorithm for targeted promotions[J]. Journal of Retailing and Consumer Services,2020,54(5):1-13.
[6] 劉瀟,王效俐.基于K-means和鄰域粗糙集的航空客戶價(jià)值
分類研究[J].運(yùn)籌與管理,2021,30(3):104-111.
[7] 王路遙,高山,李俊,等.基于K-means聚類與空間相關(guān)性的
零售戶銷售行為分析[J].測(cè)繪通報(bào),2019(9):51-54.
[8] Hossain, M. Z., Akhtar, M. N., Ahmad, R. B., et al. A
dynamic K-means clustering for data mining[J]. Indonesian Journal of Electrical Engineering and Computer Science,2019,13(2):521-526.
[9] Sanjay Chawla, Aristides Gionis. K-means--: a unified
approach to clustering and outlier detection[C].Proceedings of the 2013 SIAM International Conference on Data Mining,2013:190-197.
[10] Guojun Gan, Michael Kwok-Po Ng.K-means clustering
with outlier removal[J]. Pattern Recognition Letters,2017,90(4):8-14.
[11] Mohiuddin Ahmed, Abdun Naser Mahmood. A novel
approach for outlier detection and clustering improvement[A]. 2013 IEEE 8th Conference on Industrial Electronics and Applications (ICIEA)[C]. Melbourne, VIC, Australia:IEEE,2013:577-582.
[12] Joyce Jiyoung Whang, Yangyang Hou, David F. Gleich,
etc. Non-exhaustive, Overlapping Clustering[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence,2019,41(11):2644-2659.