K均值算法 簡述K均值算法的具體步驟 K均值算法的優缺點是什麼?如何對其進行調優? 針對K均值算法的缺點,有哪些改進的模型? 證明K均值算法的收斂性。

簡述K均值算法的具體步驟

代價函數可以定義爲各個樣本距離所屬簇中心點的誤差平方和


K均值算法的優缺點是什麼?如何對其進行調優?

K均值算法有一些缺點,例如受初值和離羣點的影響每次的結果不穩定、結果 通常不是全局最優而是局部最優解、無法很好地解決數據簇分佈差別比較大的情 況(比如一類是另一類樣本數量的100倍)、不太適用於離散分類等。但是瑕不掩 瑜,K均值聚類的優點也是很明顯和突出的,主要體現在:對於大數據集,K均值 聚類算法相對是可伸縮和高效的,它的計算複雜度是O(NKt)接近於線性,其中N是 數據對象的數目,K是聚類的簇數,t是迭代的輪數。儘管算法經常以局部最優結 束,但一般情況下達到的局部最優已經可以滿足聚類的需求。
其實書中也少講了缺點,那就是關於k的選擇,當維度很高的時候,你很難判斷選擇k多少比較合適。
不過書中在算法調優中說了。所謂的調優其是也是變相的說那些缺點。

K均值算法的調優一般可以從以下幾個角度出發。

(1)數據歸一化和離羣點處理。
K均值聚類本質上是一種基於歐式距離度量的數據劃分方法,均值和方差大的 維度將對數據的聚類結果產生決定性的影響,所以未做歸一化處理和統一單位的 數據是無法直接參與運算和比較的。同時,離羣點或者少量的噪聲數據就會對均 值產生較大的影響,導致中心偏移,因此使用K均值聚類算法之前通常需要對數據 做預處理。

(2)合理選擇K值。
K值的選擇是K均值聚類最大的問題之一,這也是K均值聚類算法的主要缺 點。實際上,我們希望能夠找到一些可行的辦法來彌補這一缺點,或者說找到K值 的合理估計方法。但是,K值的選擇一般基於經驗和多次實驗結果。例如採用手肘 法,我們可以嘗試不同的K值,並將不同K值所對應的損失函數畫成折線,橫軸 爲K的取值,縱軸爲誤差平方和所定義的損失函數,如圖5.3所示

由圖可見,K值越大,距離和越小;並且,當K=3時,存在一個拐點,就像人 的肘部一樣;當K (1,3)時,曲線急速下降;當K>3時,曲線趨於平穩。手肘法認 爲拐點就是K的最佳值。
手肘法是一個經驗方法,缺點就是不夠自動化,因此研究員們又提出了一些 更先進的方法,其中包括比較有名的Gap Statistic方法[5]。Gap Statistic方法的優點 是,不再需要肉眼判斷,而只需要找到最大的Gap statistic所對應的K即可,因此該 方法也適用於批量化作業。在這裏我們繼續使用上面的損失函數,當分爲K簇時, 對應的損失函數記爲Dk。Gap Statistic定義爲
Gap(K)=E(logDk)−logDk

內按照均勻分佈隨機地產生和原始樣本數一樣多的隨機樣本,並對這個隨機樣本
做K均值,得到一個Dk;重複多次就可以計算出E(logDk)的近似值。那麼Gap(K)有
什麼物理含義呢?它可以視爲隨機樣本的損失與實際樣本的損失之差。試想實際 樣本對應的最佳簇數爲K,那麼實際樣本的損失應該相對較小,隨機樣本損失與實 際樣本損失之差也相應地達到最小值,從而Gap(K)取得最大值所對應的K值就是最 佳的簇數。根據式(5.4)計算K =1,2,...,9所對應的Gap Statistic


(3)採用核函數。
採用核函數是另一種可以嘗試的改進方向。傳統的歐式距離度量方式,使得K 均值算法本質上假設了各個數據簇的數據具有一樣的先驗概率,並呈現球形或者 高維球形分佈,這種分佈在實際生活中並不常見。面對非凸的數據分佈形狀時, 可能需要引入核函數來優化,這時算法又稱爲核K均值算法,是核聚類方法的一種 [6]。核聚類方法的主要思想是通過一個非線性映射,將輸入空間中的數據點映射到 高位的特徵空間中,並在新的特徵空間中進行聚類。非線性映射增加了數據點線 性可分的概率,從而在經典的聚類算法失效的情況下,通過引入核函數可以達到 更爲準確的聚類結果。

針對K均值算法的缺點,有哪些改進的模型?

K均值算法的主要缺點如下。
(1)需要人工預先確定初始K值,且該值和真實的數據分佈未必吻合。
(2)K均值只能收斂到局部最優,效果受到初始值很大。
(3)易受到噪點的影響。
(4)樣本點只能被劃分到單一的類中。

■ K-means++算法
K均值的改進算法中,對初始值選擇的改進是很重要的一部分。而這類算法 中,最具影響力的當屬K-means++算法。原始K均值算法最開始隨機選取數據集中 K個點作爲聚類中心,而K-means++按照如下的思想選取K個聚類中心。假設已經 選取了n個初始聚類中心(0<n<K),則在選取第n+1個聚類中心時,距離當前n個 聚類中心越遠的點會有更高的概率被選爲第n+1個聚類中心。在選取第一個聚類中 心(n=1)時同樣通過隨機的方法。可以說這也符合我們的直覺,聚類中心當然是 互相離得越遠越好。當選擇完初始點後,K-means++後續的執行和經典K均值算法 相同,這也是對初始值選擇進行改進的方法等共同點。

■ ISODATA算法
當K值的大小不確定時,可以使用ISODATA算法。ISODATA的全稱是迭代自 組織數據分析法。在K均值算法中,聚類個數K的值需要預先人爲地確定,並且在 整個算法過程中無法更改。而當遇到高維度、海量的數據集時,人們往往很難準 確地估計出K的大小。ISODATA算法就是針對這個問題進行了改進,它的思想也 很直觀。當屬於某個類別的樣本數過少時,把該類別去除;當屬於某個類別的樣 本數過多、分散程度較大時,把該類別分爲兩個子類別。ISODATA算法在K均值 算法的基礎之上增加了兩個操作,一是分裂操作,對應着增加聚類中心數;二是 合併操作,對應着減少聚類中心數。ISODATA算法是一個比較常見的算法,其缺 點是需要指定的參數比較多,不僅僅需要一個參考的聚類數量Ko,還需要制定3個
閾值。下面介紹ISODATA算法的各個輸入參數。
(1)預期的聚類中心數目Ko。在ISODATA運行過程中聚類中心數可以變 化,Ko是一個用戶指定的參考值,該算法的聚類中心數目變動範圍也由其決定。 具體地,最終輸出的聚類中心數目常見範圍是從Ko的一半,到兩倍Ko。
(2)每個類所要求的最少樣本數目Nmin。如果分裂後會導致某個子類別所包 含樣本數目小於該閾值,就不會對該類別進行分裂操作。
(3)最大方差Sigma。用於控制某個類別中樣本的分散程度。當樣本的分散 程度超過這個閾值時,且分裂後滿足(1),進行分裂操作。
(4)兩個聚類中心之間所允許最小距離Dmin。如果兩個類靠得非常近(即這 兩個類別對應聚類中心之間的距離非常小),小於該閾值時,則對這兩個類進行
合併操作。
如果希望樣本不劃分到單一的類中,可以使用模糊C均值或者高斯混合模型, 高斯混合模型會在下一節中詳細講述。

證明K均值算法的收斂性。

K均值聚類的迭代算法實際上是一種最大期望算法 (Expectation-Maximization algorithm),簡稱EM算法。EM算法解決的是在概率模 型中含有無法觀測的隱含變量情況下的參數估計問題。
EM算法只保證收斂到局部最優解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章