十種機器學習演算法圖解-非監督式學習篇

十種機器學習演算法圖解-非監督式學習篇

十種機器學習演算法圖解-非監督式學習篇
十種機器學習演算法圖解-非監督式學習篇

機器學習中的監督式演算法在上篇都整理給你了,這篇把非監督式學習也整理給你~

二、非監督式學習

1. 隨機森林(Random Forest)

隨機森林可以視為決策樹的延伸,可以把隨機森林當作是多個決策樹組合而成,並加入隨機分配的訓練資料,以大幅增進最終的運算結果。其想法就是結合多個「弱學習器」(即決策樹)來建構一個「強學習器」模型。這種方法被稱為「集成」(Ensemble Method)。同時也能降低單個決策樹出錯的風險。

 

▲ 決策樹演算法示意圖

 

例如若創建一個隨機森林模型預測數值,只有第三個決策樹預測為 0,但是如果整合所有決策樹的結果,將會判斷出預測值是為 1。

隨機森林的優點,就是可以處理大量的輸入變數,同時計算各例中的親近度,這點對於資料探勘、偵測離群點和將資料視覺化非常有用。

 

2. 聚類分析(Cluster analysis)

聚類分析是統計資料分析的技術,後來在如機器學習等領域受到廣泛應用。「聚類」是把相似的物件通過靜態分類,分成不同的組別或子集(subset)。聚類有很多種方法,常見的如 K-means、層次聚類(Hierarchical clustering)、譜聚類(Spectral Clustering)等等。

▲ 「聚類」是把相似的物件通過靜態分類,分成不同的組別或子集 (圖片來源: geeksforgeeks.org)

 

聚類時,需要實現的目標只是要把相似的東西聚到一起,一個聚類算法只需要知道如何計算相似度就可以開始分類,因此聚類算法並不需要使用訓練資料進行學習。

 

3. 主成分分析(Principal Component Analysis,PCA)

主成分分析 PCA 是一個在機器學習與統計學領域中被廣泛用來分析資料、降低數據維度以及去關聯的線性降維方法。降維(Dimension reduction)是當資料維度數(變數)很多的時候,嘗試讓維度數(變數)少一點,但資料特性不會差太多的方法。

機器學習使用 PCA 達到降維的目的,主要是為了避免「維數災難」,或稱「維度詛咒」,指當維度增加時,分析和組織高維空間因體積指數增加而遇到各種問題:在機器學習問題中,模型預測能力會隨著維度的增加而減小。

 

4. 奇異值分解(Singular Value Decomposition,SVD)

奇異值分解 SVD 是線性代數中一種重要的矩陣分解,不光可以用於降維演算法中的特徵分解,還可以用於推薦系統以及自然語言處理等領域。

▲ 實數 2×2 矩陣 M 的奇異值分解 UΣV * 的圖示。(圖片來源:圖片來自 Wikipedia)

 

SVD 矩陣是一個複雜的實復負數矩陣,給定一個 m 行、n 列的矩陣 M,則 M 矩陣可以分解為 M = UΣV。U 和 V 是么正矩陣(unitary matrix),Σ 為對角陣。

SVD 在某些時候可以做為簡化版的 PCA 利用。PCA 演算法可以不用做特徵分解,而是做 SVD 來完成,在樣本量很大的時候很有效。實際上 Python 的免費機器學習庫「scikit-learn」的 PCA 演算法的背後真正的實現就是用 SVD。

 

5. 獨立成分分析(Independent components analysis,ICA)

ICA 是一種利用統計原理進行計算的方法。前面在主成分分析(PCA)時談到「降維」的方法,但對符合高斯分佈的樣本點比較有效,那麼對於其他分佈的樣本,則是適合用「主元分解」的 ICA。

ICA 會假設現有資料其實是多個彼此獨立的資料、經過混合後成為現有資料,因此期望能夠從手中的資料,回推出是哪些獨立的分配。例如 ICA 的經典問題「雞尾酒會問題」(cocktail party problem):描述給定混合信號,如何分離出雞尾酒會中同時說話的每個人的獨立信號。

▲ ICA 的經典問題「雞尾酒會問題」示意圖:目的是從混合信號 Mixture1 和 Mixture2 中恢復成每個人的獨立信號 Person1和Person2。(圖片來源:vocal.com)

 

 

ICA 是研究盲信號分離(blind signal separation)的一個重要方法,並且在實際中也有很多應用。

 

為何 Python 學機器學習更合適、而不是 R 語言?

介紹完當今應用最廣泛、最熱門的幾大機器學習演算法,我們可以看出來,從數據分析、統計分析到模型驗證等等都應用在其中。

Python 簡潔易學,原本就適合作為第一個入門的程式語言,而透過如 scikit-learn 的 Python 機器學習套件,在 Python 中提供大量常見的機器學習演算法和許多實用的函式庫,亦能呈現該演算法資料輸出的型態,相當方便。

當然 Python 和 R 語言不是互斥,許多工程師也是在兩者之間切換,但是有鑑於 Python 是當今的通用語言,除了AI人工智慧領域外也可以廣泛應用在各種領域,其免費及開源的特性, 有許多支持 Python 的輔助工具、大型模組與函式庫,可以簡單上手數據分析或複雜的程式計算,以及能與幾乎所有現代作業系統兼容等的特點,讓它脫穎而出。

以投資報酬率而言,若需要選擇一種程式語言學習當作新合適的開始,Python 絕對是你的最佳的選擇!

推薦閱讀:Python vs R語言:哪個比較適合人工智慧/機器學習?

 

本篇為下篇,上篇請點此連結

 

延伸閱讀:

十種機器學習演算法圖解-監督式學習篇

想了解Python,這篇是你必讀的文章分析!

24個對Python初學者的中肯建議,你敢不聽嗎?

Python vs R語言:哪個比較適合人工智慧/機器學習?

人工智慧釀酒超越人類 全球首支AI威士忌勇奪金牌

捷克新創Resistant.AI 開發2產品 揪出欺騙人工智慧的詭計

AI 人工智慧、ML 機器學習、深度學習、Python 是什麼?

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料