機器學習中的聚類演算法(1) k means演算法

2021-10-22 06:27:11 字數 2052 閱讀 1284

一文詳解雷射點雲的物體聚類:

q:什麼是聚類演算法?

現在我們在做的深度學習當中,比如影象的識別和分類等等,這樣的一般是有監督的學習。但是在現實當中有很多的資料他都是沒有標籤的,所以我們需要進行一種無監督或者非監督的學習。因此,聚類演算法是一種很好的解決方案。

q:聚類演算法分為哪些類?

1.1核心思想:

在機器學習演算法中有很多是需要我們去進行調參的,在這裡我們所需要的調的引數就是這個k的值,k的不同選取是會影響到我們的聚類效果,

1.2演算法實現/流程是什麼:

比如說我有一堆資料,假設k=2,那麼就是我希望把這一堆資料分為2組,所以每一組我都需要有乙個聚類的中心,這個中心是怎麼選取的呢?

(移動的方式就是:因為我們隨機選取的中心點a1和我們的組裡邊的每乙個點都有乙個距離,他會算出乙個平均值,他這個平均值就是我們隨機選取的初始點a1移動的乙個距離(移動的話不是還需要方向嗎???),按照這個距離進行移動假設此時移動到了n1點,這個n1點就是我們新算出來的乙個中心點。那麼此時這個n1點就會與資料集裡邊所有的點(注意是整個資料集不是每乙個組內)裡邊所有的資料點再計算一遍距離,計算出來之後我就有了n1點和整個資料集內每乙個點的距離了,再進行與另外一組的新中心點的距離比較,再次進行分組劃分;

那麼類似的,另乙個隨機選取的初始點a2他也會計算出來乙個移動的距離(就是平均值,這個平均值的求出是與該組內即與自己所在的組內其他點距離的平均值不是所有整個資料集),假設a2移動到了n2,那麼n2這個點也會和資料集裡邊所有的點(注意是整個資料集不是每乙個組內)也計算出來乙個距離。比如此時整個資料集中有乙個點e,如果該點e與n1的距離小於e與n2的距離,那麼這個e點就劃分到n1這個組裡邊去,這樣操作又會把整個資料集分成兩組。之後就是這樣不斷的迴圈,最後經過不斷的移動,比如說移動到了最終的中心點(怎麼確定這個是最終的中心點呢?))

確定某次移動過後這個就是最終的中心點f的方式:比如我們每次移動都會有乙個中心點,將移動後本次的中心點f與上一次的中心點l進行乙個比較,也就是計算f到l的乙個距離,如果這個距離小於某乙個閾值

ps:其實整個過程就是在不斷的計算比較的乙個過程,直到最終找到中心為止。(所以就是不斷的計算當前聚類的中心或者組的中心到所有點的距離,然後比較,看看我到底被分到哪一組,最終就會找到這個組的中心)

1.3基於sklearn(機器學習庫)演算法庫實現的案例

1.4k-means演算法優缺點

(1)第一步隨機的選取乙個點,但是我們在應用的時候不能真的隨機選擇資料點中的隨便乙個點。

(2)k-means是受初始化影響的,不同初始化會不一樣k-means的結果。所以對於同樣的資料會執行幾遍k-means,然後選取損失函式最小的那一次k-means作為最終的結果。

(3)在e-step的時候,要求n個點到k個中心點的nearset neighbor,我們可以使用k-d tree或者八叉樹去做一些加速。

(4)還有一種變種的k-means叫做mini-batch,即在每一次迭代裡邊我都選不一樣的subset of作為我算的資料,在每一次迭代裡邊我運算量就少了。代價就是可能會產生更壞的結果。

機器學習 聚類 密度聚類演算法

一,介紹 密度聚類演算法有多種,我們這裡主要介紹一種著名的密度聚類演算法 dbscan。首先,我們通過下圖了解幾個概念 1 鄰域,與中心x距離不超過 距離,如上圖紅色虛線圈 2 核心物件,確定聚類的初始點,如上圖的x1 3 密度直達,在聚類核心物件鄰域內的點,如上圖x2由x1密度直達 4 密度可達,...

機器學習 聚類演算法

k means演算法 聚類概念 無監督問題 我們手裡沒有標籤了 難點 如何評估,如何調參 聚類 相似的東西分到一組 k means演算法 基本概念 要得到簇的個數,需要指定k值 距離的度量 常用歐幾里得距離和余弦相似度 先標準化 優化目標 質心 均值,即向量各維取平均即可 k means演算法 工作...

機器學習 聚類演算法

在無監督學習中,我們的訓練集可以寫成只有x 1 x x 1 x 2 x x 2 一直到x m x x m 我們沒有任何標籤 yyy。我們希望有一種演算法能夠自動的把這些資料分成有緊密關係的子集或是簇。演算法步驟綜述 k 均值是乙個迭代演算法,假設我們想要將資料聚類成n個組,其方法為 首先選擇k個隨機...