無監督學習(Unsupervised Learning)可以分爲兩類:
- 化繁爲簡
- 聚類(Clustering)
- 降維(Dimension Reduction)
- 無中生有
- 生成(Generation)
在無監督學習(Unsupervised Learning)中,數據集中通常只有\((x,\hat y)\)中的\(x\)或\(\hat y\),其中:
- 化繁爲簡就是把複雜的input變成比較簡單的output,比如把一堆未標註的“樹”圖片轉變爲一棵抽象的“樹”,此時數據集只有input \(x\),而沒有output \(\hat y\)。
- 無中生有就是隨機給模型一個輸入(比如是一個數字),它就會生成不同圖像,此時數據集中沒有input \(x\),而只有output \(\hat y\)
聚類
-
定義
聚類(clustering)就是把"相近"的樣本劃分爲同一類,比如用聚類算法對一些沒有標籤的圖片進行分類,然後人工爲這些類別打上cluster 1、cluster 2、cluster 3的標籤。
-
一個critical的open question
在聚類算法中要分幾個cluster?不能太多也不能太少,需要empirically決定。
-
聚類算法的缺點
它強迫每個樣本屬於並只屬於1個cluster,實際上一個樣本可能擁有多個cluster的特徵,如果強制把它劃分到某個cluster,就會失去很多信息。
如果原先的object是high dimension的,比如image,那現在用它的屬性來描述自身,就可以使之從高維空間轉變爲低維空間,這就是所謂的降維(Dimension Reduction)
K-means
最常用的聚類方法是K-means,其目標爲將N個無標籤樣本\(\{x^1,...,x^n,...,x^N\}\)劃分爲K個cluster,其算法流程如下:
-
初始化K個cluster的center:\(c^i,i\in \{1,2,...,K\}\)
初始化方法可以是從N個樣本中隨機選取K個樣本作爲K個center \(c^i\)的初始值;
如果不從樣本中選取center的初始值,最終可能會導致部分cluster中沒有樣本。
-
遍歷所有樣本\(x^n\)並判斷它屬於哪個cluster
如果\(x^n\)與第i個cluster的center \(c^i\)最“接近”,那\(x^n\)就屬於該cluster;
我們用\(b_i^n=1\)表示樣本\(x^n\)屬於第i個cluster,\(b_i^n=0\)表示不屬於。
-
更新center:把每個cluster裏的所有object取平均值作爲新的center值,即\(c^i=\sum\limits_{x^n}b_i^n x^n/\sum\limits_{x^n} b_i^n\)
-
反覆第2步和第3步
HAC
HAC的全稱是Hierarchical Agglomerative Clustering,它是一種層次聚類算法
假設有5個樣本,想要通過HAC進行聚類,其步驟爲:
-
build a tree:
過程與哈夫曼樹的建樹過程類似,只不過哈夫曼樹是依據詞頻建樹,而HAC是依據樣本相似度建樹。
對於所有樣本,兩兩計算相似度並挑出最相似的2個樣本,比如樣本1和2,將樣本點1和2進行merge(比如可以對兩個vector取平均)得到代表這2個樣本的新“樣本”,此時只剩下4個樣本,再重複上述步驟合併樣本直到只剩下一個樣本
-
pick a threshold
選取相似度閾值,形象來講就是在已構造的tree上橫着切一刀,切到的每個“樹枝”就是1個cluster,如下圖所示。
HAC和K-means的最大區別在於如何決定cluster的數量。K-means中需要人工確定cluster數量,而HAC中需要人工確定相似度閾值。
降維
降維即Dimension Reduction。
引入降維
聚類算法的假設是每個樣本屬於並只屬於1個cluster,但實際上一個樣本可能擁有多個cluster的特徵,如果強制把它劃分到某個cluster,就會失去很多信息。所以可以用一個vector來描述1個樣本,該vector的每一維表示樣本的某一種屬性,這種做法就叫Distributed Representation/Dimension Reduction。
降維作用原理
因爲數據存在冗餘。比如MNIST手寫數字圖片是28×28的matrix,反過來想,一個任意的28×28的matrix轉成圖片看起來應該都不會是個數字,或許我們並不需要這麼大的數據量來描述數字。
如何實現降維
Dimension Reduction就是要找一個function,其輸入是原始的高維特徵\(x\),其輸出是降維後的低維特徵\(z\),其中\(z\)的維度數比\(x\)少。
最簡單的Dimension Reduction是Feature Selection,即直接將高維數據中一些直觀上認爲無效的維度刪除,這樣就做到了降維。但Feature Selection不總是有用,因爲很多情況下每個維度其實都不能被直接刪除,甚至我們不知道哪些維度可以刪除哪些維度不可以刪除。
生成
略
Github(github.com):@chouxianyu
Github Pages(github.io):@臭鹹魚
知乎(zhihu.com):@臭鹹魚
博客園(cnblogs.com):@臭鹹魚
B站(bilibili.com):@絕版臭鹹魚
微信公衆號:@臭鹹魚
轉載請註明出處,歡迎討論和交流!