k-means 是一種聚類演算法,具有隨機,無監督的特點。也叫k中心值聚類。其中的k,表示的是要分成類別的數量,也就是說你最終要分成幾堆。
k-means 是一通過距離情況優化中心的策略來實現聚類。具有一定的隨機性。
演算法步驟如下:
演算法輸入:訓練資料x
=x=\
x=,k(想聚類的數目)
隨機在訓練資料中選取k個值 k0=
k_0=\^,x_^,..,x_^k\}
k0=
,作為中心。
分別計算樣本資料x中所有的樣本到這k個中心的距離,並將計算樣本標記為距離k個中心最小的中心類別。所有樣本標記為1~k中的某一類。
根據#2中的標記,對標記為中心進行更新(k0到
k1
k_0 到 k_1
k0到k1
)。更新方式為:
距離x k0
1x_^1
xk01
最近的所有樣本, 也就是標記為1的所有樣本,取均值更新xk0
1x_^1
xk01
為x k1
1x_^1
xk11
距離x k0
2x_^2
xk02
最近的所有樣本, 也就是標記為2的所有樣本,取均值更新xk0
2x_^2
xk02
為x k1
2x_^2
xk12
… …距離xk0
kx_^k
xk0k
最近的所有樣本, 也就是標記為k的所有樣本,取均值更新xk0
kx_^k
xk0k
為x k1
kx_^k
xk1k
由此,我們就得到乙個新得中心點k1=
k_1=\^,x_^,..,x_^k\}
k1=
,用新得中心代替原來得中心,重複#2,#3直到中心不變或者變化很小為止. 假設我們一共計算j次,我們得到最終的中心kj=
k_j=\^,x_^,..,x_^k\}
kj=
我們根據最終的中心執行#2 則得到的 k 個分類為我們最終的聚類結果
明顯地,k-means 的結果和初始隨機的中心非常相關,極端的情況下,如果兩個樣本完全一樣,則會出現無法分出k類的問題。
針對初始中心選擇的問題,提出了k-means++
除了初始中心隨機的問題,還有乙個就是在計算的過程中有大量的距離計算,嚴重影響了計算效率,為此elkan k-means 應運而生。
在資料量巨大的情況下,就算使用elkan k-means也不可避免的會有巨大的運算了,在這種情況下可以考慮使用mini-batch-kmeans。
k-means 相對簡單,就不舉例子了。
請和我一起學習機器學習演算法(過度擬合問題)
所有的機器學習需要的能力都不是針對標籤已知的樣本進行判別決策的能力,而是正對未知樣本能夠正確 的能力,但是在我們的模型學習過程中,會出現一些過猶不及的現象。過度擬合 overfitting 實際上是為了盡可能的減小訓練集的誤差,從而導致模型過度複雜,泛化能力下降的情況。所謂泛化能力,指的就是對未知樣...
和我一起學習OC吧
oc基礎 xcold中.m檔案包含了oc 由oc編譯器處理,c編譯器處理.c檔案,c 編譯器處理.cpp檔案 import和include的區別是確保檔案製備包含一次 import告訴編譯器檢視fundation框架中的fundation標頭檔案,框架是乙個技術的集合體,包括標頭檔案庫,影象和聲音,...
機器學習 機器學習試題 一
在網上找的一些試題及延伸的一些問題,以選擇題為主,主要是關於基礎理論知識,同時給出自己聯想到的一些問題。當然基礎問題應當包含演算法本身的過程和某些推導過程。比如 lr svm的推導。試題1 已知座標軸中兩點a 2,2 b 1,2 求 這兩點的曼哈頓距離 l1距離 答案 7 向量ab 3,4 l1 是...