戰(zhàn)選型指南)
1. 從“分類”到“聚類”數(shù)據(jù)世界里的無監(jiān)督探索在數(shù)據(jù)分析的日常工作中我們常常會(huì)遇到這樣的場(chǎng)景手頭有一堆客戶數(shù)據(jù)有年齡、消費(fèi)金額、活躍度等十幾個(gè)字段老板讓你“看看這些客戶能不能分個(gè)類找出幾類不同的群體”。這時(shí)候你腦子里第一個(gè)蹦出來的可能是“分類”模型比如邏輯回歸或者決策樹。但問題來了分類模型需要你事先告訴它“類別”是什么比如哪些是“高價(jià)值客戶”哪些是“流失風(fēng)險(xiǎn)客戶”??涩F(xiàn)實(shí)是在探索初期我們往往對(duì)數(shù)據(jù)內(nèi)部的結(jié)構(gòu)一無所知根本不知道應(yīng)該分成幾類每一類長(zhǎng)什么樣。這就是“聚類模型”大顯身手的時(shí)候了。簡(jiǎn)單來說聚類就是一種“物以類聚”的無監(jiān)督學(xué)習(xí)方法。它不依賴任何預(yù)先設(shè)定的標(biāo)簽完全由算法根據(jù)數(shù)據(jù)點(diǎn)之間的“相似性”或“距離”自動(dòng)將相似的對(duì)象歸入同一個(gè)簇Cluster不相似的對(duì)象劃分到不同的簇。它的核心任務(wù)不是預(yù)測(cè)而是發(fā)現(xiàn)——發(fā)現(xiàn)數(shù)據(jù)中隱藏的自然分組、結(jié)構(gòu)或模式。無論是市場(chǎng)細(xì)分、社交網(wǎng)絡(luò)分析、圖像分割還是異常檢測(cè)聚類都是我們打開數(shù)據(jù)黑箱、進(jìn)行初步探索的必備工具。今天我們就來深入聊聊幾種主流的聚類模型從最經(jīng)典的K-means到層次清晰的系統(tǒng)聚類再到能應(yīng)對(duì)復(fù)雜形狀的DBSCAN結(jié)合我這些年踩過的坑和實(shí)戰(zhàn)心得幫你徹底搞懂該怎么選、怎么用。2. K-means快速高效的“圓形”劃分者提到聚類K-means幾乎是所有人的第一課。它直觀、高效是入門必學(xué)也是很多實(shí)際項(xiàng)目的首選。但用得好不好全看細(xì)節(jié)把握得牢不牢。2.1 核心思想與運(yùn)作流程一個(gè)不斷優(yōu)化的“中心點(diǎn)”游戲K-means的目標(biāo)很明確將n個(gè)數(shù)據(jù)點(diǎn)劃分到k個(gè)簇中使得每個(gè)數(shù)據(jù)點(diǎn)到其所屬簇的“中心點(diǎn)”質(zhì)心的距離平方和最小。這個(gè)距離通常使用歐氏距離。你可以把它想象成有k個(gè)組長(zhǎng)每個(gè)組長(zhǎng)要找到離自己最近的組員并且組長(zhǎng)自己的位置質(zhì)心不是固定的他會(huì)不斷移動(dòng)到組員的平均位置以求讓大家“圍”得更緊。它的標(biāo)準(zhǔn)流程通常被概括為四步初始化隨機(jī)選擇k個(gè)數(shù)據(jù)點(diǎn)作為初始的簇質(zhì)心。分配計(jì)算每個(gè)數(shù)據(jù)點(diǎn)到所有質(zhì)心的距離將其分配給距離最近的質(zhì)心所在的簇。更新重新計(jì)算每個(gè)簇中所有數(shù)據(jù)點(diǎn)的平均值將該平均值作為新的簇質(zhì)心。迭代重復(fù)步驟2和3直到質(zhì)心的位置不再發(fā)生顯著變化即算法收斂或達(dá)到預(yù)設(shè)的最大迭代次數(shù)。這個(gè)過程聽起來簡(jiǎn)單但魔鬼藏在細(xì)節(jié)里。我最初用K-means時(shí)以為調(diào)個(gè)包、指定個(gè)K值就完事了結(jié)果出來的分組毫無業(yè)務(wù)意義純粹是數(shù)學(xué)游戲。2.2 關(guān)鍵實(shí)戰(zhàn)細(xì)節(jié)與“踩坑”實(shí)錄第一個(gè)大坑K值怎么定這是K-means最經(jīng)典、也最讓人頭疼的問題。算法本身不會(huì)告訴你數(shù)據(jù)應(yīng)該分成幾類。盲目選一個(gè)結(jié)果可能完全錯(cuò)誤。我常用的方法是“肘部法則”結(jié)合業(yè)務(wù)理解。肘部法則計(jì)算不同K值比如從1到10對(duì)應(yīng)的簇內(nèi)誤差平方和SSE然后畫出K-SSE曲線。SSE會(huì)隨著K增大而減小理想情況下曲線會(huì)出現(xiàn)一個(gè)“拐點(diǎn)”像手肘拐點(diǎn)對(duì)應(yīng)的K值就是相對(duì)合理的簇?cái)?shù)。但很多時(shí)候這個(gè)“肘部”并不明顯需要主觀判斷。輪廓系數(shù)這是一個(gè)更量化的指標(biāo)它同時(shí)考慮了簇內(nèi)的凝聚度和簇間的分離度。輪廓系數(shù)的取值范圍在[-1, 1]之間值越接近1說明聚類效果越好。我們可以計(jì)算不同K值下的平均輪廓系數(shù)選擇使其最大化的K。業(yè)務(wù)驅(qū)動(dòng)這是最重要的。比如做客戶分群如果市場(chǎng)部明確希望分為“高價(jià)值”、“中價(jià)值”、“低價(jià)值”、“流失風(fēng)險(xiǎn)”四類來制定策略那么K4可能就是更合理的選擇哪怕輪廓系數(shù)不是最高。模型要服務(wù)于業(yè)務(wù)而不是純粹追求數(shù)學(xué)上的最優(yōu)。第二個(gè)坑初始質(zhì)心的“隨機(jī)性”陷阱K-means對(duì)初始質(zhì)心的選擇非常敏感。不同的隨機(jī)種子可能導(dǎo)致完全不同的聚類結(jié)果尤其是當(dāng)數(shù)據(jù)分布不那么理想時(shí)。解決方案是采用K-means初始化策略。它通過一種概率方法選擇初始質(zhì)心使得它們彼此之間盡可能遠(yuǎn)離從而大大提高了算法的穩(wěn)定性和收斂速度。現(xiàn)在主流的機(jī)器學(xué)習(xí)庫(kù)如Scikit-learn默認(rèn)使用的就是K-means但如果你用的是老代碼或自己實(shí)現(xiàn)務(wù)必注意這一點(diǎn)。第三個(gè)坑數(shù)據(jù)標(biāo)準(zhǔn)化是“必修課”如果你的數(shù)據(jù)特征量綱不同比如“年齡”20-60和“年收入”50000-500000直接計(jì)算歐氏距離收入的影響會(huì)被無限放大年齡特征幾乎失效。這會(huì)導(dǎo)致聚類結(jié)果完全由量級(jí)大的特征主導(dǎo)。因此在聚類前必須進(jìn)行特征標(biāo)準(zhǔn)化如Z-score標(biāo)準(zhǔn)化或歸一化縮放到[0,1]區(qū)間讓所有特征處于同一量級(jí)。第四個(gè)坑K-means的“硬傷”——球形假設(shè)與噪聲K-means假設(shè)簇是凸形的近似球形且大小密度相近。它使用距離作為唯一度量因此對(duì)于非球形分布如月牙形、環(huán)形的數(shù)據(jù)效果會(huì)很差。同時(shí)它對(duì)噪聲點(diǎn)和離群點(diǎn)非常敏感一個(gè)遠(yuǎn)離群體的點(diǎn)會(huì)嚴(yán)重拉偏質(zhì)心的位置。如果你的數(shù)據(jù)形狀怪異或含有大量噪聲K-means可能不是最佳選擇。提示在實(shí)際項(xiàng)目中我通常會(huì)跑多次K-means比如n_init10選擇SSE最小的一次結(jié)果作為最終輸出以緩解隨機(jī)初始化的影響。3. 系統(tǒng)聚類層次聚類展現(xiàn)數(shù)據(jù)關(guān)系的“譜系樹”當(dāng)你不僅想知道數(shù)據(jù)分成了幾類還想了解類別之間的層次和關(guān)聯(lián)關(guān)系時(shí)系統(tǒng)聚類Hierarchical Clustering就派上用場(chǎng)了。它最終會(huì)生成一個(gè)樹狀圖Dendrogram像家譜一樣展示數(shù)據(jù)點(diǎn)是如何一步步聚合或分裂的。3.1 兩種策略自底向上與自頂向下系統(tǒng)聚類主要分為兩種策略凝聚法自底向上這是最常用的方法。開始時(shí)每個(gè)數(shù)據(jù)點(diǎn)都是一個(gè)獨(dú)立的簇。然后迭代地合并最“相似”或距離最近的兩個(gè)簇直到所有點(diǎn)合并成一個(gè)簇或達(dá)到預(yù)設(shè)的簇?cái)?shù)。這個(gè)過程就像小部落不斷合并成大國(guó)。分裂法自頂向下開始時(shí)所有數(shù)據(jù)點(diǎn)屬于一個(gè)簇。然后迭代地分裂出差異最大的子簇直到每個(gè)點(diǎn)都成為單獨(dú)的簇或達(dá)到預(yù)設(shè)的簇?cái)?shù)。這種方法計(jì)算量通常更大不如凝聚法常用。3.2 距離度量與連接準(zhǔn)則決定合并誰的關(guān)鍵在凝聚法中有兩個(gè)核心概念決定了聚類的過程點(diǎn)間距離度量和K-means一樣常用歐氏距離、曼哈頓距離等。簇間距離度量連接準(zhǔn)則當(dāng)簇包含多個(gè)點(diǎn)時(shí)如何定義兩個(gè)簇之間的距離這里有幾種常見方法選擇不同結(jié)果可能大相徑庭。單連接取兩個(gè)簇中所有點(diǎn)之間距離的最小值。它容易發(fā)現(xiàn)“鏈?zhǔn)健苯Y(jié)構(gòu)但對(duì)噪聲敏感容易產(chǎn)生長(zhǎng)條狀的簇。全連接取兩個(gè)簇中所有點(diǎn)之間距離的最大值。它傾向于產(chǎn)生緊湊的、大小相近的球形簇對(duì)噪聲相對(duì)穩(wěn)健。平均連接取兩個(gè)簇中所有點(diǎn)之間距離的平均值。是前兩種方法的折中相對(duì)平衡也是最常用的方法之一。Ward連接合并后能使總體簇內(nèi)方差增量最小的兩個(gè)簇。它傾向于產(chǎn)生大小相近的簇效果通常很好是許多場(chǎng)景下的默認(rèn)選擇。3.3 如何從樹狀圖中確定最佳簇?cái)?shù)系統(tǒng)聚類的優(yōu)勢(shì)在于你不需要事先指定K值。通過觀察生成的樹狀圖你可以像“砍樹”一樣在合適的“高度”橫切一刀切面與樹枝的交點(diǎn)數(shù)量就是簇?cái)?shù)??础爸﹂L(zhǎng)”在樹狀圖中縱軸代表了合并時(shí)的距離。如果某些合并發(fā)生在很大的距離上說明被合并的兩個(gè)簇差異很大。你可以尋找那些“枝長(zhǎng)”突然變長(zhǎng)的位置在其下方橫切這些位置往往代表了自然的分類邊界。結(jié)合業(yè)務(wù)同樣樹狀圖提供了所有可能的分割方式。你可以根據(jù)業(yè)務(wù)上需要的顆粒度比如我們最多能管理5個(gè)客戶群體來選擇在對(duì)應(yīng)高度進(jìn)行切割。我個(gè)人在處理樣本量不大比如幾百到幾千、且需要向業(yè)務(wù)方解釋分類層次關(guān)系時(shí)非常偏愛系統(tǒng)聚類。一張清晰的樹狀圖比干巴巴的簇標(biāo)簽更有說服力。4. DBSCAN對(duì)抗噪聲與復(fù)雜形狀的“密度”戰(zhàn)士前面兩種方法都有明顯的局限性需要預(yù)設(shè)簇?cái)?shù)K-means或難以處理任意形狀和噪聲K-means和部分連接準(zhǔn)則的系統(tǒng)聚類。DBSCANDensity-Based Spatial Clustering of Applications with Noise的出現(xiàn)完美解決了這些問題。它基于一個(gè)核心思想簇是由密度相連的點(diǎn)的最大集合構(gòu)成的那些不在任何簇里的點(diǎn)就是噪聲。4.1 理解三個(gè)核心概念要玩轉(zhuǎn)DBSCAN必須吃透三個(gè)參數(shù)和概念εEps鄰域半徑。以一個(gè)點(diǎn)為圓心ε為半徑畫個(gè)圓在高維是超球體。MinPts最小點(diǎn)數(shù)。在ε鄰域內(nèi)至少需要包含多少個(gè)點(diǎn)包括中心點(diǎn)自己這個(gè)區(qū)域才算“稠密”。核心點(diǎn)、邊界點(diǎn)、噪聲點(diǎn)核心點(diǎn)如果一個(gè)點(diǎn)的ε鄰域內(nèi)至少包含MinPts個(gè)點(diǎn)包括自己那它就是一個(gè)核心點(diǎn)。核心點(diǎn)是簇的“種子”。邊界點(diǎn)如果一個(gè)點(diǎn)的ε鄰域內(nèi)包含的點(diǎn)數(shù)少于MinPts個(gè)但它落在某個(gè)核心點(diǎn)的ε鄰域內(nèi)那它就是邊界點(diǎn)。邊界點(diǎn)屬于某個(gè)簇但不是簇形成的發(fā)起者。噪聲點(diǎn)既不是核心點(diǎn)也不是邊界點(diǎn)的點(diǎn)。它們就是離群點(diǎn)不被歸入任何簇。4.2 算法流程與優(yōu)勢(shì)DBSCAN的流程可以概括為從一個(gè)未被訪問的核心點(diǎn)出發(fā)找到所有由它密度可達(dá)的點(diǎn)通過核心點(diǎn)連接起來的點(diǎn)形成一個(gè)簇。重復(fù)這個(gè)過程直到所有核心點(diǎn)都被訪問過。剩下的非核心點(diǎn)如果是邊界點(diǎn)就歸入相應(yīng)簇否則標(biāo)記為噪聲。它的巨大優(yōu)勢(shì)在于不需要預(yù)設(shè)簇?cái)?shù)K簇的數(shù)量由算法根據(jù)數(shù)據(jù)密度自動(dòng)發(fā)現(xiàn)。能發(fā)現(xiàn)任意形狀的簇不依賴于距離質(zhì)心的遠(yuǎn)近只要密度相連無論形狀多奇怪都能找出來。對(duì)噪聲魯棒能明確識(shí)別并過濾掉噪聲點(diǎn)這對(duì)異常檢測(cè)非常有用。4.3 參數(shù)調(diào)優(yōu)實(shí)戰(zhàn)如何確定ε和MinPts這是DBSCAN應(yīng)用的難點(diǎn)。參數(shù)設(shè)不好可能把所有點(diǎn)都?xì)w為一個(gè)簇或者全變成噪聲。MinPts的經(jīng)驗(yàn)法則一般不小于數(shù)據(jù)維度特征數(shù)的2倍。對(duì)于二維數(shù)據(jù)通常從3或4開始嘗試。MinPts越大對(duì)核心點(diǎn)的要求越嚴(yán)格生成的簇越少、越緊湊噪聲點(diǎn)越多。ε的確定——K距離圖法這是一個(gè)非常實(shí)用的技巧。對(duì)于每個(gè)點(diǎn)計(jì)算它到第MinPts個(gè)最近鄰點(diǎn)的距離稱為“K距離”。將所有點(diǎn)的K距離按降序排序并繪圖。尋找圖中“拐點(diǎn)”或“肘部”對(duì)應(yīng)的距離值這個(gè)值通??梢宰鳛棣诺囊粋€(gè)良好估計(jì)。因?yàn)楣拯c(diǎn)處的距離變化劇烈小于該距離的點(diǎn)密度變化大適合作為鄰域半徑的閾值。我曾在處理一個(gè)城市興趣點(diǎn)POI聚類項(xiàng)目時(shí)深有體會(huì)。數(shù)據(jù)包含商場(chǎng)、公園、寫字樓、居民區(qū)等分布極不規(guī)則且存在大量孤立的便利店或報(bào)亭噪聲。用K-means怎么調(diào)K值都不理想要么把長(zhǎng)條形的商業(yè)街切斷要么把公園和廣場(chǎng)混在一起。換成DBSCAN后通過調(diào)整ε和MinPts成功識(shí)別出了幾個(gè)密集的商業(yè)中心核心點(diǎn)密集、沿著道路分布的商業(yè)帶密度相連并將那些孤立的點(diǎn)標(biāo)記為噪聲效果非常符合業(yè)務(wù)直覺。5. 模型對(duì)比與選型指南沒有銀彈只有合適學(xué)了幾種方法到底該用哪個(gè)這張對(duì)比表可以幫你快速?zèng)Q策特性K-means系統(tǒng)聚類凝聚DBSCAN簇形狀凸形近似球形取決于連接準(zhǔn)則通常也是凸形偏好任意形狀是否需要預(yù)設(shè)K是否但切割時(shí)需要否處理噪聲敏感取決于連接準(zhǔn)則單連接敏感非常魯棒結(jié)果類型扁平劃分層次結(jié)構(gòu)樹狀圖扁平劃分含噪聲標(biāo)簽計(jì)算復(fù)雜度O(nkt) 適合大數(shù)據(jù)O(n3) 或 O(n2 log n) 適合中小數(shù)據(jù)O(n log n)使用空間索引 適合大數(shù)據(jù)主要參數(shù)K值、初始質(zhì)心連接準(zhǔn)則、距離度量ε、 MinPts優(yōu)勢(shì)簡(jiǎn)單、高效、可擴(kuò)展可視化好、提供層次關(guān)系、無需預(yù)設(shè)K抗噪聲、發(fā)現(xiàn)任意形狀、無需預(yù)設(shè)K劣勢(shì)需指定K、對(duì)噪聲和初始值敏感、僅限球形簇計(jì)算成本高、對(duì)大規(guī)模數(shù)據(jù)不友好、合并決策不可逆對(duì)參數(shù)敏感、密度變化大的數(shù)據(jù)效果差、邊界點(diǎn)歸屬模糊選型心法先看數(shù)據(jù)規(guī)模和形狀如果數(shù)據(jù)量巨大百萬級(jí)以上K-means通常是唯一可行的選擇系統(tǒng)聚類根本跑不動(dòng)。先用可視化如PCA降維后畫散點(diǎn)圖或領(lǐng)域知識(shí)判斷數(shù)據(jù)大概是什么形狀。如果是明顯的球形或緊湊簇K-means是快刀。再看業(yè)務(wù)需求是否需要層次關(guān)系如果需要向非技術(shù)人員展示分類的由來系統(tǒng)聚類的樹狀圖是無價(jià)之寶。是否需要明確找出異常點(diǎn)DBSCAN的噪聲標(biāo)簽直接給你答案。最后看資源與迭代如果計(jì)算資源充足且處于探索階段不妨多試幾種方法??梢杂幂喞禂?shù)、Calinski-Harabasz指數(shù)等內(nèi)部評(píng)估指標(biāo)不依賴真實(shí)標(biāo)簽來量化比較不同聚類方法在同一數(shù)據(jù)上的效果。但記住最終裁決權(quán)在業(yè)務(wù)邏輯手里。6. 聚類效果評(píng)估如何知道分得好不好沒有真實(shí)標(biāo)簽我們?nèi)绾卧u(píng)價(jià)聚類結(jié)果的質(zhì)量這是一個(gè)比監(jiān)督學(xué)習(xí)更棘手的問題。通常分為內(nèi)部評(píng)估和外部評(píng)估。6.1 內(nèi)部評(píng)估指標(biāo)當(dāng)沒有基準(zhǔn)答案時(shí)我們基于聚類結(jié)果自身的緊湊性和分離度來評(píng)估。輪廓系數(shù)前面提到過它計(jì)算對(duì)于每個(gè)樣本ia(i)是i到同簇其他樣本的平均距離凝聚度b(i)是i到其他某簇所有樣本的平均距離的最小值分離度。輪廓系數(shù) s(i) (b(i) - a(i)) / max{a(i), b(i)}。所有樣本的s(i)的均值即為整體輪廓系數(shù)越接近1越好。Calinski-Harabasz指數(shù)也稱為方差比準(zhǔn)則。計(jì)算簇間離散度與簇內(nèi)離散度的比值同時(shí)考慮了簇間協(xié)方差和簇內(nèi)協(xié)方差。值越大表示簇自身越緊密簇間越分離。Davies-Bouldin指數(shù)計(jì)算任意兩個(gè)簇的“相似度”該相似度是這兩個(gè)簇的簇內(nèi)平均距離之和除以兩簇質(zhì)心距離。DB指數(shù)是所有簇的相似度的最大值取平均。值越小越好理想情況接近0。內(nèi)部指標(biāo)有助于在同一數(shù)據(jù)集上比較不同聚類算法或不同參數(shù)的效果但它們都有局限性不能絕對(duì)地說分?jǐn)?shù)高就一定符合業(yè)務(wù)邏輯。6.2 外部評(píng)估指標(biāo)當(dāng)有真實(shí)標(biāo)簽時(shí)如果你有一部分已知的類別信息哪怕很少或者聚類目的是去逼近某種已知分類可以用外部指標(biāo)。調(diào)整蘭德指數(shù)衡量?jī)蓚€(gè)劃分聚類結(jié)果與真實(shí)標(biāo)簽之間的一致性取值范圍[-1,1]值越大越好1表示完全一致0表示隨機(jī)劃分。互信息衡量?jī)蓚€(gè)劃分共享的信息量同樣有調(diào)整后的版本用于糾正隨機(jī)性。同質(zhì)性、完整性和V-measure這是一組指標(biāo)。同質(zhì)性要求每個(gè)簇只包含單一類的樣本完整性要求同一類的所有樣本都被分配到了同一個(gè)簇V-measure則是兩者的調(diào)和平均數(shù)。在實(shí)際項(xiàng)目中我通常的做法是先用內(nèi)部指標(biāo)篩選出幾個(gè)表現(xiàn)不錯(cuò)的模型或參數(shù)組合然后拿著這些聚類結(jié)果去找業(yè)務(wù)專家用具體的簇特征比如“這一類客戶都是年輕、高消費(fèi)、低活躍度”去驗(yàn)證看是否符合業(yè)務(wù)認(rèn)知和直覺。這種“模型評(píng)估業(yè)務(wù)校驗(yàn)”的組合拳才是最可靠的。7. 聚類實(shí)戰(zhàn)全流程與高級(jí)技巧掌握了模型原理我們來看看一個(gè)完整的聚類項(xiàng)目應(yīng)該如何推進(jìn)以及有哪些提升效果的高級(jí)技巧。7.1 標(biāo)準(zhǔn)工作流數(shù)據(jù)理解與清洗這是所有模型的基礎(chǔ)。了解每個(gè)特征的含義處理缺失值、異常值。對(duì)于聚類異常值需要特別小心因?yàn)樗赡苁且粋€(gè)有意義的噪聲DBSCAN能處理也可能是一個(gè)需要被修正的錯(cuò)誤數(shù)據(jù)點(diǎn)。特征工程與標(biāo)準(zhǔn)化根據(jù)業(yè)務(wù)理解創(chuàng)造新特征如將“消費(fèi)總額”和“消費(fèi)頻率”合并為“消費(fèi)價(jià)值指數(shù)”。務(wù)必進(jìn)行特征標(biāo)準(zhǔn)化消除量綱影響。對(duì)于包含分類變量的數(shù)據(jù)需要進(jìn)行合適的編碼如獨(dú)熱編碼。降維與可視化可選但強(qiáng)烈推薦如果特征維度很高10直接聚類可能效果不佳“維度災(zāi)難”??梢允褂肞CA主成分分析或t-SNE等降維方法將數(shù)據(jù)降到2-3維進(jìn)行可視化。這不僅能幫助你直觀感受數(shù)據(jù)的可能結(jié)構(gòu)有沒有明顯的分組形狀如何也能作為后續(xù)聚類結(jié)果的展示手段。注意降維可能會(huì)損失信息有時(shí)在低維空間看起來可分在高維空間未必??梢試L試在原始空間和降維空間都做聚類對(duì)比結(jié)果。模型選擇與初步運(yùn)行根據(jù)數(shù)據(jù)規(guī)模、形狀和業(yè)務(wù)目標(biāo)選擇1-2種候選算法。用默認(rèn)參數(shù)或經(jīng)驗(yàn)參數(shù)先跑一遍看看大致結(jié)果。參數(shù)調(diào)優(yōu)與評(píng)估對(duì)于K-means用肘部法則和輪廓系數(shù)確定K對(duì)于DBSCAN用K距離圖確定ε。使用內(nèi)部評(píng)估指標(biāo)比較不同參數(shù)下的結(jié)果。結(jié)果分析與業(yè)務(wù)解讀這是最有價(jià)值的一步。計(jì)算每個(gè)簇的特征統(tǒng)計(jì)量均值、中位數(shù)、分布給每個(gè)簇打上業(yè)務(wù)標(biāo)簽如“都市高薪白領(lǐng)”、“小鎮(zhèn)節(jié)儉青年”。分析不同簇之間的差異形成業(yè)務(wù)洞察。迭代與報(bào)告將分析結(jié)果與業(yè)務(wù)方溝通根據(jù)反饋調(diào)整特征或模型迭代優(yōu)化。最終形成包含可視化圖表散點(diǎn)圖、樹狀圖、雷達(dá)圖和業(yè)務(wù)結(jié)論的報(bào)告。7.2 高級(jí)技巧與注意事項(xiàng)處理混合型數(shù)據(jù)如果你的數(shù)據(jù)同時(shí)包含數(shù)值特征如年齡、收入和分類特征如性別、城市直接計(jì)算歐氏距離不合理。可以使用Gower距離等專門處理混合數(shù)據(jù)的距離度量或者將分類特征進(jìn)行合適的編碼和縮放后與數(shù)值特征一起使用。聚類前的異常值處理對(duì)于K-means異常值影響極大??梢钥紤]先使用孤立森林或簡(jiǎn)單統(tǒng)計(jì)方法如3σ原則檢測(cè)并處理異常值再進(jìn)行聚類?;蛘咧苯邮褂脤?duì)噪聲魯棒的算法如DBSCAN。聚類穩(wěn)定性檢驗(yàn)由于K-means的隨機(jī)性可以多次運(yùn)行算法檢查樣本點(diǎn)被分配到同一簇的頻率。如果某個(gè)點(diǎn)頻繁在不同簇間跳躍說明聚類結(jié)果不穩(wěn)定或者這個(gè)點(diǎn)本身就處于簇的邊界需要特別關(guān)注。不要過度解讀聚類是一種探索性數(shù)據(jù)分析工具它發(fā)現(xiàn)的是數(shù)據(jù)中的“數(shù)學(xué)”結(jié)構(gòu)而不一定是“真實(shí)”的業(yè)務(wù)結(jié)構(gòu)。一定要結(jié)合業(yè)務(wù)常識(shí)進(jìn)行判斷避免陷入“為了聚類而聚類”的陷阱。有時(shí)候聚類結(jié)果可能只是反映了你數(shù)據(jù)預(yù)處理或特征選擇的方式。聚類模型就像數(shù)據(jù)科學(xué)家手中的一把瑞士軍刀K-means是那把最常用、最鋒利的刀片系統(tǒng)聚類是附帶的小鋸子能展示結(jié)構(gòu)而DBSCAN則是那把開瓶器專門解決形狀怪異和帶噪聲的難題。沒有哪一把是萬能的關(guān)鍵是根據(jù)你手頭“數(shù)據(jù)這塊木頭”的質(zhì)地和你想雕刻的“業(yè)務(wù)圖案”選擇最合適的那一把并熟練運(yùn)用。記住所有模型都是錯(cuò)的但有些是有用的。聚類的價(jià)值就在于它能幫助我們從無序的數(shù)據(jù)中發(fā)現(xiàn)那些“有用”的、可供進(jìn)一步分析和行動(dòng)的規(guī)律與模式。