無監督學習 K means演算法

2021-10-23 11:29:22 字數 1637 閱讀 1871

聚類演算法是一種無監督學習演算法。k均值演算法是其中應用最為廣泛的一種,演算法接受乙個未標記的資料集,然後將資料聚類成不同的組。

k均值是乙個迭代演算法,假設我們想要將資料聚類成k個組,其方法為:

隨機選擇k個隨機的點(稱為聚類中心);

對與資料集中的每個資料點,按照距離k個中心點的距離,將其與距離最近的中心點關聯起來,與同一中心點關聯的所有點聚成一類;

計算每一組的均值,將該組所關聯的中心點移動到平均值的位置;

重複執行2-3步,直至中心點不再變化

無標籤訓練集,其中每個輸入是都是乙個n維的實數向量,即假設分別表示k個類別的聚類中心,用來儲存與第i個例項資料最近的聚類中心的索引(1,2,…,k),則k-均值演算法的偽**如下:

演算法分為2個步驟,

第乙個for迴圈是賦值步驟,即:對於每乙個樣例i,計算其應該屬於的類。

第二個for迴圈是聚類中心的移動,即:對於每乙個類k,重新計算該類的質心。(注:演算法執行過程中若出現沒有分配點的聚類中心,可以直接移除該聚類中心)

k均值最小化的問題,是要最小化所有資料點與其所關聯的聚類中心點之間的距離之和。

因此k均值的代價函式為:

k均值演算法執行開始時,通常隨機初始化聚類中心點,即:隨機選擇k個訓練例項,然後令k個聚類中心分別等於這k個訓練例項。

這就使得kmeans演算法存在乙個缺陷:最後結果會依賴於初始化的情況,並且有可能使得代價函式停留在區域性最小值處。

為了解決該問題,我們通常需要多次(50到1000次)執行k均值演算法,每一次都重新進行初始化,最後再比較多次執行k-均值的結果,選擇代價函式最小的結果。

通常這種方法在k較小的時候(2-10)還是可行的;但是k較大,這麼做可能不會有明顯的改善,並且k較大時,通常第一次執行k均值也會得到乙個不錯的結果。

典型的執行次數為100次。偽**如下:

沒有所謂最好的選擇聚類數的方法,通常是需要根據不同的問題,人工的進行選擇。

但是,當你想要確定最優聚類數k時,有乙個值得一試的方法 - 「肘部法則(elbow method)」。

該方法所做的就是不斷的改變k值(from 1 to x),執行k-均值,然後畫出代價函式與k值的變化曲線,選擇「肘點處」的值作為k的取值。

如下圖:

事實上,該方法並不常用,因為大多數情況下,我們通常會得到乙個光滑下降的曲線,沒有乙個清晰的「肘點」,這樣就不能果斷的確定k的取值;即便若此,該方法還是值得推薦和嘗試的。

無監督學習 K means演算法

是指在未加標籤的資料中,根據資料之間本身的屬性特徵和關聯性對資料進行區分,相似相近或關聯性強的資料放在一起,而不相似不相近 關聯性不強的資料不放在一起。應用場景 降維,聚類演算法,關聯演算法 有監督學習和無監督學習的區別 分類問題,要求實現必須明確知道各個類別的訊息,建立的前提是待分類項都有乙個類別...

K means演算法 無監督學習

現實生活中常常會有這樣的問題 缺乏足夠的先驗知識,因此難以人工標註類別或進行人工類別標註的成本太高。很自然地,我們希望計算機能代我們完成這些工作,或至少提供一些幫助。根據類別未知 沒有被標記 的訓練樣本解決模式識別中的各種問題,稱之為無監督學習。我們可以怎樣最有用地對其進行歸納和分組?我們可以怎樣以...

無監督學習 K Means聚類

無監督學習 通過無標籤的資料,學習資料的分布或資料與資料之間的關係。1定義 根據資料的 相似性 將資料分為多類的過程。1.1.演算法模組 k means 近鄰傳播演算法 dbscan演算法,高斯混合模型 gmm 等。1.2.python庫 sklearn.cluster 1.3.k means聚類演...