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