Stanford機器學習---第九講 聚類
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
本欄目(Machine learning)包括單引數的線性迴歸、多引數的線性迴歸、Octave Tutorial、Logistic Regression、Regularization、神經網路、機器學習系統設計、SVM(Support Vector Machines 支援向量機)、聚類、降維、異常檢測、大規模機器學習等章節。內容大多來自Standford公開課machine learning中Andrew老師的講解和其他書籍的借鑑。(
第九講. 聚類——Clustering
===============================
(一)、什麼是無監督學習?
(二)、KMeans聚類演算法
(三)、Cluster問題的(distortion)cost function
(四)、如何選擇初始化時的類中心
(五)、聚類個數的選擇
=====================================
(一)、什麼是無監督學習
之前的幾章我們只涉及到有監督學習,本章中,我們通過討論另一種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演算法都屬於無監督學習。
練習:
=====================================
(二)、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 方法應對聚類個數的選擇和聚類中心初始化方法,值得大家投入以後的應用。
關於Machine Learning更多的學習資料將繼續更新,敬請關注本部落格和新浪微博Sophia_qing。