機器學習之10種演算法圖解在這裡!!本篇:(下)非監督式學習篇
二、非監督式學習
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。
獨立成分分析(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 簡化繁瑣的行銷工作?
六個月從工地工人轉職 Java 軟體工程師,全因半年做了「對的決定」
留言列表