1. 程式人生 > >機器學習聚類演算法——K-means聚類

機器學習聚類演算法——K-means聚類

k均值演算法

k-means聚類又稱k均值聚類。
給定N個數據點{xnRM,n=1,,N},M是資料點的維度。現在希望把資料點聚類成K個簇。

演算法:

(1)初始化:在給定的N個樣本中隨機選擇K個作為初始聚類中心
(2)更新劃分:對每個資料點,計算其到各個聚類中心的距離,並把它歸到距離最近的類
(3)更新聚類中心:計算各個類簇中資料點在每個維度上的均值,將求得的均值點作為新的聚類中心
(4)判斷是否收斂:如果聚類中心的改變不超過預先設定的閾值或者損失的改變不超過設定的閾值,那麼認為收斂;否則,轉到步驟(2) 

從優化角度看待k均值演算法

給定N個數據點{xn

RM,n=1,,N},M是資料點的維度。現在希望根據空間位置把資料點聚類成K個簇,使得損失函式

J(C,U)=ΣnΣkcnkDistance(xnuk)
最小。其中,聚類矩陣CRNK,(n,k)位置上的元素cnk{0,1}表示資料點xn是否屬於類k,cnk=0表示資料點xn不屬於k類;cnk=1表示資料點xn屬於k類。那麼矩陣C的每一行有且僅有一個元素為0。聚類中心矩陣URKM,第k行向量ukRM表示第k個類的聚類中心。

代價函式也可以從無監督的目的出發來考慮。無監督學習是學習資料的組織方式,用更簡單的方式來描述資料(比如用更低維的向量),在聚類問題中就可以看成用聚類中心來描述每個例項。但是描述的簡化必然會帶來資訊的丟失,這裡用距離來表示丟失的資訊。

最常用距離是L2距離,那麼現在代價函式可以寫成:

J(C,U)=ΣnΣkcnk||xnuk||2
固定聚類中心矩陣U,想一想此時聚類矩陣C應該是什麼樣才能使得損失函式最小呢?不難想到,當每個資料點xn屬於最近的類別時,代價函式才最小。具體做法就是對每個資料點xn計算和各聚類中心之間的距離,將xn劃分到距離最近的類別k,也就是把對應的cnk設為1,其他的cnk設為0。此時損失值為J。不難驗證,J是最小的損失值。假設xn屬於k類,對應的損失值為J
JJ=||xnuk||2||xnuk||20
所以J是最小損失。於是演算法的第二步驟——更新劃分必然會使得損失變小。

固定聚類矩陣C,那麼聚類中心U應該是什麼樣才能使得損失函式最小呢?可以通過求導得出:
Jukm=2Σn

相關推薦

機器學習演算法——K-means

k均值演算法 k-means聚類又稱k均值聚類。 給定N個數據點{xn→∈RM,n=1,⋯,N},M是資料點的維度。現在希望把資料點聚類成K個簇。 演算法: (1)初始化:在給定的N個樣本中隨機選擇K個作為初始聚類中心 (2)更新劃分:對

機器學習筆記六:K-Means,層次,譜

前面的筆記搞了那麼多的數學,這篇來一點輕鬆的,提前適應一下除了監督問題以外的非監督學習。這篇筆記有沒有前面那麼多的數學了,要講的聚類算是無監督的學習方式。 一.一般問題 聚類分析的目標是,建立滿足於同一組內的物件相似,不同組的物件相異的物件分組.它作為一種無

機器學習 (Clustering)____K-均值演算法(K-means Clustering) 層次(Hierarchical Clustering)

____tz_zs學習筆記聚類(Clustering) 顧名思義,就是將相似樣本聚合在一起,屬於機器學習中的非監督學習 (unsupervised learning) 問題。聚類的目標是找到相近的資料點,並將相近的資料點聚合在一起。實現聚類的演算法主要有:1.K-均值聚類演算

機器學習學習筆記 第十九章 演算法-K-MEANS

聚類演算法 聚類的概念: 主要用來處理無監督問題,因為我們手上沒有標籤了,靠電腦自己進行分類 聚類是指把相似的東西分到一組 難點 如何評估呢(因為沒有了標籤,難以對比正確與否,很多評估方法失效了)

機器學習(二)——K均值演算法K-means

概述: 1.聚類 “類”指的是具有相似性的集合。聚類是指將資料集劃分為若干類,使得類內之間的資料最為相識,各類之間的資料相似度差別儘可能大。聚類分析就是以相似性為基礎,對資料集進行聚類分析,屬於無監督學習。 2.無監督學習和監督學習 k-均值聚類(k-means)與k-近鄰(knn)

機器學習演算法:層次K-means

     所謂聚類,就是將相似的事物聚集在一 起,而將不相似的事物劃分到不同的類別的過程,是資料分析之中十分重要的一種手段。比如古典生物學之中,人們通過物種的形貌特徵將其分門別類,可以說就是 一種樸素的人工聚類。如此,我們就可以將世界上紛繁複雜的資訊,簡化為少數方便人們理解的類別,可以說是人類認知這個

【無監督學習】1:K-means演算法原理

前言:粗略研究完神經網路基礎——BP、CNN、RNN、LSTM網路後自己算是鬆懈了很多,好長的時間都沒有堅持再更新部落格了。“腐敗”生活了這麼久,還是要找到自己一點樂趣吧,於是想了一想,決定把《機器學習》的演算法研究過得都重新梳理一遍,於是就從無監督學習——聚類

【OpenCV學習筆記 020】K-Means演算法介紹及實現

一、K-Means演算法介紹 在資料探勘中,K-Means演算法是一種cluster analysis的演算法,其主要是來計算資料聚集的演算法,主要通過不斷地取離種子點最近均值的演算法。 問題 K-Means演算法主要解決的問題如下圖所示。我們可以看到,在圖的左邊有一些點,

CS229 Machine Learning學習筆記:Note 7(K-means、高斯混合模型、EM算法)

learn 不同的 inf ear 公式 course splay alt spa K-means聚類 ng在coursera的機器學習課上已經講過K-means聚類,這裏不再贅述 高斯混合模型 問題描述 聚類問題:給定訓練集\(\{x^{(1)},\cdots,x^{(m

演算法-K-means

K-means演算法****** 步驟: 1.從訓練資料中隨機選取k個初始點,作為k個初始簇的中心點 2.計算每個點到中心點的歐式距離,將其歸併到距離最近的簇中,直至所有點劃分完成 3.計算每個簇新的中心點 4.如果相對於原來中心點沒有變化或者變化數值小於給定閾值,則演算

資料演算法-K-means演算法

深入淺出K-Means演算法 摘要: 在資料探勘中,K-Means演算法是一種 cluster analysis 的演算法,其主要是來計算資料聚集的演算法,主要通過不斷地取離種子點最近均值的演算法。 K-Means演算法主要解決的問題如下圖所示。我們可以看到,在圖的左邊有一些點,我們用肉眼可以看出來有四

演算法實踐(一)——層次K-means

因為百度雲的文章裡面有些圖片丟失了,想起這篇東西之前被一箇中國統計網轉發過,所以自己搜了一下想直接把圖搞回來,結果發現到處轉載的也有不少,自己現在發倒好像是抄襲似的。其實這篇文章裡面特別有價值的東西不算太多,PCCA算是一個知道的人不多而且也挺有意義的演算法,譜

演算法-K-means-C++實現

程式流程圖: K-means核心功能函式,首先,隨機選擇K-中心點(中心點座標為簇中所有點的x座標的平均值,y座標的平均值,該點用於記錄位置,不屬於原始資料集);迴圈判斷中心點是否不變,若是,將二維點對資訊寫入clustering檔案,程式結束。否則,對於每個二維資料點,

[演算法]K-means優缺點及其改進

寫在前:本文參考了國內一些碩士論文以及一些期刊。筆者會在後面寫上具體的參考文獻。僅供學習,請勿抄襲。 K-means聚類小述 大家接觸的第一個聚類方法,十有八九都是K-means聚類啦。該演算法十分容易理解,也很容易實現。其實幾乎所有的機器學習和資料探勘

python機器學習案例系列教程——k均值k中心點

上一篇我們學習了層次聚類。層次聚類只是迭代的把最相近的兩個聚類匹配起來。並沒有給出能給出多少的分組。今天我們來研究一個K均值聚類。就是給定分組數目的基礎上再來聚類。即將所有的樣本資料集分成K個組,每個組內儘可能相似,每個組間又儘可能不相似。 k均值聚類和k

演算法K-Means原理與應用

聚類演算法是一類非監督學習的演算法,在給定的一個數據集中,給了N個樣本,沒有給出樣本對應的標籤類別資料y,可以利用聚類演算法,進行標籤的分類。 K-Means演算法的原理與步驟: 1>   在N個樣本總體中,隨機抽出k個初始資料的質心,接著把資料集中的樣本取出,計算

mahout in Action2.2-介紹-K-means算法

過程 swing 浪漫 res cto 等等 算法 結合 -m 聚類介紹 本章包含 1 實戰操作了解聚類 2.了解相似性概念 3 使用mahout執行一個簡單的聚類實例 4.用於聚類的各種不同的

【轉】使用scipy進行層次k-means

歐氏距離 generate https then con method 感覺 long average scipy cluster庫簡介 scipy.cluster是scipy下的一個做聚類的package, 共包含了兩類聚類方法: 1. 矢量量化(scipy.cluste

使用scipy進行層次k-means

scipy cluster庫簡介 scipy.cluster是scipy下的一個做聚類的package, 共包含了兩類聚類方法: 1. 向量量化(scipy.cluster.vq):支援vector quantization 和 k-means 聚類方法