題:
k均值聚類和PCA之間有什麼關係?
mic
2015-11-24 04:42:12 UTC
view on stackexchange narkive permalink

通常的做法是在聚類算法(例如k均值)之前應用PCA(主要成分分析)。據信,它在實踐中改善了聚類結果(降噪)。

但是,我對PCA和k-means之間的關係進行了比較和深入的研究。例如,Chris Ding和Hexiaofeng He,2004年,基於主成分分析的K-means聚類表明:“主要成分是K-means聚類離散聚類成員指標的連續解”。但是,我很難理解本文,而Wikipedia實際上聲稱這是錯誤的

此外,從PCA幫助的角度來看,這兩種方法的結果有所不同。可以在保留方差的同時減少“特徵”的數量,而聚類通過按期望值/均值(在k均值的情況下)匯總幾個點來減少“數據點”的數量。因此,如果數據集包含$每個具有$ T $功能的N $點,PCA的目的是壓縮$ T $功能,而聚類的目的是壓縮$ N $數據點。

我正在尋找一種通俗易懂的方式來解釋兩者之間的關係這兩種技術+有關這兩種技術的更多技術論文。

聚類也可以視為特徵縮減。在每個樣本中通過其聚類分配表示它們,或對其進行稀疏編碼(因此將$ T $減少為$ k $)。這兩種方法都使數據點的數量保持不變,同時減小了“特徵”尺寸。
五 答案:
amoeba
2015-12-16 22:35:30 UTC
view on stackexchange narkive permalink

的確,K均值聚類和PCA似乎有非常不同的目標,乍一看似乎沒有關聯。但是,正如Ding & He 2004在論文通過主成分分析進行K-均值聚類所述,它們之間存在著深厚的聯繫。

直覺是PCA試圖代表所有 $ n $ span>數據向量都是少量特徵向量的線性組合,並且這樣做是為了最小化均方重構誤差。相反,K-means試圖通過少量簇質心來表示所有 $ n $ span>數據向量,即將它們表示為少量簇質心的線性組合向量,其中線性組合權重必須全部為零,但單個 $ 1 $ span>除外。這樣做也是為了最大程度地減少均方誤差。

因此,K均值可以看作是超稀疏PCA。

Ding &


不幸的是,Ding & He論文包含一些草率的表述(充其量),並且很容易被誤解。例如。他聲稱Ding &似乎證明了K-means聚類解決方案的聚類質心位於 $(K-1)$ span>維PCA子空間中:

定理3.3。群集質心子空間由第一個 $ K-1 $ span>主方向[...]跨越。

對於 $ K = 2 $ span>,這意味著PC1軸上的投影對於一個群集必定為負,而對於另一群集為正,即PC2軸將完美地分隔群集。

這是一個錯誤或一些草率的寫作;無論如何,從字面上看,該特定聲明都是錯誤的。

讓我們從2D中的 $ K = 2 $ span>玩具示例開始。我用相同的協方差矩陣但均值不同的兩個正態分佈生成了一些樣本。然後,我同時運行K-means和PCA。下圖顯示了上面數據的散點圖,並且根據下面的K-means解決方案對相同的數據進行了著色。我還將第一個主要方向顯示為黑線和K均值帶有黑色叉號的類質心。黑色虛線表示PC2軸。使用均一的隨機種子重複K均值 $ 100 $ span>次,以確保收斂到全局最優值。

PCA vs K-means

一個人可以清楚地看到,即使類質心傾向於非常接近第一個PC方向,它們也不會恰好落在該方向上。而且,即使PC2軸在子圖1和圖4中完美地分隔了群集,在子圖2和3中,它的另一側也有一些點。

並且PCA相當不錯,但不完全準確。

那麼丁·艾里普姆·坎普(Ding &)他證明了什麼?為簡單起見,我僅考慮 $ K = 2 $ span>情況。假設分配給每個群集的點數為 $ n_1 $ span>和 $ n_2 $ span>,點 $ n = n_1 + n_2 $ span>。跟隨Ding & He,我們定義集群指標向量 $ \ mathbf q \ in \ mathbb R ^ n $ span>如下: $ i $ span> -th個點屬於聚類1和 $ q_i = \ sqrt {n_2 / nn_1} $ span> =“ math-container”> $ q_i =-\ sqrt {n_1 / nn_2} $ span>(如果它屬於群集2)。群集指示符向量的單位長度為 $ \ | \ mathbf q \ | = 1 $ span>並且“居中”,即其元素總和為零 $ \ sum q_i = 0 $ span>。

Ding &他證明了K均值損失函數 $ \ sum_k \ sum_i(\ mathbf x_i ^ {(k)}-\ boldsymbol \ mu_k)^ 2 $ span>(K-表示算法最小化),其中 $ x_i ^ {(k)} $ span>是 $ i $ span> -th群集 $ k $ span>中的元素可以等效地重寫為 $-\ mathbf q ^ \ top \ mathbf G \ mathbf q $ span>,其中 $ \ mathbf G $ span>是 $ n \ times n $ span>革蘭矩陣所有點之間的標量積: $ \ mathbf G = \ mathbf X_c \ mathbf X_c ^ \ top $ span>,其中 $ \ mathbf X $ span>是 $ n \ times2 $ span>數據矩陣和 $ \ mathbf X_c $ span >是岑 ter>

(注意:我使用的符號和術語與他們的論文略有不同,但我覺得更清楚)。

因此,K均值解決方案 $ \ mathbf q $ span>是最大化 $ \ mathbf q ^ \的居中單位向量。頂部\ mathbf G \ mathbf q $ span>。很容易看出,第一個主成分(當歸一化為具有平方的平方和時)是Gram矩陣的前導特徵向量,即它也是居中的單位向量 $ \ mathbf p $ span>最大化 $ \ mathbf p ^ \ top \ mathbf G \ mathbf p $ span>。唯一的區別是 $ \ mathbf q $ span>另外被約束為只有兩個不同的值,而 $ \ mathbf p $ 沒有此約束。

換句話說,K-means和PCA最大化相同的目標函數,唯一的區別是K-means具有附加的“類別”約束。

有理由認為,大多數情況下,K均值(約束)解決方案和PCA(無約束)解決方案非常接近彼此,因為我們在上面的模擬中看到過,但是不應期望它們是相同的。取 $ \ mathbf p $ span>並將其所有否定元素設置為等於 $-\ sqrt {n_1 / nn_2} $ span>及其對 $ \ sqrt {n_2 / nn_1} $ span>的所有肯定元素,通常會準確地給出

Ding &他似乎很了解這一點,因為他們將其定理表示如下:

定理2.2 。對於其中 $ K = 2 $ span>的K均值聚類,聚類指示符矢量的連續解是[第一]主成分

請注意“連續解決方案”一詞。在證明了該定理之後,他們還評論說PCA可用於初始化K-means迭代,這很有意義,因為我們期望 $ \ mathbf q $ span>接近於 $ \ mathbf p $ span>。但是,仍然需要執行這些迭代,因為它們並不相同。

但是,丁&然後,他繼續為 $ K>2 $開發一種更通用的處理方法。 span>並最終將定理3.3公式化為

定理3.3。群集質心子空間由第一個 $ K-1 $ span>主方向跨越[...]。

我沒有去通過第3節的數學計算,但我相信該定理實際上也指K-means的“連續解”,即其陳述應為“ K-means連續解的聚類質心空間[。 。]“。

Ding &但是,他沒有取得這個重要的限定,並且在其摘要中寫道,

在這裡,我們證明主成分是對...的連續解。用於K均值聚類的離散聚類成員指標。等效地,我們表明,由簇質心跨越的子空間是由以 $ K-1 $ span>項截斷的數據協方差矩陣的譜擴展給出的。

第一句話是絕對正確的,但第二句話不是。 我不清楚這是(很)草率的文字還是真正的錯誤。我非常有禮貌地給兩位作者發了電子郵件,要求澄清。 (兩個月後更新:我再也沒有收到他們的來信。)


Matlab模擬代碼

  figure('Position',[100100 1200 600])n = 50; Sigma = [2 1.8; 1.8 2];對於i = 1:4意味著= [0 0; i * 2 0]; ng(42)
X = [bsxfun(@plus,means(1,:),randn(n,2)* chol(Sigma)); ... bsxfun(@plus,means(2,:),randn(n,2)* chol(Sigma))]; X = bsxfun(@減,X,平均值(X)); [U,S,V] = svd(X,0); [ind,質心] = kmeans(X,2,'Replicates',100); subplot(2,4,i)散點圖(X(:,1),X(:,2),[],[0 0 0])subplot(2,4,i + 4)保持散點圖(X(ind == 1,1),X(ind == 1,2),[],[1 0 0])散點圖(X(ind == 2,1),X(ind == 2,2),[] ,[0 0 1])圖([-1 1] * 10 * V(1,1),[-1 1] * 10 * V(2,1),'k','LineWidth',2)圖(質心(1,1),質心(1,2),``w +'',``MarkerSize'',15,``線寬'',4)圖(質心(1,1),質心(1,2),``k +'' ,'MarkerSize',10,'LineWidth',2)plot(centroids(2,1),centroids(2,2),'w +','MarkerSize',15,'LineWidth',4)plot(centroids(2 ,1),重心(2,2),'k +','MarkerSize',10,'LineWidth',2)圖([-1-1] * 5 * V(1,2),[-1 1] * 5 * V(2,2),'k-')end for i = 1:8 subplot(2,4,i)axis([-8 8 -8 8])axis square set(gca,'xtick', [],'ytick',[])結束 

我只是看了看Ding&He論文。在定理2.2中,他們指出,如果對某些p維數據云進行k均值(k = 2),並且還對數據執行PCA(基於協方差),那麼屬於聚類A的所有點將均為負,在PC1分數上,屬於聚類B的點將為正。有趣的說法-應該在模擬中進行測試。但是,問題在於我認為它假設了全局最優的K-means解。但是我們如何知道所實現的聚類是否最優?
@ttnphns,我已經更新了我的仿真和圖形以更明確地測試此聲明。如果PC1上的投影對於A類和B類為正,為負,則意味著PC2軸應作為它們之間的邊界。在我的4個玩具模擬中,情況非常接近,但是在示例2和3中,在PC2的另一側有幾個問題。關於收斂,我運行了帶有100個重複的`kmeans`函數:它每次選擇一個不同的隨機初始化,然後選擇最佳解決方案,因此它應該確保實現全局最優。
@ttnphns:我想我知道發生了什麼事,請參閱我的更新。
變形蟲,感謝您向我們所有人消化正在討論的文章並提出您的結論(+2);並讓我親自知道!希望幾天后再來閱讀並調查您的答案。但是現在已經很欣賞了。
優秀職位。為什麼使用Matlab而不使用R是有原因的?只是好奇,因為我正在學習ML Coursera課程,而Andrew Ng也使用Matlab,而不是R或Python。這是一般的ML選擇嗎?
@AntoniParellada:謝謝。我完全不了解R,但是已經使用Matlab已有10年了。我的領域是計算神經科學(更具體地說是在ML方向上進行的神經數據分析),實際上Matlab在這裡絕對是標準的。我會說超過90%的人正在使用Matlab。其餘的10%不使用Matlab的人大多使用Python。我從未見過使用R的*神經科學家。據我所熟悉的ML領域,Matlab也很標準,但如今可能使用Python的比例更高(20-30%?)。R也不受歡迎。
很有啟發性……我真的以為網站上的每個人都是R用戶。我嘗試在Octave中運行您的代碼,但似乎`rng`軟件包尚不可用。
@Antoni這很奇怪。rng只是設置隨機種子。您不需要此行即可運行其餘代碼,只需將其刪除即可。奇怪的是,它在八度中不起作用。
shuriken x blue
2015-12-15 08:45:32 UTC
view on stackexchange narkive permalink

PCA和K-means的作用不同。

PCA用於降維/特徵選擇/表示學習,例如當要素空間包含太多無關或多餘的要素時。目的是找到數據的固有維數。

這是一個二維示例,可以推廣到更高維的空間。數據集具有兩個特徵$ x $和$ y $,每個圓都是一個數據點。

enter image description here

在圖像$ v1中$的幅度大於$ v2 $。這些是特徵向量。數據的維數從二維降為一維(在這種情況下,選擇不多),這是通過投影$ v2 $向量的方向來完成的(在旋轉後,其中$ v2 $變為平行或垂直於一個維)的軸)。這是因為$ v2 $與最大方差的方向正交。考慮它的一種方法是將信息損失降至最低。 (因為丟失了一個坐標軸,所以仍然存在損失。)

K-means是一種聚類算法,它基於數據點的相似性返回自然的數據點分組。這是高斯混合模型的特殊情況

在下面的圖像中,數據集具有三個維度。從左側的3D圖可以看出,可以“刪除” $ X $維度而不會丟失太多信息。 PCA用於將數據投影到兩個維度上。在左圖中,還顯示了投影平面。然後,可以在投影數據上使用K-means標記右圖,並用不同的顏色標記不同的組。

enter image description here p在機器學習中的無監督或無監督方法之前,都使用了> PCA或其他降維技術。除了您和我上面提到的原因概述之外,它還用於可視化目的(從更高的維度投影到2D或3D)。

對於這篇文章,我不認為有任何联系,PCA沒有有關數據自然分組的信息,並且對整個數據(而不是子集(組))進行操作。如果某些組可以用一個特徵向量來解釋(僅因為該特定簇沿該方向散佈)只是一個巧合,而不應作為一般規則。

“ PCA旨在壓縮T特徵,而聚類旨在壓縮N個數據點。“

實際上,壓縮是考慮PCA的直觀方法。但是,在K均值中,要描述相對於其簇的每個點,您仍然至少需要相同數量的信息(例如尺寸)$ x_i = d(\ mu_i,\ delta_i)$,其中$ d $是距離, $ \ delta_i $而不是$ x_i $被存儲。而且您還需要存儲$ \ mu_i $才能知道增量相對於什麼。當然,您可以存儲$ d $和$ i $,但是您將無法檢索數據中的實際信息。

集群實際上可以添加信息。我認為這是將數據分成自然的組(不一定是不相交的),而不知道每個組的標籤是什麼意思(嗯,直到您查看組內的數據)。

在圖中,您的PC的標記方式似乎與文本中的相應討論不一致。請注意,儘管PCA通常應用於列,而k-均值應用於行,但兩者*都可以應用於其中之一。我還沒有讀過這篇論文,但是我敢打賭,這就是他們在談論的內容。
抱歉,我的意思是最高數字:即PC的v1和v2標籤。
好點,壓縮數據點組可能很有用(無法弄清楚是做什麼用的)。使用k均值查找組,使用pca將記錄壓縮成更少的記錄。至於功能分組,這實際上可能有用。
那麼,您本質上是在說紙是錯誤的嗎?它明確指出(請參見摘要中的第3和第4句),並聲稱*在數學上證明*有特定的聯繫,而您說沒有聯繫。
我得到的是:PCA改進了K-means集群解決方案。關聯是簇結構嵌入在前K-1個主成分中。這就是貢獻。
Has QUIT--Anony-Mousse
2015-11-25 13:45:06 UTC
view on stackexchange narkive permalink

通常在使用k均值之前變白數據。原因是k均值對比例非常敏感,並且當您具有混合屬性時,不再有“真實”比例。然後,您必須規範化,標準化或變白數據。沒有一個是完美的,但是美白會刪除全局關聯,有時可能會給出更好的結果。 PCA /白化為$ O(n \ cdot d ^ 2 + d ^ 3)$,因為您對協方差矩陣進行了運算。

據我所知,k均值與PCA的關係為不在原始數據上。它是在距離矩陣上使用PCA(具有$ n ^ 2 $個條目,因此進行完整的PCA就是$ O(n ^ 2 \ cdot d + n ^ 3)$-即過高,特別是與k相比-表示$ O(k \ cdot n \ cdot i \ cdot d)$,其中$ n $是唯一的大項),並且可能僅用於$ k = 2 $。 K均值是最小二乘優化問題,PCA也是。 k均值試圖找到數據的最小二乘分區。 PCA找到最小二乘的聚類隸屬度向量。

第一個特徵向量具有最大的方差,因此在此向量上分裂(類似於聚類隸屬度,而不是輸入數據坐標!)意味著在聚類方差之間最大化。通過最大化集群方差,您也可以最小化集群內方差。

但是對於實際問題,這是沒有用的。這只是理論上的興趣。

很高興看到Ding&He論文(與OP鏈接)的更具體的解釋/概述。我本人(現在)還不熟悉它,但是已經看到它提到足夠多的時間了,所以很好奇。
我還沒有詳細閱讀。但是我確實有一種印象,那就是它經常被誤解(儘管如此)。查看有關此關係的Wikipedia段落...
您是說[this](https://zh.wikipedia.org/wiki/Principal_component_analysis#Relation_between_PCA_and_K-means_clustering)?是的,我也遇到過它;我認為這只會增加我的困惑。我希望這將是可以為我澄清的線索...現在,我考慮了一下,也許我應該對此給予賞金。我認為接下來幾天我沒有時間自己研究這個主題。
這個Wiki段落很奇怪。它說Ding&He(2001/2004)既錯又不是新結果!為了證明它不是新的,它引用了2004年的論文(?!)。為了證明這是錯誤的,它引用了2014年的最新論文,甚至沒有引用Ding&He。腥。
也許再次引用垃圾郵件。維基百科充滿自我宣傳。
我想我已經確定了Ding&He的情況,請參閱我的回答。除此之外,關於算法複雜性的論點並不完全正確,因為您將$ n \ times n $矩陣的完整特徵向量分解與僅提取$ k $ K均值“分量”進行了比較。那不是一個公平的比較。如果您對PCA使用某種迭代算法並且僅提取$ k $組件,那麼我希望它的工作速度與K-means一樣快。因此,我不確定說它對實際問題是沒有用的,只是具有理論意義的,是不正確的。
恭喜,您的回答很好(+1)。PCA的迭代近似值可能需要花費很多迭代,因此它將類似於$ O(n \ cdot d ^ 2 + d ^ 2 \ cdot k \ cdot i)$,且數據中包含非負$ i $ IIRC空間。
r poon
2017-11-16 19:06:19 UTC
view on stackexchange narkive permalink

PCA和KMeans的直觀關係

  1. 從理論上講,PCA維度分析(第一個K維度保留了90%的方差...不需要與K Means聚類有直接關係),但是使用PCA的價值來自 a)考慮到我們分析的對象的性質趨於自然地圍繞其主要組成部分(年齡,性別)(或某些部分)自然地聚類/演化,因此需要進行實際考慮。 b)PCA消除了那些低方差維度(噪聲),因此它本身通過關注那些關鍵維度來增加了價值(並形成了類似於聚類的感覺) 簡單來說,就像X-Y軸可以幫助我們以更先進的方式掌握任何抽象的數學概念。

  2. K表示嘗試最小化給定K的群集中的總距離

  3. 對於具有N個維度參數的一組對象,默認情況下,相似的對象將具有MOST參數“相似”,但有一些關鍵區別(例如,一群年輕的IT學生,年輕的舞者,人類……將具有一些高度相似的功能(較低的方差),但一些關鍵特徵仍然相當多樣化,捕獲那些“關鍵主要成分”本質上可以捕獲大部分方差,例如顏色,居住區域...。因此,如果我們忽略那些較小差異的特徵,則失真較小轉換為低端PC不會損失太多信息
  4. 因此,將它們組合在一起以查看差異(變異)是“非常可能”和“非常自然的”,這對於數據評估是有意義的 (例如,如果您每週在大街上進行1,000次調查,則根據PC的種族,年齡或教育背景將其匯總起來) 在K Means的任務下,我們嘗試建立一定數量的K,以使(集群中的)這些組元素在質心之間的整體距離最小(最小),同時建立和運行K集群的成本最佳(每個集群成員作為集群是沒有意義的,因為維護成本太高而且沒有價值)
  5. K均值分組可以很容易地“目視檢查”為最佳,如果該K沿主要成分排列(例如,如果對於不同年齡,種族/地區的人群,他們傾向於表達相似的觀點,因此,如果將那些基於這些PC的調查,然後達到最小化目標(參考資料1) 另外,這些PC(種族,年齡,宗教信仰等)通常是正交的,因此通過查看PCA可以在視覺上區分
  6. 但是,這種直觀的推論導致了充分但不是必要的條件。 (參考文獻2:但是,PCA是k均值聚類的一種有用的放鬆並不是一個新的結果(例如,參見[35]),並且很容易發現關於跨度聚類質心子空間的陳述的反例。根據主要指示。[36])
  7. ol>

    基於/沿CP選擇集群可能會輕鬆地導致舒適的分配機制

    如果x是沿X軸的第一台PC,則可能是一個示例: (......... CC1 ...... CC2 ............ CC3 X軸) X軸表示捕獲了超過9X%的方差,並且說是唯一的PC

    6。最後,在完成K均值後,PCA還可用於可視化(參考4)

    如果PCA顯示*我們的K聚類結果是正交或接近的,則表明我們的聚類是健全的,每個聚類都表現出獨特的特徵

    (*由於PCA定義上發現/顯示了這些主要尺寸(從1D到3D),因此說K(PCA)可能會捕獲絕大多數的方差。

    因此,PCA既可用於可視化和確認良好的聚類,又可用於確定K Means聚類的本質上有用的元素-在K Means之前使用。

    參考:

    1. https://msdn.microsoft.com/en-us/library/azure/dn905944.aspx
    2. https://en.wikipedia.org/wiki/Principal_component_analysis
    3. 使用主成分分析進行聚類:老年人自動殘廢(Comes & Azema)的應用
    4. http://cs229.stanford.edu/notes/cs229-notes10.pdf吳彥祖
    5. ol>
Dan Feldman
2018-07-02 12:37:25 UTC
view on stackexchange narkive permalink

在O(k / epsilon)低秩近似上求解k均值(即,像PCA一樣,投影在第一個最大的奇異矢量的跨度上)將產生乘數為(1 +ε)的近似錯誤。

特別是,在最大的k向量上投影會產生2近似值。

實際上,任何k個中心集的平方距離之和可以通過此投影近似。然後,我們可以根據縮減後的數據計算核集,以將輸入減少到近似等於該總和的poly(k / eps)點。

請參閱: Dan Feldman,Melanie Schmidt,Christian Sohler: 將大數據變成小數據:用於k均值,PCA和投影群集的恆定大小核心集。SODA 2013:1434-1453



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...