1. 程式人生 > >一文讀懂聚類

一文讀懂聚類

我們不管是做分類還是迴歸,我們拿到的資料都是(x,y)這麼一對資料,也就是(x_{1},y_{1}),(x_{2},y_{2}),......,(x_{n},y_{n}),我們那到是的是這麼一堆資料,我們不管是建立什麼樣的模型,比如說是f(x,\theta ),引數是\theta,然後再與實際值ý帶進損失函式求一個損失L(f(x,\theta ),y),我們去學這模型\theta是一個什麼東西,我們最後把f(x,\theta )學到了,我們帶入一個f(x_{i},\theta )得到一個值y_{i},這個y_{i}要使它與實際的那個ý儘量的接近的,這就是我們的目的。而這樣一個東西,帶標記,帶類別或者是帶值的,這是一個有監督的學習。

但有些時候我們沒有這y,只有x的時候,我們也能不能對這個資料根據它的相似性,就是根據X自身的相似性將資料分成若干個部分呢?這樣就叫做無監督,而聚類是最重要的無監督。

而事實上呢,我們不妨這樣來想,假如說我們現在拿到了這樣一堆資料(x_{1},x_{2},......,x_{m})

,而x_{1}......x_{m}都是Ñ維的,其實這個資料就是一個m行ñ列的矩陣。如果說我們通過聚類的方式,就是讓x_{1}......x_{m}屬於不同的類別,這樣的一個類別就叫做簇。我們說這些資料分到哪一個簇裡邊了,比如我們把x_{1}......x_{m}分到ķ個簇裡邊,比如分到第三個簇裡邊了,我們不妨把它標記為...... 101總共ķ個數值,m個都分一下不就把原來的m行ñ列的樣本變成了m行ķ列的資料,一般來說ķ<n,因此這樣一個東西就可以叫做降維。因此我們有些時候不管說它是一個聚類也好,說它是個降維也好,都往往指的是無監督的對x自相似性的一種變換。

我們再舉個很有趣的例子,大家還記得PCA這麼做的嗎?我們現在有一個m行n列的x,而X^{T}X是一個Ñ階方陣。如果要去求它的特徵值和特徵

向量(\mu ,\lambda )把它的每一個(\mu _{1}......\mu _{n})這些特徵值拿出來得到一個矩陣U,那U^{T}(X^{T}X)U這樣一個東西就變成了對角陣。那如此一來我們取U的前ķ個特徵值U1 ......U_{n},這不就是所謂的PCA嘛。我們在裡邊仍然是把這ñ乘n,本來是ñ個特徵,我們最後選出來了ķ個特徵,所以說PCA的工作就只有X,沒有ÿ的事兒嘛,所以說PCA是一個降維。

聚類的定義:聚類就是對大量未標註的資料集按資料的內在相似性將資料集劃分為多個類別,使類別內的資料相似度較大而類別間的資料相似度較小。

例如協同過濾,就是做推薦系統的協同過濾,協同過濾其實本質上是一個無監督的學習方式,只有若干個使用者和若干個商品的這樣一個矩陣,而且它還有可能是稀疏的。我們通過讓大量的使用者齊心協力共同把那個喜好的商品給過濾出來,齊心協力做一個過濾嘛,簡稱協同過濾。

在根據相似性來做聚類的時候,第一步就是如何來度量這個相似性,相似性的最為簡單的方式就是歐式距離。