李宏毅機器學習課程筆記-15.1無監督學習簡介

無監督學習(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,其算法流程如下:

  1. 初始化K個cluster的center:\(c^i,i\in \{1,2,...,K\}\)

    初始化方法可以是從N個樣本中隨機選取K個樣本作爲K個center \(c^i\)的初始值;

    如果不從樣本中選取center的初始值,最終可能會導致部分cluster中沒有樣本。

  2. 遍歷所有樣本\(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\)表示不屬於。

  3. 更新center:把每個cluster裏的所有object取平均值作爲新的center值,即\(c^i=\sum\limits_{x^n}b_i^n x^n/\sum\limits_{x^n} b_i^n\)

  4. 反覆第2步和第3步

HAC

HAC的全稱是Hierarchical Agglomerative Clustering,它是一種層次聚類算法

假設有5個樣本,想要通過HAC進行聚類,其步驟爲:

  1. build a tree:

    過程與哈夫曼樹的建樹過程類似,只不過哈夫曼樹是依據詞頻建樹,而HAC是依據樣本相似度建樹。

    對於所有樣本,兩兩計算相似度並挑出最相似的2個樣本,比如樣本1和2,將樣本點1和2進行merge(比如可以對兩個vector取平均)得到代表這2個樣本的新“樣本”,此時只剩下4個樣本,再重複上述步驟合併樣本直到只剩下一個樣本

  2. pick a threshold

    選取相似度閾值,形象來講就是在已構造的tree上橫着切一刀,切到的每個“樹枝”就是1個cluster,如下圖所示。

    img

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):@絕版臭鹹魚

微信公衆號:@臭鹹魚

轉載請註明出處,歡迎討論和交流!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章