一、聚類思想
????????所謂聚類算法是指將一堆沒有標(biāo)簽的數(shù)據(jù)自動劃分成幾類的方法旬陡,屬于無監(jiān)督學(xué)習(xí)方法粗俱,這個方法要保證同一類的數(shù)據(jù)有相似的特征蜻展,如下圖所示:
????????根據(jù)樣本之間的距離或者說是相似性(親疏性)魁亦,把越相似、差異越小的樣本聚成一類(簇)羔挡,最后形成多個簇洁奈,使同一個簇內(nèi)部的樣本相似度高间唉,不同簇之間差異性高。
二利术、k-means聚類分析算法
相關(guān)概念:
K值:要得到的簇的個數(shù)
質(zhì)心:每個簇的均值向量呈野,即向量各維取平均即可
距離量度:常用歐幾里得距離和余弦相似度(先標(biāo)準(zhǔn)化)
算法流程:
1、首先確定一個k值印叁,即我們希望將數(shù)據(jù)集經(jīng)過聚類得到k個集合被冒。
2、從數(shù)據(jù)集中隨機(jī)選擇k個數(shù)據(jù)點作為質(zhì)心轮蜕。
3昨悼、對數(shù)據(jù)集中每一個點,計算其與每一個質(zhì)心的距離(如歐式距離)跃洛,離哪個質(zhì)心近率触,就劃分到那個質(zhì)心所屬的集合。
4汇竭、把所有數(shù)據(jù)歸好集合后葱蝗,一共有k個集合。然后重新計算每個集合的質(zhì)心细燎。
5两曼、如果新計算出來的質(zhì)心和原來的質(zhì)心之間的距離小于某一個設(shè)置的閾值(表示重新計算的質(zhì)心的位置變化不大,趨于穩(wěn)定玻驻,或者說收斂)悼凑,我們可以認(rèn)為聚類已經(jīng)達(dá)到期望的結(jié)果,算法終止击狮。
6佛析、如果新質(zhì)心和原質(zhì)心距離變化很大,需要迭代3~5步驟彪蓬。
三寸莫、數(shù)學(xué)原理
K-Means采用的啟發(fā)式方式很簡單,用下面一組圖就可以形象的描述:
????????上圖a表達(dá)了初始的數(shù)據(jù)集档冬,假設(shè)k=2膘茎。在圖b中,我們隨機(jī)選擇了兩個k類所對應(yīng)的類別質(zhì)心酷誓,即圖中的紅色質(zhì)心和藍(lán)色質(zhì)心披坏,然后分別求樣本中所有點到這兩個質(zhì)心的距離,并標(biāo)記每個樣本的類別為和該樣本距離最小的質(zhì)心的類別盐数,如圖c所示棒拂,經(jīng)過計算樣本和紅色質(zhì)心和藍(lán)色質(zhì)心的距離,我們得到了所有樣本點的第一輪迭代后的類別。此時我們對我們當(dāng)前標(biāo)記為紅色和藍(lán)色的點分別求其新的質(zhì)心帚屉,如圖d所示谜诫,新的紅色質(zhì)心和藍(lán)色質(zhì)心的位置已經(jīng)發(fā)生了變動。圖e和圖f重復(fù)了我們在圖c和圖d的過程攻旦,即將所有點的類別標(biāo)記為距離最近的質(zhì)心的類別并求新的質(zhì)心喻旷。最終我們得到的兩個類別如圖f。
四牢屋、實例
坐標(biāo)系中有六個點:
1且预、我們分兩組,令K等于2烙无,我們隨機(jī)選擇兩個點:P1和P2
2锋谐、通過勾股定理計算剩余點分別到這兩個點的距離:
3、第一次分組后結(jié)果:
????????組A:P1
????????組B:P2皱炉、P3怀估、P4、P5合搅、P6
4多搀、分別計算A組和B組的質(zhì)心:
? ? ? ? A組質(zhì)心還是P1=(0,0)
????????B組新的質(zhì)心坐標(biāo)為:P哥=((1+3+8+9+10)/5灾部,(2+1+8+10+7)/5)=(6.2康铭,5.6)
5、再次計算每個點到質(zhì)心的距離:
6赌髓、第二次分組結(jié)果:
????????組A:P1从藤、P2、P3
????????組B:P4锁蠕、P5夷野、P6
7、再次計算質(zhì)心:
????????P哥1=(1.33荣倾,1)?
????????P哥2=(9悯搔,8.33)
8、再次計算每個點到質(zhì)心的距離:
9舌仍、第三次分組結(jié)果:
????????組A:P1妒貌、P2、P3
????????組B:P4铸豁、P5灌曙、P6
可以發(fā)現(xiàn),第三次分組結(jié)果和第二次分組結(jié)果一致节芥,說明已經(jīng)收斂在刺,聚類結(jié)束。
五、K-Means的優(yōu)缺點
優(yōu)點:
1蚣驼、原理比較簡單忍燥,實現(xiàn)也是很容易,收斂速度快隙姿。
2、當(dāng)結(jié)果簇是密集的厂捞,而簇與簇之間區(qū)別明顯時, 它的效果較好输玷。
3、主要需要調(diào)參的參數(shù)僅僅是簇數(shù)k靡馁。
缺點:
1欲鹏、K值需要預(yù)先給定,很多情況下K值的估計是非常困難的臭墨。
2赔嚎、K-Means算法對初始選取的質(zhì)心點是敏感的,不同的隨機(jī)種子點得到的聚類結(jié)果完全不同 胧弛,對結(jié)果影響很大尤误。
3、對噪音和異常點比較的敏感结缚。用來檢測異常值损晤。
4、采用迭代方法红竭,可能只能得到局部的最優(yōu)解尤勋,而無法得到全局的最優(yōu)解。
六茵宪、細(xì)節(jié)問題
1最冰、K值怎么定?
????????答:分幾類主要取決于個人的經(jīng)驗與感覺稀火,通常的做法是多嘗試幾個K值暖哨,看分成幾類的結(jié)果更好解釋,更符合分析目的等憾股÷故瘢或者可以把各種K值算出的E做比較,取最小的E的K值服球。
2茴恰、初始的K個質(zhì)心怎么選?
????????答:最常用的方法是隨機(jī)選斩熊,初始質(zhì)心的選取對最終聚類結(jié)果有影響往枣,因此算法一定要多執(zhí)行幾次,哪個結(jié)果更reasonable,就用哪個結(jié)果分冈。 當(dāng)然也有一些優(yōu)化的方法圾另,第一種是選擇彼此距離最遠(yuǎn)的點,具體來說就是先選第一個點雕沉,然后選離第一個點最遠(yuǎn)的當(dāng)?shù)诙€點集乔,然后選第三個點,第三個點到第一坡椒、第二兩點的距離之和最小扰路,以此類推。第二種是先根據(jù)其他聚類算法(如層次聚類)得到聚類結(jié)果倔叼,從結(jié)果中每個分類選一個點汗唱。
3、關(guān)于離群值丈攒?
????????答:離群值就是遠(yuǎn)離整體的哩罪,非常異常、非常特殊的數(shù)據(jù)點巡验,在聚類之前應(yīng)該將這些“極大”“極小”之類的離群數(shù)據(jù)都去掉际插,否則會對于聚類的結(jié)果有影響。但是显设,離群值往往自身就很有分析的價值腹鹉,可以把離群值單獨作為一類來分析。
4敷硅、單位要一致功咒!
????????答:比如X的單位是米,Y也是米绞蹦,那么距離算出來的單位還是米力奋,是有意義的。但是如果X是米幽七,Y是噸景殷,用距離公式計算就會出現(xiàn)“米的平方”加上“噸的平方”再開平方,最后算出的東西沒有數(shù)學(xué)意義澡屡,這就有問題了猿挚。
5、標(biāo)準(zhǔn)化
????????答:如果數(shù)據(jù)中X整體都比較小驶鹉,比如都是1到10之間的數(shù)绩蜻,Y很大,比如都是1000以上的數(shù)室埋,那么办绝,在計算距離的時候Y起到的作用就比X大很多伊约,X對于距離的影響幾乎可以忽略,這也有問題孕蝉。因此屡律,如果K-Means聚類中選擇歐幾里德距離計算距離,數(shù)據(jù)集又出現(xiàn)了上面所述的情況降淮,就一定要進(jìn)行數(shù)據(jù)的標(biāo)準(zhǔn)化(normalization)超埋,即將數(shù)據(jù)按比例縮放,使之落入一個小的特定區(qū)間佳鳖。