聚類分析(cluster analysis)是常見的數(shù)據(jù)挖掘手段,其主要假設(shè)是數(shù)據(jù)間存在相似性。而相似性是有價值的,因此可以被用于探索數(shù)據(jù)中的特性以產(chǎn)生價值。常見應(yīng)用包括:
用戶分割:將用戶劃分到不同的組別中,并根據(jù)簇的特性而推送不同的廣告欺詐檢測:發(fā)現(xiàn)正常與異常的用戶數(shù)據(jù),識別其中的欺詐行為
如上圖,數(shù)據(jù)可以被分到紅藍(lán)綠三個不同的簇(cluster)中,每個簇應(yīng)有其特有的性質(zhì)。顯然,聚類分析是一種無監(jiān)督學(xué)習(xí),是在缺乏標(biāo)簽的前提下的一種分類模型。當(dāng)我們對數(shù)據(jù)進(jìn)行聚類后并得到簇后,一般會單獨(dú)對每個簇進(jìn)行深入分析,從而得到更加細(xì)致的結(jié)果。
常見的聚類方法有不少,比如K均值(K-Means),譜聚類(Spectral Clustering),層次聚類(Hierarchical Clustering),大部分機(jī)器學(xué)習(xí)參考書上都有介紹,此處不再贅述。今天主要探討實(shí)際聚類分析時的一些技巧。
01 如何選擇適合的聚類算法
聚類算法的運(yùn)算開銷往往很高,所以最重要的選擇標(biāo)準(zhǔn)往往是數(shù)據(jù)量。
但數(shù)據(jù)量上升到一定程度時,如大于10萬條數(shù)據(jù),那么大部分聚類算法都不能使用。最近讀到的一篇對比不同算法性能隨數(shù)據(jù)量的變化[1]很有意思。在作者的數(shù)據(jù)集上,當(dāng)數(shù)據(jù)量超過一定程度時僅K均值和HDBSCAN可用。
我的經(jīng)驗(yàn)也是,當(dāng)數(shù)據(jù)量超過5萬條數(shù)據(jù)以后,K均值可能是比較實(shí)際的算法。但值得注意的是,K均值的效果往往不是非常好,我曾在如何正確使用「K均值聚類」?中對K均值進(jìn)行過總結(jié):
因此不難看出,K均值算法最大的優(yōu)點(diǎn)就是運(yùn)行速度快,能夠處理的數(shù)據(jù)量大,且易于理解。但缺點(diǎn)也很明顯,就是算法性能有限,在高維上可能不是最佳選項(xiàng)。
一個比較粗淺的結(jié)論是,在數(shù)據(jù)量不大時,可以優(yōu)先嘗試其他算法。當(dāng)數(shù)據(jù)量過大時,可以試試HDBSCAN。僅當(dāng)數(shù)據(jù)量巨大,且無法降維或者降低數(shù)量時,再嘗試使用K均值。
一個顯著的問題信號是,如果多次運(yùn)行K均值的結(jié)果都有很大差異,那么有很高的概率K均值不適合當(dāng)前數(shù)據(jù),要對結(jié)果謹(jǐn)慎的分析。
另一種替代方法是對原始數(shù)據(jù)進(jìn)行多次隨機(jī)采樣得到多個小樣本,并在小樣本上聚類,并融合結(jié)果。比如原始數(shù)據(jù)是100萬,那么從中隨機(jī)采樣出100個數(shù)據(jù)量等于1萬的樣本,并在100個小數(shù)據(jù)集上用更為復(fù)雜的算法進(jìn)行聚類,并最終融合結(jié)果。
此處需要注意幾點(diǎn)問題:
隨機(jī)采樣的樣本大小很重要,也不能過小。需要足夠有代表性,即小樣本依然可以代表總體的數(shù)據(jù)分布。如果最終需要劃分很多個簇,那么要非常小心,因?yàn)樾颖究赡軣o法體現(xiàn)體量很小的簇。
在融合過程中要關(guān)注樣本上的聚類結(jié)果是否穩(wěn)定,隨機(jī)性是否過大。要特別注意不同樣本上的簇標(biāo)號是否統(tǒng)一,如何證明不同樣本上的簇結(jié)果是一致的。
因此我的經(jīng)驗(yàn)是,當(dāng)數(shù)據(jù)量非常大時,可以優(yōu)先試試K均值聚類,得到初步的結(jié)果。如果效果不好,再通過隨機(jī)采樣的方法構(gòu)建更多小樣本,手動融合模型提升聚類結(jié)果,進(jìn)一步優(yōu)化模型。
02 聚類分析時需要使用什么變量?
這個是一個非常難回答的問題,而且充滿了迷惑性,不少人都做錯了。舉個簡單的例子,我們現(xiàn)在有很多客戶的商品購買信息,以及他們的個人信息,是否該用購買信息+個人信息來進(jìn)行聚類呢?
未必,我們需要首先回答最重要的一個問題:我們要解決什么問題?
如果我們用個人信息,如性別、年齡進(jìn)行聚類,那么結(jié)果會被這些變量所影響,而變成了對性別和年齡的聚類。所以我們應(yīng)該先問自己,“客戶購物習(xí)慣”更重要還是“客戶的個人信息”更重要?
如果我們最在意的是客戶怎么花錢,以及購物特征,那就應(yīng)該完全排除客戶的個人信息(如年齡性別家庭住址),僅使用購買相關(guān)的數(shù)據(jù)進(jìn)行聚類。這樣的聚類結(jié)果才是完全由購買情況所驅(qū)動的,而不會受到用戶個人信息的影響。
那該如何更好的利用客戶的個人信息呢?這個應(yīng)該被用在聚類之后。當(dāng)我們得到聚類結(jié)果后,可以對每個簇進(jìn)行分析,分析簇中用戶的個人情況,比如高凈值客戶的平均年齡、居住區(qū)域、開什么車。無關(guān)變量不應(yīng)該作為輸入,而應(yīng)該得到聚類結(jié)果后作為分析變量。
一般情況下,我們先要問自己,這個項(xiàng)目在意的是什么?很多時候個人信息被錯誤的使用在了聚類當(dāng)中,聚類結(jié)果完全由個人信息所決定(比如男性和女性被分到了兩個簇中),對于商業(yè)決策的意義就不大了。一般來說,應(yīng)該由商業(yè)數(shù)據(jù)驅(qū)動,得到聚類結(jié)果后再對每個簇中的用戶個人信息進(jìn)行整合分析。
但值得注意的是,這個方法不是絕對的。在聚類中有時候也會適當(dāng)引入個人信息,也可以通過調(diào)整不同變量的權(quán)重來調(diào)整每個變量的影響。
03 如何分析變量的重要性?
首先變量選擇是主觀的,完全依賴于建模者對于問題的理解,而且往往都是想到什么用什么。因?yàn)榫垲愂菬o監(jiān)督學(xué)習(xí),因此很難評估變量的重要性。介紹兩種思考方法:
考慮變量的內(nèi)在變化度與變量間的關(guān)聯(lián)性:一個變量本身方差很小,那么不易對聚類起到很大的影響。如果變量間的相關(guān)性很高,那么高相關(guān)性間的變量應(yīng)該被合并處理。直接采用算法來對變量重要性進(jìn)行排序:比如 Principal Feature Analysis [2],網(wǎng)上有現(xiàn)成的代碼 [3]。
另一個雞生蛋蛋生雞的問題是,如果我用算法找到了重要特征,那么僅用重要特征建??梢詥??這個依然不好說,我覺得最需要去除的是高相關(guān)性的變量,因?yàn)楹芏嗑垲愃惴o法識別高相關(guān)性,會重復(fù)計(jì)算高相關(guān)性特征,并夸大了其影響,比如K均值。
04 如何證明聚類的結(jié)果有意義?如何決定簇的數(shù)量?
聚類分析是無監(jiān)督學(xué)習(xí),因此沒有具體的標(biāo)準(zhǔn)來證明結(jié)果是對的或者錯的。一般的判斷方法無外乎三種:
人為驗(yàn)證聚類結(jié)果符合商業(yè)邏輯。比如我們對彩票客戶進(jìn)行聚類,最終得到4個簇,其中分為:
“高購買力忠實(shí)客戶”:花了很多錢的忠實(shí)客戶,他們可能常年購買且花費(fèi)不菲
“普通忠實(shí)客戶”:常年購買,但每次的購買額度都不大
“刺激性消費(fèi)單次購買者”:只購買了幾次,但是一擲千金
“謹(jǐn)慎的單次購買者”:只購買了幾次,每次買的都很謹(jǐn)慎
我們可以用通過商業(yè)邏輯來解釋聚類結(jié)果,結(jié)果應(yīng)該大致符合行業(yè)專家的看法。最終你的聚類結(jié)果需要回歸到現(xiàn)實(shí)的商業(yè)邏輯上去,這樣才有意義。
預(yù)先設(shè)定一些評估標(biāo)準(zhǔn),比如簇內(nèi)的緊湊度和簇間的疏離度,或者定義好的函數(shù)如Silhouette Coefficient。一般來說設(shè)定一個好的評估標(biāo)準(zhǔn)并不容易,所以不能死板的單純依賴評估函數(shù)。
通過可視化來證明不同簇之間的差異性。因?yàn)槲覀円话阌谐^兩個變量,所以會需要先對數(shù)據(jù)進(jìn)行壓縮,比如很多流形學(xué)習(xí)的方法多維縮放(multi-dimensional scaling)。
以下圖為例,我把數(shù)據(jù)分成了四個簇,并用T-SNE壓縮到二維并繪制出來。從直觀上看,不同簇間有了一定區(qū)別。類似的可視化也可以在變量間兩兩繪制,或者直接畫pairplot。
所以如何定義一個好的聚類結(jié)果?我認(rèn)為應(yīng)該符合幾個基本標(biāo)準(zhǔn):
符合商業(yè)常識,大致方向上可以被領(lǐng)域?qū)<宜?yàn)證可視化后有一定的區(qū)別,而并非完全隨機(jī)且交織在一起如果有預(yù)先設(shè)定的評估函數(shù),評估結(jié)果較為優(yōu)秀
因此決定簇的數(shù)量也應(yīng)該遵循這個邏輯,適當(dāng)?shù)臄?shù)量應(yīng)該滿足以上三點(diǎn)條件。如果某個簇的數(shù)量過大或者過小,那可以考慮分裂或者合并簇。
當(dāng)然,聚類作為無監(jiān)督學(xué)習(xí),有很多模棱兩可的地方。但應(yīng)時時牢記的是,機(jī)器學(xué)習(xí)模型應(yīng)服務(wù)商業(yè)決策,脫離問題空談模型是沒有意義的。
-
數(shù)據(jù)挖掘
+關(guān)注
關(guān)注
1文章
406瀏覽量
24189 -
聚類算法
+關(guān)注
關(guān)注
2文章
118瀏覽量
12113 -
聚類分析
+關(guān)注
關(guān)注
0文章
16瀏覽量
7403
原文標(biāo)題:【集客經(jīng)營】干貨:如何對用戶進(jìn)行「聚類分析」?
文章出處:【微信號:xiacoinfo,微信公眾號:資治通信】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論