Stanford機器學習---第九講. 聚類

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

 

本欄目(Machine learning)包括單參數的線性迴歸、多參數的線性迴歸、Octave Tutorial、Logistic Regression、Regularization、神經網絡、機器學習系統設計、SVM(Support Vector Machines 支持向量機)、聚類、降維、異常檢測、大規模機器學習等章節。內容大多來自Standford公開課machine learning中Andrew老師的講解和其餘書籍的借鑑。(https://class.coursera.org/ml/class/index網絡

 

第九講. 聚類——Clusteringdom

 

===============================機器學習

(一)、什麼是無監督學習?學習

(二)、KMeans聚類算法優化

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

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

(五)、聚類個數的選擇設計

 

 

=====================================blog

(一)、什麼是無監督學習


以前的幾章咱們只涉及到有監督學習,本章中,咱們經過討論另外一種Machine learning方式:無監督學習。首先呢,咱們來看一下有監督學習與無監督學習的區別。

 

給定一組數據(input,target)爲Z=(X,Y)。

有監督學習:最多見的是regression & classification。

 

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

 

 

 

  • classification:Y是一個finite number,能夠看作類標號。分類問題須要首先給定有label的數據訓練分類器,故屬於有監督學習過程。分類問題中,cost function L(X,Y)是X屬於類Y的機率的負對數。

 

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

 

無監督學習:無監督學習的目的是學習一個function f,使它能夠描述給定數據的位置分佈P(Z)。 包括兩種:density estimation & clustering.

 

  • density estimation就是密度估計,估計該數據在任意位置的分佈密度
  • clustering就是聚類,將Z彙集幾類(如K-Means),或者給出一個樣本屬於每一類的機率。因爲不須要事先根據訓練數據去train聚類器,故屬於無監督學習。
  • PCA和不少deep learning算法都屬於無監督學習。

 

好了,你們理解了吧,unsupervised learning也就是不帶類標號的機器學習。

練習:

 

 

  

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

(二)、K-Means聚類算法

 

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

 

 

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

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

其中,C(i)表示第i個數據離那個類中心最近,也就是將其斷定爲屬於那個類,而後將這k各種的中心分別更新爲全部屬於這個類的數據的平均值。

 

  

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

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

 

 

在supervised learning中咱們曾講過cost function,相似的,在K-means算法中一樣有cost function,咱們有時稱其爲distortion cost function.

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

即最小化全部數據與其聚類中心的歐氏距離和。

再看上一節中咱們講過的KMeans算法流程,第一步爲固定類中心U,優化C的過程:

第二步爲優化U的過程:

這樣進行迭代,就能夠完成cost function J的優化。

練習:

 

這裏你們注意,迴歸問題中有可能由於學習率設置過大產生隨着迭代次數增長,cost function反倒增大的狀況。但聚類是不會產生這樣的問題的,由於每一次聚類都保證了使J降低,且無學習率作參數。

 

 

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

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

 

在上面的kmeans算法中,咱們提到能夠用randomly的方法選擇類中心,然而有時效果並非很是好,以下圖所示:

fig.1. original data

對於上圖的這樣一組數據,若是咱們幸運地初始化類中心如圖2,

fig.2. lucky initialization

fig.3. unfortunate initialization

但若是將數據初始化中心選擇如圖3中的兩種狀況,就悲劇了!最後的聚類結果cost function也會比較大。針對這個問題,咱們提出的solution是,進行不一樣initialization(50~1000次),每一種initialization的狀況分別進行聚類,最後選取cost function J(C,U)最小的做爲聚類結果。

 

 

 

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

(五)、聚類個數的選擇

 

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

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

 

若作出的圖如上面左圖所示,那麼咱們就找圖中的elbow位置做爲k的選定值,若是像右圖所示並沒有明顯的elbow點呢,大概就是下圖所示的數據分佈:

這種狀況下須要咱們根據本身的需求來進行聚類,好比Tshirt的size,能夠聚成{L,M,S}三類,也能夠分爲{XL,L,M,S,XS}5類。須要你們具體狀況具體分析了~

練習:

 

 

 

 

==============================================
小結
 
本章講述了Machine learning中的又一大分支——無監督學習,其實你們對無監督學習中的clustering問題應該很熟悉了,本章中講到了幾個significant points就是elbow 方法應對聚類個數的選擇和聚類中心初始化方法,值得你們投入之後的應用。
相關文章
相關標籤/搜索