《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > 改進(jìn)的k-means算法在客戶細(xì)分中的應(yīng)用研究

改進(jìn)的k-means算法在客戶細(xì)分中的應(yīng)用研究

2009-08-05
作者:易 珺1,,路 璐2,,曹 東

??? 摘? 要: 針對(duì)k-means算法在處理大數(shù)據(jù)集時(shí)間開(kāi)銷較大的弊端,提出一種改進(jìn)的k-means算法,。在計(jì)算和比較樣本點(diǎn)間的距離時(shí),,借用三角形中兩邊之和大于第三邊的定律進(jìn)行改進(jìn),,提高了算法的執(zhí)行效率。
??? 關(guān)鍵詞: k-means? 客戶關(guān)系管理? 客戶細(xì)分

?

??? 在當(dāng)今信息技術(shù)時(shí)代,,客戶關(guān)系管理CRM(Customer Relationship Management)的應(yīng)用得到快速發(fā)展,,客戶細(xì)分在CRM中擔(dān)當(dāng)越來(lái)越重要的角色[1]
??? 在大眾營(yíng)銷時(shí)代,,企業(yè)對(duì)客戶的劃分比較簡(jiǎn)單,,如分為大中型企業(yè)、小型企業(yè),、個(gè)人用戶等,。隨著精準(zhǔn)化營(yíng)銷、一對(duì)一銷售時(shí)代的來(lái)臨,,客戶細(xì)分的方法就需要多樣化,,營(yíng)銷活動(dòng)要求對(duì)客戶進(jìn)行更為細(xì)致的分層。在建立和完善以客戶為中心的營(yíng)銷體系的同時(shí),,最為重要且最為緊迫的就是對(duì)客戶細(xì)分,,以便對(duì)不同價(jià)值的客戶實(shí)行差別服務(wù)[2]
??? 在客戶細(xì)分中采用的主要技術(shù)是數(shù)據(jù)挖掘中的分類和聚類技術(shù),。面對(duì)越來(lái)越龐大的客戶數(shù)據(jù),,利用傳統(tǒng)的k-means算法進(jìn)行細(xì)分時(shí),存在著處理大數(shù)據(jù)集時(shí)間開(kāi)銷較大的不足,。本文進(jìn)行分析后提出對(duì)k-means算法的改進(jìn),,實(shí)現(xiàn)了客戶快速,、準(zhǔn)確的細(xì)分方法。
1? 客戶細(xì)分模型
??? 客戶數(shù)據(jù)庫(kù)中一般采用三個(gè)主要要素作為客戶價(jià)值分析的重要指標(biāo):最近一次消費(fèi)R(Recency),、消費(fèi)頻率F(Frequency)和消費(fèi)金額M(Monetary)[3],。
??? 最近一次消費(fèi)R指客戶最近一次購(gòu)買產(chǎn)品或服務(wù)離現(xiàn)在有多長(zhǎng)時(shí)間。理論上,,距離上一次消費(fèi)時(shí)間越近的客戶應(yīng)該是比較忠誠(chéng)的,;最近才購(gòu)買商品或服務(wù)的消費(fèi)者,是最有可能再次購(gòu)買的客戶,。吸引一個(gè)幾個(gè)月前才光顧的客戶,比吸引一個(gè)一年多以前來(lái)過(guò)的客戶要容易得多,。
??? 消費(fèi)頻率F是客戶在特定期間內(nèi)購(gòu)買的次數(shù),。一般認(rèn)為,最常購(gòu)買的客戶也是滿意度最高的客戶,。增加客戶購(gòu)買的次數(shù)意味著從競(jìng)爭(zhēng)對(duì)手處搶占了更多的市場(chǎng)占有率,。
??? 消費(fèi)金額M是客戶的所有消費(fèi)金額,是所有數(shù)據(jù)庫(kù)報(bào)告的支柱,。
??? 按照最近一次消費(fèi)R,、消費(fèi)頻率F、消費(fèi)金額M這三要素建立RFM模型,,是分析客戶價(jià)值最重要且最容易的方法,,能實(shí)現(xiàn)對(duì)客戶間差異的準(zhǔn)確理解。
2? k-means算法及改進(jìn)
2.1 k-means算法基本思想

??? k-means是數(shù)據(jù)挖掘技術(shù)中的一種基于劃分的聚類算法,,因其理論上可靠,、算法簡(jiǎn)單、收斂速度快而被廣泛使用[4],。
??? k-means算法的目標(biāo)是根據(jù)輸入?yún)?shù)k,,將數(shù)據(jù)集劃分成k個(gè)簇。算法采用迭代更新方法:在每一輪中,,依據(jù)k個(gè)聚類中心將其周圍的點(diǎn)分別組成k個(gè)簇,,而每個(gè)簇的質(zhì)心(即簇中所有點(diǎn)的平均值,也是幾何中心)將被作為下一輪迭代的聚類中心,。迭代使得選取的聚類中心越來(lái)越接近真實(shí)的簇質(zhì)心,,所以聚類效果越來(lái)越好。聚類過(guò)程如圖1所示,。

?


??? 設(shè)將d維數(shù)據(jù)集X={xi|xi∈Rd,,i=1,2,,……,,n}聚集成k個(gè)簇w1,,w2,……,,wk,,它們的質(zhì)心依次為c1,c2,,……ck,,其中ni是簇wi中數(shù)據(jù)點(diǎn)的個(gè)數(shù)。采用誤差平方和準(zhǔn)則函數(shù)作為目標(biāo)函數(shù)來(lái)顯式地判斷算法是否結(jié)束,,如公式(1),。利用誤差平方和準(zhǔn)則函數(shù)能把真正屬于同一類的樣本聚合成一個(gè)類型的子集,而把不同類的樣本分開(kāi)[5],。
???
??? 當(dāng)準(zhǔn)則函數(shù)Jc收斂后,,算法結(jié)束。k-means算法步驟描述如下(稱為k-means_1):
??? (1)給定大小為n的數(shù)據(jù)集X,,令I(lǐng)=1,,選取k個(gè)初始聚類中心cj(I),j=1,,2,,3,……,,k,。
??? (2)以cj(I)為參照點(diǎn)對(duì)X進(jìn)行劃分,計(jì)算每個(gè)樣本數(shù)據(jù)對(duì)象與聚類中心的距離,。若d(xi,,ck(I))=min{d(xi,cj(I)),,i=1,,2,……n},,其中j=1,,2,……,,k,,i=1,2,,……n,,則將xi劃分到簇wk
??? (3)令I(lǐng)=I+1,,計(jì)算新的聚類中心和誤差平方和準(zhǔn)則函數(shù)的值
??? (4)若|Jc(I+1)c(I)|<ξ成立,,則算法結(jié)束,。否則,令I(lǐng)=I+1,,返回(2)執(zhí)行,。
2.2 改進(jìn)的k-means算法
??? 在上述k-means算法中,一次迭代內(nèi)把每一個(gè)數(shù)據(jù)對(duì)象分到離它最近的聚類中心所在類,,這個(gè)過(guò)程的時(shí)間復(fù)雜度為O(nkd),。n指的是總的數(shù)據(jù)對(duì)象的個(gè)數(shù),k是指定的聚類數(shù),,d是數(shù)據(jù)對(duì)象的維數(shù),。新的分類產(chǎn)生以后需要計(jì)算新的聚類中心,這個(gè)過(guò)程的時(shí)間復(fù)雜度為O(nd),。因此,,這個(gè)算法一次迭代需要的總時(shí)間復(fù)雜度為O(nkd)。如果數(shù)據(jù)量比較大,,算法的時(shí)間開(kāi)銷也是相當(dāng)可觀的[6]
??? 針對(duì)處理大數(shù)據(jù)量時(shí)開(kāi)支大的不足,,本文提出了一種借用三角形三邊不等定律的思想,,即三角形兩邊之和大于第三邊的定律,減少每次迭代的計(jì)算次數(shù)的改進(jìn)k-means算法,。
??? 在k-means算法的第一個(gè)循環(huán)階段,,每次迭代中要計(jì)算每一個(gè)樣本數(shù)據(jù)到各個(gè)聚類中心的距離,依次比較得到與之距離最小的一個(gè)類中心,,并被分配到這個(gè)類中,。如果能找到一個(gè)方法,避免一些不必要的比較和距離計(jì)算,,就能節(jié)省運(yùn)行的時(shí)間開(kāi)支,。在k-means算法中采用的是歐幾里德距離,因此可以考慮借用幾何三角形中三邊關(guān)系定理:兩邊之和大于第三邊,,從而簡(jiǎn)化計(jì)算比較過(guò)程,。
??? 令xi∈X,d(ck,,cj)為二個(gè)聚類中心的距離,,d(ck,cj),、d(xi,,ck)與d(xi,cj)三邊構(gòu)成了一個(gè)如圖2所示的三角形,。
??? 則有d(ck,,cj)≤d(xi,,ck)+d(xi,cj)
??? 即:d(ck,,cj)-d(xi,,ck)≤d(xi,cj)
??? 如果d(ck,,cj)≥2d(xi,,ck),則有:d(xi,,ck)≤d(xi,,cj),即xi到中心cj的距離比到ck的距離大,。因此在d(ck,,cj)≥2d(xi,ck)的前提下,,就不必計(jì)算d(xi,,cj)了。k-means算法的演變?nèi)缦滤?稱為k-means_2):
??? (1)給定大小為n的數(shù)據(jù)集X,,令I(lǐng)=1,,選取k個(gè)初始聚類中心cj(I),j=1,,2,,3,……,,k,。
??? (2)計(jì)算每?jī)蓚€(gè)聚類中心間的距離d(ci(I),cj(I)),其中i=1,,2,,……,k,,j=1,,2,……,,k,。
??? (3)設(shè)xi當(dāng)前所在類為wm,計(jì)算xi與wm類中心的距離d(xi,,cm(I)),,若d(cm(I),cj(I))≥2d((xi,cm(I))不成立,,則計(jì)算d(xi,,cj(I)),;若d(xi,cj(I))<d(xi,cm(I)),,則暫時(shí)將xi分配到wj,,返回(3)循環(huán)運(yùn)行,最終將xi劃分到簇wm中,。其中j=1,,2,……,,k,,i=1,2,,……n,,m=1,2,,……n,。
??? (4)令I(lǐng)=I+1,計(jì)算新的聚類中心和誤差平方和準(zhǔn)則函數(shù)的值
??? (5)若|Jc(I+1)c(I)|<ξ成立,,則算法結(jié)束,。否則,令I(lǐng)=I+1,,返回(2)執(zhí)行。
??? 這里對(duì)算法k-means_1和k-means_2作一個(gè)比較,。在第二個(gè)循環(huán)階段重新計(jì)算聚類中心時(shí),,這二個(gè)算法的時(shí)間復(fù)雜度是相同的。但是在第一個(gè)循環(huán)階段指定聚類簇時(shí),,改進(jìn)的k-means_2算法顯然減少了計(jì)算量,。先考慮一個(gè)樣本點(diǎn)的情況。在k-means_1算法中,,計(jì)算樣本點(diǎn)到各中心點(diǎn)的距離的次數(shù)是k次,,而k-means_2算法中,在最好情況下計(jì)算樣本點(diǎn)到各中心點(diǎn)的距離的次數(shù)是1次,,最壞情況下計(jì)算樣本點(diǎn)到各中心點(diǎn)的距離的次數(shù)是k次,。假設(shè)α為第一循環(huán)階段一次迭代時(shí)一個(gè)樣本點(diǎn)的平均計(jì)算次數(shù),則有α3? 客戶細(xì)分的實(shí)現(xiàn)
??? 如上所述,本文采用改進(jìn)的k-means算法對(duì)某酒店的現(xiàn)有客戶群進(jìn)行細(xì)分,,建立了RFM模型,。根據(jù)酒店用戶的要求,分別把R,、F,、M三個(gè)要素劃分為3個(gè)等級(jí),結(jié)合這三個(gè)指標(biāo),,可以把客戶分成9個(gè)等級(jí),,也就是聚類成9個(gè)簇。
??? 實(shí)現(xiàn)聚類算法的主要數(shù)據(jù)結(jié)構(gòu)如下:
??? (1)記錄一個(gè)簇的信息
??? Public Structure clusterlist
??? ??Dim Mean As Double′簇均值
??? ??Dim ClusterNum As Integer′簇中記錄數(shù)
??? ??Dim CluserId As Integer′簇號(hào)
??? ??Dim SquareError As Double′簇中平方誤差和
??? End Structure
??? (2)記錄一個(gè)簇中所有記錄的關(guān)鍵字
??? Public Structure recordnum
??? ??Dim culsterid As Integer ′簇號(hào)
??? ??Dim recordid As ArrayList ′記錄關(guān)鍵字
??? End Structure
??? (3)記錄各個(gè)聚類中心間的距離
??? Dim mean_dist(,,)as double ′用二維數(shù)組記錄中心間的兩兩距離
??? 實(shí)現(xiàn)聚類算法的主要函數(shù)有:
??? (1)init_mean( ):設(shè)定初始聚類中心,。
??? (2)calc_mean_eucli( ):計(jì)算各中心間的歐幾里德距離。
??? (3)calc_sam_eucli( ):計(jì)算各個(gè)樣本點(diǎn)到中心歐幾里德距離,。
??? (4)calc_euclidean( ):計(jì)算二個(gè)點(diǎn)間的歐幾里德距離公式,。
??? (5)find_cluster( ):找到離樣本點(diǎn)最近距離的簇,并分配樣本點(diǎn)到該簇。
??? (6)calc_new_mean( ):一次劃分后計(jì)算新的聚類中心,。
??? (7)calc_Jc( ):計(jì)算誤差平方和準(zhǔn)則函數(shù),。
??? (8)kmeans( ):運(yùn)行k-means算法,若不滿足算法結(jié)束條件則遞歸調(diào)用,。
??? (9)show_cluster( ):展示一個(gè)簇內(nèi)的客戶數(shù)據(jù),。
??? 聚類算法實(shí)現(xiàn)界面如圖3所示,用戶首先要輸入允許的誤差準(zhǔn)則和聚類要生成的簇?cái)?shù),。

?


4? 結(jié)? 論
??? K-means是一種基于劃分的聚類算法,,有著廣泛的應(yīng)用,但其存在著處理大數(shù)據(jù)集的時(shí)間開(kāi)銷較大的不足,。本文對(duì)該算法進(jìn)行改進(jìn),,用以提高運(yùn)行效率??蛻艏?xì)分是信息時(shí)代企業(yè)自身發(fā)展的需要,,在當(dāng)今客戶數(shù)據(jù)量越來(lái)越大的情況下,利用該k-means算法,,可以對(duì)客戶數(shù)據(jù)進(jìn)行分析,,快速、有效地實(shí)現(xiàn)對(duì)客戶的細(xì)分,,為企業(yè)提供準(zhǔn)確的決策支持,,提高營(yíng)銷政策的針對(duì)性和有效性,提高企業(yè)的效益和競(jìng)爭(zhēng)力。該算法的改進(jìn)思想也可以為其他領(lǐng)域聚類分析提供參考,。
參考文獻(xiàn)
1?? 何榮勤.CRM原理.設(shè)計(jì).實(shí)踐.北京:電子工業(yè)出版社,,2003
2?? 謝寰紅.數(shù)據(jù)挖掘在證券公司CRM客戶細(xì)分中的應(yīng)用.計(jì)算機(jī)工程,2004,;(30)
3?? Bult J R,,Wansbeek T.Optimal selection for direct mail.Marketing Science,1997,;14(4)
4?? Han J W,,Kamber M.Data Mining:Concepts and Techniques.San Francisco:Morgan Kaufmann,2000
5?? 李金宗.模式識(shí)別導(dǎo)論.北京:高等教育出版社,,1994
6?? Moore A W.The anchors hierarchy:Using the triangle inequality to survive high dimensional data.In:Proc. UAI2000:The Sixteenth Conference on Uncertainty in Artificial Intelligence,,2000

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問(wèn)題,,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。