數學建模學習 day02 聚類算法
聚類任務
聚類是根據在數據中發現的描述對象及其關係的信息,將數據對象分組。目的是,組內的對象相互之間是相似的(相關的),而不同組中的對象是不同的(不相關的)。組內相似性越大,組間差距越大,說明聚類效果越好。
- 結論
- 同類數據間相似度高
- 不同類的數據間相似度低
- 類別 :無監督學習
- 目標: 將樣本劃分爲若干個不想交的子集 物以類聚人以羣分
舉一個最簡單的現實案例例子——google新聞,google公司每天會在互聯網上爬取成千上萬條新聞信息,這些爬取下來的新聞信息就相當於我們的數據集,但是新聞量是無比龐大的,我們不知道每一條新聞分屬於什麼類別,而聚類算法就把成千上萬條新聞分成一些大類。大大提高了效率。實際上還有許多現實案例都應用到了聚類思想。
我認爲影響聚類效果好壞的因素主要有兩點:
- 聚類的算法
- 衡量距離的公式
下面介紹聚類性能度量的兩大指標
注:可以直接跳到最後看K-means算法的介紹,在數學建模的時候其實我們不用瞭解的太透徹,只要知道相應的算法起到什麼作用就可以了
1.性能度量
聚類性能度量大致有兩類:
- 外部指標:將聚類結果與某個’‘參考模型’'進行比較
- 內部指標:直接考察聚類結果而不利用任何參考模型
1.外部指標
這麼看有點頭疼吧,直接用一個簡單的例子來解釋它
已有數據集 D: x1,x2,x3,x4,x5
2.內部指標
同樣看書應該是看不懂的,舉個例子
- avg (C ) 爲簇內樣本平均均值
- diam (C ) 爲簇內樣本最大距離
- 爲簇之間樣本的最小距離
- 爲兩個簇之間樣本中心點之間距離
如下 D是已有的數據集,我們假設已經分爲了三個簇
下圖是書上公式的解釋,通俗易懂一點
2.距離度量
距離度量需要滿足四個基本的性質,見下圖
這些概念都非常好理解,我們主要關注一下直遞性,圖中舉了一個不滿足直遞性(現實中似乎沒有遇到過) 人,人馬,馬之間的關係就不滿足
我們把距離分爲有序,無序,混合
常見的幾種距離公式 – 有序
下圖是對於有序數據的幾種距離計算公式,閔可夫斯基距離是最常用的,其中p的不同取值對應了下面的不同距離公式
曼哈頓距離
歐氏距離
切比雪夫距離
常見的幾種距離公式 – 無序
同樣舉一個案例
對無序的數據 r和b 顏色
常見的幾種距離公式 – 混合
混合數據的舉例計算很簡單,就是把之前的兩種相加就可以了
下面一些距離公式是在建模課上學到的
定距數據
Mahalanobis距離(馬式距離)
夾角餘弦距離
定序數據
定類數據
計數數據
混合型數據
上面就是一些距離的計算公式和度量方法
下面是K-means聚類算法的介紹,也是我們最常用的聚類方法
K-means 聚類算法
這種聚類方法是最普遍的,也是大家最爲熟悉的,它的實現流程如下:
- 確定聚類的數量,並隨機初始化它們各自的中心點,如圖表3-1 中的(b)聚類數量爲2,我在這裏使用紅和藍兩種顏色表示。圖中的紅,藍兩個叉代表了隨機初始化的中心點,綠色的數據點代表並未進行分類
- 計算當前所有數據點與每個組中心之間的距離,將每個數據點劃分爲離它最近的那類中,如圖表3-1 中的©原本未分類的綠點都根據距離的遠近歸於紅藍兩類
- 根據上述一次迭代後的結果,計算每一類所有數據點的平均值,更新新的中心點。如圖表3-1中的(d) 更新了組中心的位置
- 重複上述步驟,直到中心點更新變化不大或迭代次數達到你所規定的次數。 如圖表3-1中的(d),(e),(f) 我們可以看到中心點的變化已經不大,因此可以確定圖中的紅藍兩類最終的聚類結果
它的優點是簡單、快速,對處理大數據集,該算法保持可伸縮性和高效率,在結果簇是密集的情況下,它的效果較好。
當然,這種算法也存在着缺點,首先我們需要人爲的確定聚類的簇的數量,並且因爲中心點是隨機生成的,因此每次運行所產生的結果都可能有偏差,這會導致結果不具有一致性。除此之外,它對噪聲和孤立點的數據相對敏感。不適用於某些英應用
西瓜書案例
總的來說,就是一個迭代的過程
Pam聚類可以自己去看看