Stanford機器學(xué)習(xí)---第九講. 聚類

原文:http://blog.csdn.net/abcjennifer/article/details/7914952

本欄目(Machine learning)包括單參數(shù)的線性回歸、多參數(shù)的線性回歸、Octave Tutorial、Logistic Regression、Regularization、神經(jīng)網(wǎng)絡(luò)、機器學(xué)習(xí)系統(tǒng)設(shè)計、SVM(Support Vector Machines 支持向量機)、聚類、降維、異常檢測、大規(guī)模機器學(xué)習(xí)等章節(jié)。內(nèi)容大多來自Standford公開課machine learning中Andrew老師的講解和其他書籍的借鑒。(https://class.coursera.org/ml/class/index

第九講. 聚類——Clustering

===============================

(一)、什么是無監(jiān)督學(xué)習(xí)?

(二)、KMeans聚類算法

(三)、Cluster問題的(distortion)cost function

(四)、如何選擇初始化時的類中心

(五)、聚類個數(shù)的選擇

=====================================

(一)、什么是無監(jiān)督學(xué)習(xí)

之前的幾章我們只涉及到有監(jiān)督學(xué)習(xí),本章中,我們通過討論另一種Machine learning方式:無監(jiān)督學(xué)習(xí)。首先呢,我們來看一下有監(jiān)督學(xué)習(xí)與無監(jiān)督學(xué)習(xí)的區(qū)別。

給定一組數(shù)據(jù)(input,target)為Z=(X,Y)。

有監(jiān)督學(xué)習(xí):最常見的是regression?&?classification。

regression:Y是實數(shù)vector。回歸問題,就是擬合(X,Y)的一條曲線,使得下式cost function L最小。

classification:Y是一個finite number,可以看做類標號。分類問題需要首先給定有l(wèi)abel的數(shù)據(jù)訓(xùn)練分類器,故屬于有監(jiān)督學(xué)習(xí)過程。分類問題中,cost function L(X,Y)是X屬于類Y的概率的負對數(shù)。

,其中fi(X)=P(Y=i | X);

無監(jiān)督學(xué)習(xí):無監(jiān)督學(xué)習(xí)的目的是學(xué)習(xí)一個function f,使它可以描述給定數(shù)據(jù)的位置分布P(Z)。 包括兩種:density estimation?&?clustering.

density estimation就是密度估計,估計該數(shù)據(jù)在任意位置的分布密度

clustering就是聚類,將Z聚集幾類(如K-Means),或者給出一個樣本屬于每一類的概率。由于不需要事先根據(jù)訓(xùn)練數(shù)據(jù)去train聚類器,故屬于無監(jiān)督學(xué)習(xí)。

PCA和很多deep learning算法都屬于無監(jiān)督學(xué)習(xí)。

好了,大家理解了吧,unsupervised learning也就是不帶類標號的機器學(xué)習(xí)。

練習(xí):

=====================================

(二)、K-Means聚類算法

KMeans是聚類算法的一種,先來直觀的看一下該算法是怎樣聚類的。給定一組數(shù)據(jù)如下圖所示,K-Means算法的聚類流程如圖:

圖中顯示了Kmeans聚類過程,給定一組輸入數(shù)據(jù){x(1),x(2),...,x(n)}和預(yù)分類數(shù)k,算法如下:

首先隨機指定k個類的中心U1~Uk,然后迭代地更新該centroid。

其中,C(i)表示第i個數(shù)據(jù)離那個類中心最近,也就是將其判定為屬于那個類,然后將這k各類的中心分別更新為所有屬于這個類的數(shù)據(jù)的平均值。

=====================================

(三)、Cluster問題的(distortion)cost function

在supervised learning中我們曾講過cost function,類似的,在K-means算法中同樣有cost function,我們有時稱其為distortion cost function.

如下圖所示,J(C,U)就是我們要minimize的function.

即最小化所有數(shù)據(jù)與其聚類中心的歐氏距離和。

再看上一節(jié)中我們講過的KMeans算法流程,第一步為固定類中心U,優(yōu)化C的過程:

第二步為優(yōu)化U的過程:

這樣進行迭代,就可以完成cost function J的優(yōu)化。

練習(xí):

這里大家注意,回歸問題中有可能因為學(xué)習(xí)率設(shè)置過大產(chǎn)生隨著迭代次數(shù)增加,cost function反倒增大的情況。但聚類是不會產(chǎn)生這樣的問題的,因為每一次聚類都保證了使J下降,且無學(xué)習(xí)率做參數(shù)。

=====================================

(四)、如何選擇初始化時的類中心

在上面的kmeans算法中,我們提到可以用randomly的方法選擇類中心,然而有時效果并不是非常好,如下圖所示:

fig.1. original data

對于上圖的這樣一組數(shù)據(jù),如果我們幸運地初始化類中心如圖2,

fig.2. lucky initialization

fig.3. unfortunate initialization

但如果將數(shù)據(jù)初始化中心選擇如圖3中的兩種情況,就悲劇了!最后的聚類結(jié)果cost function也會比較大。針對這個問題,我們提出的solution是,進行不同initialization(50~1000次),每一種initialization的情況分別進行聚類,最后選取cost function J(C,U)最小的作為聚類結(jié)果。

=====================================

(五)、聚類個數(shù)的選擇

How to choose the number of clusters? 這應(yīng)該是聚類問題中一個頭疼的part,比如KMeans算法中K的選擇。本節(jié)就來解決這個問題。

最著名的一個方法就是elbow-method,做圖k-J(cost function)如下:

若做出的圖如上面左圖所示,那么我們就找圖中的elbow位置作為k的選定值,如果像右圖所示并無明顯的elbow點呢,大概就是下圖所示的數(shù)據(jù)分布:

這種情況下需要我們根據(jù)自己的需求來進行聚類,比如Tshirt的size,可以聚成{L,M,S}三類,也可以分為{XL,L,M,S,XS}5類。需要大家具體情況具體分析了~

練習(xí):

==============================================

小結(jié)

本章講述了Machine learning中的又一大分支——無監(jiān)督學(xué)習(xí),其實大家對無監(jiān)督學(xué)習(xí)中的clustering問題應(yīng)該很熟悉了,本章中講到了幾個significant points就是elbow 方法應(yīng)對聚類個數(shù)的選擇和聚類中心初始化方法,值得大家投入以后的應(yīng)用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容