1. 程式人生 > >k-means聚類演算法與區域性最優解

k-means聚類演算法與區域性最優解

1 演算法概述

1.1 無監督學習

本章演算法區別於之前的機器學習演算法,因為k-means演算法屬於無監督演算法。監督學習的意思是所給的訓練資料都帶有標籤,如類別等,我們在訓練演算法時,要考慮預測的結果是否擬合了訓練資料中的標籤,即好像受其監督一樣,而無監督學習與監督學習的區別就在此,無監督學習的資料沒有標籤,沒有人為的分類,就只是一堆資料,我們要做的是將這堆資料以某種我們不知道的內在特性分開,自動形成幾個分類簇。

1.2 k-means工作原理

k-means聚類演算法是發現給定資料集的k個簇的演算法。簇個數k是使用者給定的,每一個簇有一個質心(簇的中心點)。首先隨機確定k個質心,然後將其餘點分配到離它最近的簇中,完成後再講每個簇的質心更新為簇的平均值。

1.3 衡量方法

k-means的k是一個使用者預先定義的引數。那麼我們如何衡量用該引數生成的簇比較好呢?一種度量方法是誤差平方和(SSE),SSE越小表示資料點越接近它們的質心,聚類效果也越好。因為取了平方,所以更加重視遠離中心的點。

1.4 區域性最優解

有時我們的演算法會出現區域性最優解的情況,那麼怎麼解決它呢?有兩個後處理的方法,第一種是合併最近的質心,第二種是合併兩個使得SSE增幅最小的質心。

2 二分 k-means

2.1 工作原理

另一種克服區域性最優解的方法是二分k-means。該演算法首先將所有的點作為一個簇,然後將該簇一分為二。之後遞迴選擇簇進行劃分,直到得到使用者指定的k值,選擇簇的標準是最大程度的降低SSE的值。

優點:容易實現

缺點:可能收斂到區域性最小值(k-means),在大規模資料集上收斂較慢

參考資料:統計學習方法(李航)、機器學習實戰(Peter)