聚類、K-Means、例子、細節(1/2)

作者:程Sir

本文由 程sir 授權發布,版權所有歸作者,轉載請聯繫作者!

一、聚類

今天說聚類,但是必須要先理解聚類和分類的區別,很多業務人員在日常分析時候不是很嚴謹,混為一談,其實二者有本質的區別。

分類其實是從特定的數據中挖掘模式,作出判斷的過程。比如Gmail郵箱里有垃圾郵件分類器,一開始的時候可能什麼都不過濾,在日常使用過程中,我人工對於每一封郵件點選「垃圾」或「不是垃圾」,過一段時間,Gmail就體現出一定的智能,能夠自動過濾掉一些垃圾郵件了。這是因為在點選的過程中,其實是給每一條郵件打了一個「標籤」,這個標籤只有兩個值,要麼是「垃圾」,要麼「不是垃圾」,Gmail就會不斷研究哪些特點的郵件是垃圾,哪些特點的不是垃圾,形成一些判別的模式,這樣當一封信的郵件到來,就可以自動把郵件分到「垃圾」和「不是垃圾」這兩個我們人工設定的分類的其中一個。

Advertisements

聚類的的目的也是把數據分類,但是事先我是不知道如何去分的,完全是演算法自己來判斷各條數據之間的相似性,相似的就放在一起。在聚類的結論出來之前,我完全不知道每一類有什麼特點,一定要根據聚類的結果通過人的經驗來分析,看看聚成的這一類大概有什麼特點。

二、K-Means

聚類演算法有很多種(幾十種),K-Means是聚類演算法中的最常用的一種,演算法最大的特點是簡單,好理解,運算速度快,但是只能應用於連續型的數據,並且一定要在聚類前需要手工指定要分成幾類。

下面,我們描述一下K-means演算法的過程,為了盡量不用數學符號,所以描述的不是很嚴謹,大概就是這個意思,「物以類聚、人以群分」:

  • 首先輸入k的值,即我們希望將數據集經過聚類得到k個分組。

    Advertisements

  • 從數據集中隨機選擇k個數據點作為初始大哥(質心,Centroid)

  • 對集合中每一個小弟,計算與每一個大哥的距離(距離的含義後面會講),離哪個大哥距離近,就跟定哪個大哥。

  • 這時每一個大哥手下都聚集了一票小弟,這時候召開人民代表大會,每一群選出新的大哥(其實是通過演算法選出新的質心)。

  • 如果新大哥和老大哥之間的距離小於某一個設置的閾值(表示重新計算的質心的位置變化不大,趨於穩定,或者說收斂),可以認為我們進行的聚類已經達到期望的結果,演算法終止。

  • 如果新大哥和老大哥距離變化很大,需要迭代3~5步驟。

三、傻冒案例

說這個案例傻冒,是因為實在過於簡單而且無任何現實意義,唯一的用處是提高對於K-Means的感性認識。

我搞了6個點,從圖上看應該分成兩推兒,前三個點一堆兒,后三個點是另一堆兒。現在手工執行K-Means,體會一下過程,同時看看結果是不是和預期一致。

1.選擇初始大哥:

我們就選P1和P2

2.計算小弟和大哥的距離:

P3到P1的距離從圖上也能看出來(勾股定理),是√10 = 3.16;P3到P2的距離√((3-1)^2+(1-2)^2 = √5 = 2.24,所以P3離P2更近,P3就跟P2混。同理,P4、P5、P6也這麼算,如下:

P3到P6都跟P2更近,所以第一次站隊的結果是:

組A:P1

組B:P2、P3、P4、P5、P6

3.人民代表大會:

組A沒啥可選的,大哥還是P1自己

組B有五個人,需要選新大哥,這裡要注意選大哥的方法是每個人X坐標的平均值和Y坐標的平均值組成的新的點,為新大哥,也就是說這個大哥是「虛擬的」。因此,B組選出新大哥的坐標為:

P哥((1+3+8+9+10)/5,(2+1+8+10+7)/5)=(6.2,5.6)

綜合兩組,新大哥為P1(0,0),P哥(6.2,5.6),而P2-P6重新成為小弟

4.再次計算小弟到大哥的距離:

這時可以看到P2、P3離P1更近,P4、P5、P6離P哥更近,所以第二次站隊的結果是:

組A:P1、P2、P3

組B:P4、P5、P6(虛擬大哥這時候消失)

5.第二屆人民代表大會:

按照上一屆大會的方法選出兩個新的虛擬大哥:

P哥1(1.33,1) P哥2(9,8.33),P1-P6都成為小弟

6.第三次計算小弟到大哥的距離:

這時可以看到P1、P2、P3離P哥1更近,P4、P5、P6離P哥2更近,所以第二次站隊的結果是:

組A:P1、P2、P3

組B:P4、P5、P6

我們發現,這次站隊的結果和上次沒有任何變化了,說明已經收斂,聚類結束,聚類結果和我們最開始設想的結果完全一致。

文章來源36大數據,www.36dsj.com ,微信號dashuju36 ,36大數據是一個專註大數據創業、大數據技術與分析、大數據商業與應用的網站。分享大數據的乾貨教程和大數據應用案例,提供大數據分析工具和資料下載,解決大數據產業鏈上的創業、技術、分析、商業、應用等問題,為大數據產業鏈上的公司和數據行業從業人員提供支持與服務。

End.

Advertisements

你可能會喜歡