李偉 秦鵬 胡廣勤 張毓福
(六盤水師范學(xué)院數(shù)學(xué)與信息工程學(xué)院,貴州六盤水553001)
隨著信息和網(wǎng)絡(luò)技術(shù)的發(fā)展,人們已經(jīng)進(jìn)入了Web 2.0時代,導(dǎo)致數(shù)據(jù)量呈現(xiàn)爆炸式增長。在商業(yè)活動中企業(yè)營銷焦點已經(jīng)從以產(chǎn)品為中心轉(zhuǎn)變?yōu)橐钥蛻魹橹行?,客戶關(guān)系管理成為企業(yè)的核心問題??蛻絷P(guān)系管理的關(guān)鍵問題是客戶分類,客戶分類可以區(qū)分無價值客戶和高價值客戶。企業(yè)對待不同價值的客戶制定個性化服務(wù)方案,采取不同營銷策略,將有限的資源集中于高價值客戶,提高經(jīng)營效率。精確的客戶分類結(jié)果是企業(yè)優(yōu)化營銷資源分配的重要依據(jù),客戶分類變得越來越必要。
Hughes提出了RFM模型(Hughes A,1994),以客戶最近一次消費距現(xiàn)在的時間長度R、消費次數(shù)F、消費金額M三個變量來描述客戶的特征及對客戶進(jìn)行分類。國內(nèi)學(xué)者基于傳統(tǒng)RFM模型變量含義的質(zhì)疑,提出了修正的多指標(biāo)RFM模型(曾小青等,2013)。同時,傳統(tǒng)的客戶端服務(wù)器結(jié)構(gòu)處理商業(yè)大數(shù)據(jù),進(jìn)行客戶分類的效率很低。近兩年大數(shù)據(jù)技術(shù)在互聯(lián)網(wǎng)、金融、物流領(lǐng)域的發(fā)展迅速,體現(xiàn)出極高的社會價值(李國杰和程學(xué)旗,2012),大數(shù)據(jù)分析技術(shù)已經(jīng)成為數(shù)據(jù)挖掘領(lǐng)域重要趨勢。本研究基于大數(shù)據(jù)技術(shù),探討在Hadoop平臺上使用Hive和R分析處理商業(yè)數(shù)據(jù),進(jìn)行客戶分類。
Hadoop是Apache基金會旗下的一個開源分布式計算平臺,為用戶提供了系統(tǒng)底層細(xì)節(jié)透明的分布式基礎(chǔ)架構(gòu)。Hadoop的核心是分布式文件系統(tǒng)HDFS和并行計算框架MapReduce(J.Cohen,2009)。HDFS是一個高度容錯性的系統(tǒng)(Chuck Lam,2010),提供高吞吐量的數(shù)據(jù)訪問,適合大規(guī)模數(shù)據(jù)集上的應(yīng)用,實現(xiàn)了以流的形式訪問文件系統(tǒng)中的數(shù)據(jù)。HDFS以其高可靠性和高擴展性,尤其適合部署在商業(yè)計算機組成的集群上。
Hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,可以查詢和分析存儲在Hadoop中的大規(guī)模數(shù)據(jù)。Hive定義了類SQL查詢語言(HQL),通過HQL語句可以快速實現(xiàn)MapReduce統(tǒng)計,十分適合數(shù)據(jù)倉庫的統(tǒng)計分析。
R是一個開源的數(shù)據(jù)分析軟件(Luis Torgo,2010),被科學(xué)家和數(shù)據(jù)分析師用于數(shù)據(jù)分析、數(shù)據(jù)可視化和預(yù)測建模。它允許以完全的、交互的和面向?qū)ο蟮姆绞骄帉懩_本和函數(shù)。數(shù)據(jù)挖掘的結(jié)果可以使用R進(jìn)行高效的可視化展現(xiàn)。
Hadoop平臺存儲數(shù)據(jù),Hive分析統(tǒng)計數(shù)據(jù),R則對數(shù)據(jù)進(jìn)行聚類可視化。通過結(jié)合Hadoop、Hive和R來實現(xiàn)并行處理商業(yè)大數(shù)據(jù),進(jìn)行客戶分類。
隨著大數(shù)據(jù)時代的來臨和數(shù)據(jù)挖掘技術(shù)的發(fā)展,客戶的數(shù)據(jù)量日益增多,傳統(tǒng)的客戶分類方法分類的實際效果和效率并不理想。因此,研究基于Hadoop平臺,采用Hive對商業(yè)大數(shù)據(jù)進(jìn)行統(tǒng)計分析,并在R中使用K-Means算法提高客戶分類效果。
客戶分類是根據(jù)客戶的屬性特征將客戶劃分為不同群體的過程。客戶分類的目的是識別客戶價值,即通過商業(yè)大數(shù)據(jù)識別不同價值用戶。識別客戶價值應(yīng)用最廣泛的是RFM模型,該模型有三個指標(biāo):最近消費時間間隔(recency)、消費頻率(frequency)、消費金額(monetary)。
在企業(yè)擁有一個包含客戶詳細(xì)信息和消費記錄信息大數(shù)據(jù)集的前提下,通過刪除不適用的值與空值的方法來清洗數(shù)據(jù),并把處理好的數(shù)據(jù)存儲到HDFS中。在Hadoop平臺上使用Hive預(yù)處理數(shù)據(jù),從中抽取客戶ID、消費時間和消費金額三個字段。以客戶ID作為分類字段,將客戶的消費金額匯總得到客戶消費總金額;對客戶ID進(jìn)行計數(shù),得到客戶消費次數(shù);根據(jù)客戶最后一次消費時間,計算得到客戶消費間隔。由于客戶消費總金額與消費次數(shù)存在較重的共線性(Senthamarai,2007),因此通過使用消費平均金額代替消費總額來修正。
實驗以公司交易模擬數(shù)據(jù)作為研究對象,以其客戶的消費數(shù)據(jù)作為依據(jù),對客戶進(jìn)行分類,來識別客戶的價值??蛻舴诸愊到y(tǒng)架構(gòu)如圖1所示,其實現(xiàn)要經(jīng)過3個過程:數(shù)據(jù)預(yù)處理、數(shù)據(jù)統(tǒng)計分析和數(shù)據(jù)聚類可視化。
圖1 客戶分類系統(tǒng)架構(gòu)
在數(shù)據(jù)預(yù)處理開始之前要選取最近一段時間的商業(yè)交易數(shù)據(jù),只有最新的數(shù)據(jù)才有分析的價值。由于真實的商業(yè)交易數(shù)據(jù)是多樣高維的,在數(shù)據(jù)原始的高維空間中,包含有冗余信息和噪音信息,這就會造成誤差,降低分析結(jié)果的準(zhǔn)確率,因此還要對原始數(shù)據(jù)進(jìn)行降維。這里將采用PCA算法,通過線性投影將高維的數(shù)據(jù)映射到低維的空間中表示,使在投影的維度上數(shù)據(jù)的方差盡量大,在保留較多數(shù)據(jù)點特性的同時使用較少的數(shù)據(jù)維度?;赑CA算法將所有數(shù)據(jù)都投影到用戶ID、消費金額和消費時間這三個維度,從而實現(xiàn)異構(gòu)商業(yè)數(shù)據(jù)的同構(gòu)化。最后,將預(yù)處理后的最近一段時間的交易大數(shù)據(jù)集上傳到分布式文件系統(tǒng)HDFS中進(jìn)行存儲,其Shell命令為:./bin/hdfs dfs–put~/trade_log.csv/dataset。
Hive是基于Hadoop的數(shù)據(jù)倉庫,使用HQL編寫的查詢語句,會被Hive自動解析成MapReduce任務(wù)由Hadoop來執(zhí)行,因此要先啟動Hadoop再啟動Hive。在Hive中創(chuàng)建一個數(shù)據(jù)庫test,命令為:hive> create database db_test;hive> use db_test。在數(shù)據(jù)庫db_test中創(chuàng)建一個表trade_log,包含字段(user_id,trade_day,amount),命 令 為 :hive>create table db_test.trade_log (user_id INT,trade_dayDATE,amountFLOAT)COMMENT'Welcome to db_test!'ROW FORMAT DELIMITED FIELDSTERMINATED BY ' 'STORED AS TEXTFILE。再把HDFS中的數(shù)據(jù)加載到了數(shù)據(jù)倉庫的大表trade_log中,命令為:load data inpath'/dataset/trade_log.csv'overwrite into table trade_log,就可以對客戶消費信息進(jìn)行統(tǒng)計分析。
利用聚合函數(shù)count()查詢客戶消費次數(shù),命令為:hive> select user_id,count(*)from trade_log group by user_id。利用聚合函數(shù)avg()計算客戶每次消費平均金額,命令為:hive>select user_id,avg(amount)from trade_log group by user_id。利用聚合函數(shù)min()計算客戶最近消費時間間隔,命令為:hive> select user_id,min(datediff(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),trade_day))from trade_log group by user_id。通過Hive分析得到客戶分析的結(jié)果,最后將該結(jié)果利用R進(jìn)行聚類分析可視化。
R是用于統(tǒng)計分析和統(tǒng)計制圖的優(yōu)秀工具,可以與Hive等數(shù)據(jù)分析軟件結(jié)合起來使用,在R中使用K-Means聚類算法進(jìn)行客戶分析。其中K-Means算法公式為:
K-Means算法是基于距離的聚類算法,采用距離作為客戶相似性的評價指標(biāo),即兩個客戶的距離越近,其相似度越大。該算法首先隨機選取任意k個客戶作為初始聚類的中心,然后每次迭代對Hive分析后數(shù)據(jù)集中剩余的每個客戶進(jìn)行聚類,直到該算法收斂。
客戶分類的3個指標(biāo)通過R可視化的箱尾圖(肖楠,2014)如圖2、圖3和圖4所示,展示了客戶消費次數(shù)、客戶平均消費金額和客戶最近消費時間間隔的連續(xù)值的分布情況,并給出了三個變量統(tǒng)計信息,通過該圖明顯可得出變量中的異常值。
圖2 客戶消費次數(shù)指標(biāo)箱尾圖 圖3客戶平均消費金額指標(biāo)箱尾圖 圖4客戶最近消費時間間隔指標(biāo)箱尾圖
在數(shù)據(jù)預(yù)處理之后,數(shù)據(jù)會被使用K-Means算法在R中進(jìn)行客戶聚類。再在R終端執(zhí)行如下關(guān)鍵命令:
result$Species<-NULL;#對訓(xùn)練數(shù)據(jù)去掉分類標(biāo)記
kc<-kmeans(result,3);#分類模型訓(xùn)練
plot(result[c("消費次數(shù)","消費平均金額")],col=kc$cluster);#聚類結(jié)果可視化
points(kc$centers[,c("消費次數(shù)","消費平均金額")],col=1:3);#不同的顏色代表不同的聚類結(jié)果。
客戶消費次數(shù)和消費平均年齡的K-Means客戶分類結(jié)果可視化圖如圖5所示,實驗結(jié)果主要分為三類客戶。第一類客戶:客戶數(shù)量比較少,消費次數(shù)較多,平均消費金額較高,并且最近一段時間有過消費。第二類客戶:客戶數(shù)量較多,或者消費次數(shù)多,或者消費平均金額高,數(shù)量達(dá)到了客戶總量的一半。第三類客戶:消費次數(shù)少,并且消費平均金額低。第一類客戶是公司最有價值的客戶,公司應(yīng)該給其分配更多的資源。第二類客戶是公司最應(yīng)該發(fā)展的客戶,應(yīng)向其推薦針對性的產(chǎn)品,來促進(jìn)他們的消費。第三類客戶價值最低,公司應(yīng)減少對其資源的分配。
圖5 K-Means客戶分類結(jié)果可視化圖
本文研究了基于商業(yè)大數(shù)據(jù)的客戶分類,以解決傳統(tǒng)的客戶分類方式在處理商業(yè)大數(shù)據(jù)后變得低效的問題。提出了一種使用Hadoop作為商業(yè)大數(shù)據(jù)的存儲處理平臺,利用Hive提取有用信息,利用R可視化結(jié)果的解決方案,并且在實驗分析時選擇K-Means算法進(jìn)行聚類來提高客戶分類效果。同時也存在不足之處,實驗的數(shù)據(jù)為模擬數(shù)據(jù),在以后的研究中使用真實的數(shù)據(jù)來完善研究方法。
參考文獻(xiàn):
李國杰,程學(xué)旗.2012.大數(shù)據(jù)的研究現(xiàn)狀與科學(xué)思考[J].戰(zhàn)略與決策研究,27(6):647-656.
肖楠.2014.R數(shù)據(jù)可視化手冊[M].北京:人民郵電出版社.
曾小青,徐秦,張丹.2013.基于消費數(shù)據(jù)挖掘的多指標(biāo)客戶細(xì)分新方法[J].計算機應(yīng)用研究,(10):2944-2947.
Chuck Lam.2010.Hadoop in Action[M].Manning Publications.
J.Cohen.2009.Graph Twiddling in a MapReduce World[J].Computing in Science&Engineering,(6):63-69.
Hughes A.1994.Strategic database marketing:the masterplan for starting and managing a profitable,customer based marketing program[M].Irwin Professional,85-90.
Luis Torgo.2010.Data Mining with R[M].Chapman and Hall.
Senthamarai.2007.Automated Classification of Customer Emails via Association Rule Mining[J].Information Technology Journal,(3):81-86.