周繼成 蔡冠宇 高尚
摘? 要: 從客戶(hù)信息多維考慮,結(jié)合K-means算法原有思想,通過(guò)多維聚合來(lái)實(shí)現(xiàn)對(duì)大量客戶(hù)信息的分類(lèi)聚合,通過(guò)比較數(shù)據(jù)伸縮率及擴(kuò)展率來(lái)比較了Hadoop上的性能。
關(guān)鍵詞: 數(shù)據(jù)挖掘;K-means;BI;客戶(hù)信息;聚類(lèi)算法
中圖分類(lèi)號(hào): TP391.1 ???文獻(xiàn)標(biāo)識(shí)碼: A??? DOI:10.3969/j.issn.1003-6970.2020.07.012
本文著錄格式:周繼成,蔡冠宇,高尚. 基于K-means的多維聚類(lèi)算法在客戶(hù)信息中的應(yīng)用[J]. 軟件,2020,41(07):61-65
Application of Multidimensional Clustering Algorithm Based onK-means in Customer Information
ZHOU Ji-cheng1, CAI Guan-yu2, GAO Shang1*
(1. School of Computer Science and Engineering, Jiangsu University of Science and Technology, Zhenjiang 212003, China;2. Zhenjiang Dantu District Science and Technology Bureau, Zhenjiang 212003, China)
【Abstract】: From the customer information multi-dimensional considerations, combined with the original idea of K-means algorithm, through multidimensional aggregation to achieve a large number of customer information clas?sification, through the comparison of data expansion rate and expansion rate to compare the performance of Hadoop.
【Key words】: Data mining; K-means; BI; Customer information; Clustering algorithm
0? 引言
在數(shù)據(jù)越來(lái)越重要的時(shí)代,如何快速有效的利用現(xiàn)有的大量數(shù)據(jù),挖掘潛在的商業(yè)機(jī)會(huì),為立足先機(jī),成為企業(yè)規(guī)劃未來(lái)數(shù)據(jù)發(fā)展戰(zhàn)略的重中之重??蛻?hù)信息是企業(yè)最核心且最具有競(jìng)爭(zhēng)力的,往往最能理解客戶(hù)需求,針對(duì)客戶(hù)來(lái)發(fā)展產(chǎn)品,則在市場(chǎng)上就能夠占得先機(jī)[1-7]。而要做到產(chǎn)品追隨客戶(hù)需求,則需要對(duì)市場(chǎng)的客戶(hù)分布、客戶(hù)群類(lèi)做到很精確的判斷。在探討市場(chǎng)發(fā)展趨勢(shì)時(shí),需要對(duì)市場(chǎng)的客戶(hù)群體進(jìn)行分類(lèi)聚合,此時(shí)就需要數(shù)據(jù)挖掘的聚類(lèi)算法對(duì)海量的客戶(hù)歷史數(shù)據(jù)進(jìn)行處理。在商務(wù)智能中,聚類(lèi)分析算法可以對(duì)企業(yè)大量的客戶(hù)信息進(jìn)行分類(lèi),相同類(lèi)組中的客戶(hù)在屬性特征上就會(huì)有高度的相似性,這樣有利于針對(duì)不同類(lèi)群的客戶(hù)開(kāi)發(fā)
針對(duì)性的客戶(hù)產(chǎn)品。但是由于客戶(hù)屬性特征往往都是高達(dá)數(shù)十個(gè),同時(shí)數(shù)據(jù)量也是數(shù)據(jù)聚類(lèi)處理的一個(gè)難點(diǎn),現(xiàn)有的聚類(lèi)算法在處理多維及大批量數(shù)據(jù)時(shí),在準(zhǔn)確度及時(shí)間、空間復(fù)雜度上遇到了瓶頸[8-9]。針對(duì)這一問(wèn)題研究的思路是將并行處理技術(shù)及多維聚類(lèi)分析與現(xiàn)有的比較常用的聚類(lèi)分析算法K-means相結(jié)合,探究更加高效的聚類(lèi)分析方法,提高客戶(hù)信息分析的準(zhǔn)確度。
1? 客戶(hù)數(shù)據(jù)的預(yù)處理
這里以某地產(chǎn)行業(yè)客戶(hù)信息作為例子。該地產(chǎn)公司的客戶(hù)信息數(shù)據(jù)來(lái)源ERP系統(tǒng)和移動(dòng)端的APP系統(tǒng),細(xì)分為線索登記、來(lái)訪及跟進(jìn)信息、交易階段相關(guān)信息、入伙登記信息、APP會(huì)員推廣和推薦信息等。在這一階段需要將所有系統(tǒng)的有關(guān)客戶(hù)信息抽取到對(duì)應(yīng)的目標(biāo)表中,主要分為客戶(hù)身份信息和客戶(hù)事件。地產(chǎn)客戶(hù)信息結(jié)構(gòu)其執(zhí)行的過(guò)程如下圖1所示,設(shè)計(jì)的客戶(hù)數(shù)據(jù)結(jié)構(gòu)如表1。
2 ?基于Hadoop的多維聚類(lèi)算法K-means設(shè)計(jì)
針對(duì)客戶(hù)信息屬性多維的特點(diǎn),以及結(jié)合Hadoop的MapReduce算法的設(shè)計(jì),以常規(guī)的K-means算法為基礎(chǔ),對(duì)其進(jìn)行多維化的擴(kuò)展。常規(guī)的串行K-means算法包含以下幾個(gè)步驟[10-11]。
(1)從數(shù)據(jù)對(duì)象中有針對(duì)性的選擇k個(gè)客戶(hù)對(duì)象作為初始化聚類(lèi)中心。
(2)設(shè)定最小距離的初步臨界值,通過(guò)計(jì)算每個(gè)數(shù)據(jù)對(duì)象與聚類(lèi)中心的距離,進(jìn)行初步的分類(lèi)劃分。
(3)根據(jù)劃分后分聚類(lèi)中心,重新計(jì)算每個(gè)聚類(lèi)的均值,這個(gè)均值是可以重新按照第二步驟進(jìn)行變化的。
(4)計(jì)算每一次劃分后是否滿(mǎn)足函數(shù)收斂,如果滿(mǎn)足,則算法終止運(yùn)行,如果條件不滿(mǎn)足,則繼續(xù)2、3步驟。
從上述算法步驟可以看出,K-means算法的主要計(jì)算工作是根據(jù)設(shè)定的最小距離,計(jì)算每一個(gè)數(shù)據(jù)對(duì)象距離聚類(lèi)中心的距離,從來(lái)能夠?qū)?shù)據(jù)對(duì)象按照不同的簇類(lèi)進(jìn)行劃分。每一次迭代都是執(zhí)行在前一次劃分的基礎(chǔ)之上在初始化聚類(lèi)中心,從而能夠在每次迭代之后對(duì)數(shù)據(jù)對(duì)象更細(xì)一步的劃分。
常見(jiàn)的劃分方法有兩種,一種是k-均值;另一種是k-中心點(diǎn),后一種比前一種魯棒性更優(yōu),但是其復(fù)雜度相對(duì)更高,尤其是大批量的數(shù)據(jù)。所以從數(shù)據(jù)量大和客戶(hù)信息屬性較多的狀況,采用多維K-means聚類(lèi),并為每一個(gè)屬性聚類(lèi)加權(quán)重,權(quán)重按照客戶(hù)屬性的重要性賦值。k-means算法的迭代是通過(guò)Map函數(shù)及Reduce函數(shù)來(lái)實(shí)現(xiàn)的。
并行處理技術(shù)現(xiàn)在最常見(jiàn)的應(yīng)用是Hadoop架構(gòu)體系,其是一個(gè)成本比較低,開(kāi)發(fā)難度較小,并行處理大規(guī)模數(shù)據(jù)性能較好的云計(jì)算平臺(tái),特點(diǎn)是可靠性較高、成本相對(duì)較低、效率高等[12]。Hadoop平臺(tái)框架最核心的兩個(gè)部分:為大量的數(shù)據(jù)提供存儲(chǔ)的HDFS(分布式文件系統(tǒng));為大數(shù)據(jù)提供計(jì)算模型的MapReduce。Hadoop平臺(tái)最大的特點(diǎn)集群化體現(xiàn)在它的HDFS集群。集群中會(huì)有一個(gè)主節(jié)點(diǎn)(Namenode)作為集群管理中心,多個(gè)從節(jié)點(diǎn)作為數(shù)據(jù)節(jié)點(diǎn)。每個(gè)節(jié)點(diǎn)都可以是一臺(tái)普通的PC機(jī)。MapReduce是一種編程模型,用于大批量數(shù)據(jù)的并行計(jì)算。其主要思想有兩個(gè)部分,Map(映射)、Reduce(歸約)。Map端的主要作用如下。
(1)當(dāng)數(shù)據(jù)Input后,會(huì)根據(jù)分節(jié)點(diǎn)的個(gè)數(shù)來(lái)安排數(shù)據(jù)分片的大小,每一個(gè)數(shù)據(jù)分片對(duì)應(yīng)一個(gè)map,Map的輸出結(jié)果暫且放在內(nèi)存緩沖區(qū)中。這些數(shù)據(jù)會(huì)根據(jù)自定義的Map函數(shù)生成新的(key,value)鍵值對(duì)。不同類(lèi)型的類(lèi)鍵值對(duì)也是不同的。
(2)Shuffle是在Reduce端之前,用于確保輸入是Map已經(jīng)處理排好序的。
(3)Reduce端:會(huì)對(duì)從Map端傳送過(guò)來(lái)的鍵值對(duì)做遞歸歸約,輸入?yún)?shù)是(key,{list value}),通過(guò)自定義的Reduce函數(shù)處理后,生成新的(key,value)鍵值對(duì)。
Map函數(shù)默認(rèn)的鍵值對(duì)(Key,value)。為了便于計(jì)算,可以將客戶(hù)信息數(shù)據(jù)按照屬性導(dǎo)成文本形式。這里的key即當(dāng)前文本的數(shù)據(jù)相對(duì)于起始點(diǎn)的位移,value則是對(duì)應(yīng)的位移字符串。文本遍歷后,通過(guò)value值計(jì)算對(duì)象與各個(gè)中心點(diǎn)的距離,從而找到距離最短的中心簇類(lèi)。其設(shè)計(jì)的Map函數(shù)如下。
Map((key,value),(key,value))
{
初始時(shí)解析value值得到初始值firstvalue;
距離中心聚類(lèi)的最短距離定義為minvalue,初始化時(shí)為最大值;
Dex變量作為key;
K定義為初始聚類(lèi)中心的個(gè)數(shù);
For m=0 to k-1
Do{
Dis=firstvalue;定義每一個(gè)對(duì)象與第m個(gè)聚類(lèi)中心的距離;
If dis { minValue=dis; index=i; } } Key=index;每一次map函數(shù)執(zhí)行之后將index賦值給key; Value=dis;將dis作為value的值; 輸出(key,value) } Reduce函數(shù)的輸入來(lái)源Map之后的分類(lèi)合并,即(key,V);這里的key是合并后聚類(lèi)的下標(biāo),V是同一聚類(lèi)的對(duì)象值即Map函數(shù)得到的value;通過(guò)對(duì)同一聚類(lèi)的各個(gè)對(duì)象value值得相加除以同一聚類(lèi)的對(duì)象個(gè)數(shù),即為新的聚類(lèi)中心的值。偽代碼如下。 Reduce((key,V),(key,value)) { SUM[];初始化數(shù)組作為每一個(gè)聚類(lèi)對(duì)象坐標(biāo)的累加值。 NUM=0;初始化變量NUM,作為同聚類(lèi)的對(duì)象個(gè)數(shù); While(V.hasNext())//hasNext()用于判斷是否有下一個(gè)同聚類(lèi)對(duì)象; { V.next(num);從next()函數(shù)中解析同聚類(lèi)各位位移及對(duì)象個(gè)數(shù); NUM+=num; } 數(shù)組SUM[]的每一個(gè)值與NUM相除,得到各個(gè)聚簇中心新的坐標(biāo)值; 即key變?yōu)閗ey; Value的值即各個(gè)對(duì)象對(duì)應(yīng)的坐標(biāo)值; 返回(key,value) } 重復(fù)Map函數(shù)及Reduce,直到達(dá)到收斂條件。 3 ?Hadoop環(huán)境下對(duì)客戶(hù)信息的處理 3.1 ?Hadoop環(huán)境和數(shù)據(jù)來(lái)源介紹 本論文探究的是運(yùn)用K-means實(shí)現(xiàn)對(duì)地產(chǎn)客戶(hù)信息的聚類(lèi)分析,基于數(shù)據(jù)量及探究的主題,部署的Hadoop環(huán)境基于五臺(tái)PC機(jī),其中一臺(tái)為服務(wù)器虛機(jī),內(nèi)存為32G。其他四臺(tái)為PC機(jī)和筆記本,配置PC機(jī)為雙核8G內(nèi)存,筆記本為12G內(nèi)存。Hadoop是V2.7.0版本。機(jī)器是通過(guò)千兆以太網(wǎng)及交換機(jī)建立的局域網(wǎng)進(jìn)行連接互通。 數(shù)據(jù)來(lái)源于某地產(chǎn)客戶(hù),其需求是基于現(xiàn)有的客戶(hù)信息、來(lái)訪登記信息、客戶(hù)買(mǎi)房信息等挖掘客戶(hù)潛在的客戶(hù)需求,通過(guò)對(duì)客戶(hù)不同屬性之間的關(guān)系的分析,調(diào)整市場(chǎng)分布。 由于客戶(hù)信息屬性是多維的,所以在這里主要研究一些帶有決策性的屬性進(jìn)行研究。包括以下幾個(gè)屬性:性別、年齡、省份、城市、所屬行業(yè)、教育程度、婚姻狀況、購(gòu)房用途、工作區(qū)域、居住區(qū)域、收入水平、家庭狀況、職業(yè)、興趣愛(ài)好、需求面積、意向樓層、意向單價(jià)、線索來(lái)源(媒體廣告等)等。 3.2 ?評(píng)價(jià)指標(biāo) 指標(biāo)性能往往基于數(shù)據(jù)量及平臺(tái)性能發(fā)生變化的,所以在實(shí)驗(yàn)環(huán)境中通過(guò)控制數(shù)據(jù)量的變化及平臺(tái)來(lái)探討處理機(jī)制的性能,將擴(kuò)展率、加速比和數(shù)據(jù)伸縮率作為評(píng)價(jià)指標(biāo),同時(shí)潛在的客戶(hù)信息關(guān)聯(lián)也作為評(píng)價(jià)條件。 3.3 ?聚類(lèi)結(jié)果分析 3.3.1 ?K-means算法性能分析 從數(shù)據(jù)量級(jí)來(lái)看,千萬(wàn)級(jí)的數(shù)據(jù)量運(yùn)行時(shí)間比例要比百萬(wàn)級(jí)的數(shù)據(jù)在同等節(jié)點(diǎn)數(shù)的效率更高,對(duì)于Hadoop來(lái)說(shuō),節(jié)點(diǎn)數(shù)的變化導(dǎo)致的運(yùn)行時(shí)間及準(zhǔn)確率的變化更能體現(xiàn)其集群化并行運(yùn)算的優(yōu)勢(shì)。 圖2是K-means算法在Hadoop平臺(tái)并行運(yùn)算的加速比,從圖中可以看到,加速比隨著節(jié)點(diǎn)的增加是逐漸增大,Hadoop并行運(yùn)算提高了K-means聚類(lèi)分析的效率,但從圖中也可以看出,從2個(gè)節(jié)點(diǎn)到3個(gè)節(jié)點(diǎn)的時(shí)候加速比的增大比例是最大的,影響加速比提高的另一個(gè)原因是隨著節(jié)點(diǎn)的增多,節(jié)點(diǎn)之間的通訊開(kāi)銷(xiāo)也是逐漸增大。所以在部署Hadoop集群環(huán)境時(shí),節(jié)點(diǎn)之間的通訊方式和設(shè)備也是需要重點(diǎn)考慮的。同時(shí)在圖中可以看出百萬(wàn)級(jí)的數(shù)據(jù)量在同等Hadoop環(huán)境下,其加速比要比千萬(wàn)級(jí)數(shù)據(jù)量要低一些。 從圖3可以看出隨著Hadoop平臺(tái)節(jié)點(diǎn)數(shù)的增加,K-means算法的擴(kuò)展率逐漸的降低,這主要是由于Hadoop節(jié)點(diǎn)數(shù)的增加,導(dǎo)致節(jié)點(diǎn)之間的通訊代價(jià)增大。但是通過(guò)兩條折線比較,一條是五百萬(wàn)級(jí)別的數(shù)據(jù)量,另一條是一千萬(wàn)級(jí)別的數(shù)據(jù)量,隨著數(shù)據(jù)量的翻倍,擴(kuò)展率反而有一定得提高,所以在遇到數(shù)據(jù)量比較大的情況時(shí),Hadoop平臺(tái)在做聚類(lèi)分析時(shí)對(duì)算法的性能會(huì)有一定得提高。 3.3.2? 客戶(hù)信息挖掘分析 首先針對(duì)部分客戶(hù)數(shù)據(jù)的三個(gè)比較重要的屬性:性別、收入水平、購(gòu)房意愿做分析。其中收入水平有一般、中等、較高三個(gè)等級(jí);購(gòu)房意愿有較低、一般、強(qiáng)烈三個(gè)等級(jí)??梢钥闯龃笾驴梢苑譃槿?lèi),一類(lèi)是高收入的意愿強(qiáng)烈的男性人群;一類(lèi)是中等收入的購(gòu)房意愿一般的女性人群;還有一類(lèi)是收入較低購(gòu)房意愿較低的男性人群。 針對(duì)客戶(hù)信息分析結(jié)果進(jìn)行統(tǒng)計(jì),由于該地產(chǎn)公司的主要業(yè)務(wù)集中在江蘇蘇南及上海等地,所以統(tǒng)計(jì)的客戶(hù)信息也主要集中在這些地方。從圖4到圖10可以看出客戶(hù)主要幾個(gè)屬性所占的比例,結(jié)合表3可以看出地產(chǎn)客戶(hù)群的類(lèi)別受年齡及地域影響比較大,客戶(hù)群中又以25-40之間的男性居多,而且需求大多數(shù)是為了結(jié)婚使用。同時(shí)收入水平也是影響購(gòu)房意愿的重要一個(gè)屬性。其中中等收入水平的在南京無(wú)錫蘇州等二三線城市的購(gòu)房意愿更為強(qiáng)烈。所以針對(duì)地產(chǎn)市場(chǎng),可以增大住宅區(qū)的建設(shè),推廣人群以25到40歲的人群為主。 4 ?結(jié)論 通過(guò)對(duì)Hadoop平臺(tái)及K-means聚類(lèi)算法的研究,實(shí)現(xiàn)了在Hadoop平臺(tái)上使用K-means對(duì)地產(chǎn)客戶(hù)信息的聚類(lèi)分析,通過(guò)比較運(yùn)行時(shí)間、K-means算法的擴(kuò)展率以及Hadoop下K-means算法并行運(yùn)算的加速比,可以發(fā)現(xiàn)大批量數(shù)據(jù)(至少千萬(wàn)級(jí)的數(shù)據(jù))在多節(jié)點(diǎn)的集群Hadoop平臺(tái)中效率更高,準(zhǔn)確率也更好。同時(shí)K-means多維屬性聚類(lèi)算法更適合于屬性眾多的客戶(hù)信息數(shù)據(jù)的分析。 參考文獻(xiàn)
Gustavo E A, Batista P A, Monard M C. An Analysis of Four Missing Data Treatment Methods for Supervised Learning[J]. Applied Artificial Intelligence, 2003, 17(5/6): 519-533.
Mohameds, Abdelkriml, Alibh, et al. A segmentation method to handwritten word recognition[J]. Neural Network World, 2007, 17(3): 225-236.
Xiang S, Nie F, Zhang C S. Learing a Mahalanobis distance metric for data clustering a classification[J]. Pattern Recognition, 2008.
Yuan S T, Sun J. Ontology-based structured cosine similarity in document summarization: with applications to mobile audio-based knowledge management[J]. System, Man, and Cybernetics, Part B: Cybernetics, IEEE Transaction od, 2005, 35(5): 1028-1040.
Tuomo Korenius, Jorma Laurikkala, Martti Juhola. On principal component analysis, cosine and Euclidean measures in information retrieval. Information Sciences, No. 177, 2007, pp. 4893-4905.
Jun Ye. Cosine similarity measures for intuitionistic fuzzy sets and their applications. Mathematical and Computer Mo?d?eling, 2011, 53: 91-97.
Nikolova E, Jecheva V. Some similarity coefficients and app?lication of data mining techniques to the anomaly-bases IDS [J]. Telecommunication Systems, 2012, 50(2): 127-135.
Gan G., J. Wu, A convergence theorem for the fuzzy subspace clustering (FSC) algorithm, Pattern Recognition, 2008, 41(6): 1939-194.
牛新征, 佘堃. 面向大規(guī)模數(shù)據(jù)的快速并行聚類(lèi)劃分算法研究[J]. 計(jì)算機(jī)科學(xué), 2012, 39(1): 134-137, 151.DOI:10. 3969/j.issn.1002-137X.2012.01.030.
柳靜, 郭紅山. 云計(jì)算中K-means聚類(lèi)中心優(yōu)化求解方法[J]. 科技通報(bào), 2015, 31(10): 100-102.
江小平, 李成華, 向文, 等. K-means聚類(lèi)算法的MapReduce并行化實(shí)現(xiàn)[J]. 華中科技大學(xué)學(xué)報(bào)(自然科學(xué)版), 2011, 39(z1): 120-124.
曾令英. 云計(jì)算中MapReduce并行計(jì)算平臺(tái)的研究[D]. 哈爾濱工業(yè)大學(xué), 2013.