如何用聚類模型(k-means)做數(shù)據(jù)分析?
編輯導(dǎo)語(yǔ):由于數(shù)據(jù)對(duì)于各行各業(yè)的人來(lái)說(shuō)是越來(lái)越重要的存在,于是近年來(lái)關(guān)于數(shù)據(jù)分析的方法也是越來(lái)越多。在本篇文章中,作者為我們介紹了聚類模型,看看應(yīng)該如何用聚類模型(k-means)來(lái)做數(shù)據(jù)分析吧。
在日常工作中,很多時(shí)候都會(huì)用到數(shù)據(jù)分析的方法,聚類模型模型看起來(lái)非常簡(jiǎn)單,但實(shí)際上它的十分重要;本文作者分享了關(guān)于如何用聚類模型做數(shù)據(jù)分析的方法,我們一起來(lái)學(xué)習(xí)一下。
k-means屬于無(wú)監(jiān)督學(xué)習(xí)算法,無(wú)監(jiān)督算法的內(nèi)涵是觀察無(wú)標(biāo)簽數(shù)據(jù)集自動(dòng)發(fā)現(xiàn)隱藏結(jié)構(gòu)和層次,在無(wú)標(biāo)簽數(shù)據(jù)中尋找隱藏規(guī)律。
聚類模型在數(shù)據(jù)分析當(dāng)中的應(yīng)用:既可以作為一個(gè)單獨(dú)過(guò)程,用于尋找數(shù)據(jù)內(nèi)在規(guī)律,也可以作為分類等其他分析任務(wù)的前置探索。
例如:我們想探尋我們產(chǎn)品站內(nèi)都有哪些社交行為群體,剛開(kāi)始拍腦門想可能并不會(huì)很容易。
這時(shí)候可以根據(jù)用戶屬性、行為對(duì)用戶進(jìn)行聚類,根據(jù)結(jié)果將每個(gè)簇定義為一類社交群體,基于這些類訓(xùn)練后續(xù)的分類模型,給用戶打標(biāo)簽后進(jìn)行個(gè)性化推薦、運(yùn)營(yíng)。
一、k-means算法與距離
K-means聚類的目標(biāo),是將n個(gè)觀測(cè)數(shù)據(jù)點(diǎn)按照一定標(biāo)準(zhǔn)劃分到k個(gè)聚類中,數(shù)據(jù)點(diǎn)根據(jù)相似度劃分。每一個(gè)聚類有一個(gè)質(zhì)心,質(zhì)心是對(duì)聚類中所有點(diǎn)的位置求平均值得到的點(diǎn),每個(gè)觀測(cè)點(diǎn)屬于距離它最近的質(zhì)心所代表的聚類。
模型最終會(huì)選擇n個(gè)觀測(cè)點(diǎn)到所屬聚類質(zhì)心距離平方和(損失函數(shù))最小的聚類方式作為模型輸出,K-means聚類分析中,特征變量需要是數(shù)值變量,以便于計(jì)算距離。
我們使用距離來(lái)測(cè)量?jī)蓚€(gè)樣本的相似性,距離的實(shí)質(zhì)是他將兩個(gè)具有多維特征數(shù)據(jù)的樣本的比較映射成一個(gè)數(shù)字,可以通過(guò)這個(gè)數(shù)字的大小來(lái)衡量距離。
幾個(gè)常見(jiàn)距離計(jì)算方法:
- 歐幾里得距離-直線距離,不適合高維度數(shù)據(jù),對(duì)某一維度大數(shù)值差異更加敏感;
- 曼哈頓距離-也叫出租車距離,用來(lái)標(biāo)明兩個(gè)點(diǎn)在標(biāo)準(zhǔn)坐標(biāo)系上的絕對(duì)軸距總和,只計(jì)算水平或垂直距離,對(duì)某一維度大數(shù)值差異不敏感;
- Hamming距離-可用來(lái)測(cè)量含有分類值的向量之間的距離;
- 余弦距離-通過(guò)計(jì)算兩個(gè)向量的夾角余弦值來(lái)評(píng)估相似度,適用于結(jié)果與數(shù)據(jù)中特征的取值大小無(wú)關(guān),而與不同特征之間比值有關(guān)的案例。
k-means的實(shí)質(zhì)是每次都把質(zhì)心移動(dòng)到群內(nèi)所有點(diǎn)的‘means’上,不是建立在距離這個(gè)基礎(chǔ)上,而是建立在最小化方差和的基礎(chǔ)上,方差恰好是歐幾里得距離平方,如果采用其他距離但依然去最小化方差和,會(huì)導(dǎo)致整個(gè)算法無(wú)法收斂,所以k-means使用歐幾里得方法。
二、k-means算法原理
第一步:數(shù)據(jù)歸一化、離群點(diǎn)處理后,隨機(jī)選擇k個(gè)聚類質(zhì)心,k的選擇下一節(jié)詳細(xì)講;第二步:所有數(shù)據(jù)點(diǎn)關(guān)聯(lián)劃分到離自己最近的質(zhì)心,并以此為基礎(chǔ)劃分聚類;第三步:將質(zhì)點(diǎn)移動(dòng)到當(dāng)前劃分聚類包含所有數(shù)據(jù)點(diǎn)的中心(means);
重復(fù)第二步、第三步n次,直到所有點(diǎn)到其所屬聚類質(zhì)心的距離平方和最小。
多次隨機(jī):選擇聚幾類,則開(kāi)始隨機(jī)選擇幾個(gè)聚類質(zhì)心,基于不同隨機(jī)初始質(zhì)心(第一步的質(zhì)心)的嘗試:
- 嘗試1:第一步→第二步→第三步 … (重復(fù)二、三步~10次)→聚類方式1
- 嘗試2:第一步→第二步→第三步 … (重復(fù)二、三步~10次)→聚類方式2
- …
在所有嘗試結(jié)果中,選擇所有點(diǎn)到其所屬聚類質(zhì)心的距離平方和(方差和)最小的聚類方式。
三、k值選擇方法
K值的選擇是k-means算法很重要的一步,K值選擇方法有肘部法則、拍腦袋法、gap statistic法、輪廓系數(shù)等,本篇主要介紹肘部法則及gap statistic兩種常用方法。
1. 肘部法則
我們可以嘗試不同的K值,并將不同K值所對(duì)應(yīng)的損失函數(shù)畫成折線,橫軸為K的取值,縱軸為距離平方和定義的損失函數(shù),距離平方和隨著K的變大而減小。
當(dāng)K=5時(shí),存在一個(gè)拐點(diǎn),像人的肘部一樣,當(dāng)k<5時(shí),曲線極速下降,當(dāng)K>5時(shí),曲線趨于平穩(wěn),拐點(diǎn)即為K的最佳取值。
2. 間隔統(tǒng)計(jì)量(gap statistic)
手肘法則是強(qiáng)依賴經(jīng)驗(yàn)的方法,而gap statistic方法則不強(qiáng)依賴經(jīng)驗(yàn),只需要找到最大gap statistic 所對(duì)應(yīng)的K即可,我們繼續(xù)使用上面的損失函數(shù),當(dāng)分為K組時(shí),對(duì)應(yīng)的損失函數(shù)為Dk,則gap statistic定義為:
這里的E(logDk)是logDk的期望,通過(guò)蒙特卡洛模擬產(chǎn)生,我們?cè)跇颖舅诘膮^(qū)域內(nèi)按照均勻分布隨機(jī)產(chǎn)生和原始樣本數(shù)一樣多的隨機(jī)樣本,并對(duì)這些隨機(jī)樣本做k-means,得到對(duì)應(yīng)的損失函數(shù)Dk,重復(fù)多次即可得出E(logDk)的近似值,從而最終可以計(jì)算gap statistic。
而gap statistic取得最大值所對(duì)應(yīng)的K就是最佳的分組數(shù)。如下圖所示,K=3時(shí),Gap(K)的取值最大,所以3為K的最佳取值。
四、k-means數(shù)據(jù)分析實(shí)戰(zhàn)案例
案例背景:O2O平臺(tái)為了更好地為線下店面服務(wù),增加一個(gè)增值服務(wù),即利用自己擁有的地理位置數(shù)據(jù)為線下店面選址,數(shù)據(jù)如下:
每一條數(shù)據(jù)是一個(gè)興趣點(diǎn)(POI – Point of Interest)的特征,具體指的是以這個(gè)位置為中心的500米半徑圓里,各類商家/設(shè)施的數(shù)量,數(shù)據(jù)中我們隱藏掉了每個(gè)POI的具體名稱、坐標(biāo)、類型。
選址的商家將試圖從這些位置中,選擇一個(gè)作為下一個(gè)店面的位置。
商家想知道這40個(gè)潛在店面位置之間是否有顯著的差異。我們可以將所有POI按照相似程度,劃分成幾個(gè)類別?
步驟:
- 數(shù)據(jù)準(zhǔn)備:數(shù)據(jù)獲取、數(shù)據(jù)清洗、數(shù)據(jù)變換等步驟,重點(diǎn)是針對(duì)分析目的,進(jìn)行特征選擇以及特征標(biāo)準(zhǔn)化;
- 數(shù)據(jù)建模:使用k-means算法進(jìn)行數(shù)據(jù)建模;
- 后續(xù)分析:聚類模型的特征描述分析,基于業(yè)務(wù)問(wèn)題,進(jìn)一步分析。
1. 讀取數(shù)據(jù)
2. 特征選取
3. 標(biāo)準(zhǔn)化
4. k值選擇
5. 模型建立
6. 聚類分析,對(duì)每一聚類進(jìn)行進(jìn)一步分析和描述
根據(jù)描述分析,生成poi聚類結(jié)果畫像,利用聚類,對(duì)人群/商品/行為標(biāo)簽進(jìn)行精細(xì)劃分,作為進(jìn)一步商業(yè)決策的基礎(chǔ)。
k-means是面試??妓惴?,其算法原理簡(jiǎn)單,且參數(shù)很少,也是業(yè)界的常用算法。
但是其缺點(diǎn)也很明顯,例如其對(duì)離群點(diǎn)較敏感、容易產(chǎn)生局部最優(yōu)(多次隨機(jī)來(lái)解決)、需要提前確定k值、聚類結(jié)果依賴初始位置選擇等。
在接下來(lái)的文章中,會(huì)繼續(xù)為大家介紹其他的常用聚類算法,例如層次聚類、密度聚類(dbscan),敬請(qǐng)期待吧~
作者:趙小洛,公眾號(hào):趙小洛洛洛
本文由 @趙小洛 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自Unsplash,基于CC0協(xié)議
案例那邊有數(shù)據(jù)么,我想自己試試,有點(diǎn)看不懂
聚類結(jié)果1-5是怎么對(duì)應(yīng)出區(qū)域的呢
整體講的清晰易懂,不過(guò)在k的選擇那塊還是有點(diǎn)懵,感覺(jué)何為拐點(diǎn)很難選擇,gap statistic的概念也沒(méi)有完全理解