26.5 C
Taipei
星期三, 26 10 月, 2022
Home科技新聞AI人工智慧【機器學習懶人包】 10種演算法圖解-從監督式到非監督式學習

【機器學習懶人包】 10種演算法圖解-從監督式到非監督式學習

隨著人工智慧的深入發展,沒有學習能力的 AI 侷限性越發明顯,為了突破這個瓶頸,「機器學習」逐漸成為 AI 領域的研究核心之一,也發展出各種機器學習的演算法。

現在有哪些熱門的算法?各有什麼特點?本次就要來盤點幾大常用的機器學習演算法,並告訴你為何機器學習語言要首選 Python

機器學習演算法大致上可以分為三類:監督式學習(Supervised learning)、非監督式學習(Unsupervised learning)與強化式學習(Reinforcement learning)。

本次將著重介紹「監督式學習」與「非監督式學習」的演算法。

一、監督式學習

監督學習算法可以分成兩個大方向:分類和迴歸。

1. 線性迴歸(Linear Regression)

將線性回歸視覺化

▲ 線性回歸的視覺化,平面內有一系列點,尋找出一條最能擬合資料趨勢分布的線用來預測新的資料出現的位置

線性回歸源自於統計學的方法,通過一個或多個自變量與因變量進行建模的回歸分析。視覺化後如上圖,平面內有一系列點,尋找出一條最能擬合資料趨勢分布的線,也能用來預測新的資料出現的位置,就叫線性回歸。

在線性回歸中,數據使用線性預測函數來建模,並且未知的模型參數也是通過數據來估計,簡單的線性回歸公式為:

線性回歸公式圖

▲ 簡單的線性回歸公式

y 是因變量(y)對自變量(x)任何給定值的預測值;B0 是截距,即 x 為 0 時 y 的預測值;B1 是回歸係數–表示期望 y 隨著 x 的增加而改變多少;x 是自變量(期望的變量影響 y);e 是估計值的誤差,或表示回歸係數估計值有多少變化。

2. 邏輯回歸(Logistic Regression)

邏輯回歸延伸自線性回歸,是一個二元分類算法,透過選取不同的特徵與權重來對樣本進行機率分類。

邏輯回歸會使用某種函數將機率值壓縮到某一特定範圍,如 Sigmoid 函數。S 函數是一種具有 S 形曲線、用於二分類的函數。

邏輯分布函數圖像

▲ 邏輯分布函數圖像(圖片來源:Wikipedia)

邏輯回歸的輸出變量是離散型(Discrete),而「回歸」輸出變量為連續值。所以實際上雖然叫「邏輯回歸」,但它屬於「分類型」算法,而非「回歸型」算法。

3. 支援向量機(Support Vector Machine,SVM)

支援向量機 SVM 同樣是一個二元分類算法,它可以在 N 維空間找到一個 (N-1) 維的超平面,以使兩類數據之間的餘量最大化。這個超平面可以使兩個類別之間的邊距或距離最大化,平面內如果存在線性可分的兩類點,SVM 可以找到一條最適直線將這些點分開。

除了進行線性分類之外,SVM 還可以使用核技巧(kernal trick)進行非線性分類,將其輸入隱式對映到高維特徵空間中。

散點圖展示了線性支援向量機核函式的決策邊界(虛線)

▲ 散點圖展示了線性支援向量機核函式的決策邊界(虛線)(圖片來源:Wikipedia)

SVM 的應用範圍很廣,如文字和超文字的分類、大規模圖像識別與分類、手寫字型的辨識等等。

4. 樸素貝葉斯分類器(Naive Bayes classifier)

「貝葉斯推斷」延伸自貝葉斯理論,是描述在擁有部分已知條件下,某事件的發生機率。

而在機器學習中,樸素貝葉斯分類器是以假設「特徵之間是獨立的、不相互影響的」的簡單機率分類器,可以直接利用條件機率相乘的方法,計算出聯合機率分布。

貝葉斯公式為:

貝葉斯公式

▲ 貝葉斯公式

也可以表示為:

貝葉斯公式

▲ 貝葉斯公式

posterior:通過樣本 X 得到參數 θ 的機率,稱為後驗機率。
likehood:通過參數 θ 得到樣本 X 的機率,即似然函數。通常為數據集的表現。
prior:該樣本 θ 機率,稱為先驗機率。
evidence:樣本 X 發生的機率,即為要預測的值。

即使一般現實世界的資料通常無法滿足貝葉斯理論的假設,但樸素貝葉斯分類器卻是相當實用,因其簡單高效,而辨識效能也不輸許多算法繁複的分類器。貝葉斯模型的應用範圍非常廣泛,大數據、機器學習、資料採擷、資料分析等領域都會見到。

5. 決策樹(Decision Tree)

決策樹原先作為決策分析中的方法,指的是每個決策都可能引出複數的事件,最後通向不同結果,視覺化後的圖形很像樹的枝幹,故稱決策樹。

而在機器學習中,決策樹是一種用來處理分類問題的樹狀結構,每個內部節點表示一個評估欄位,而每個分枝代表一個可能的欄位輸出結果,每個則葉節點代表不同分類的類別標記。

決策樹演算法

▲ 決策樹演算法示意圖

ID3、C4.5 、C5.0、CHAID 及 CART 都是決策樹演算法的代表。

決策樹的主要功能,是藉由分類已知的實例來建立一個樹狀結構,並從中歸納出實例裡、類別欄位與其它欄位間的隱藏規則,也能利用來做樣本的預測,同時決策樹產生的模型也具有易於解釋的優點。

二、非監督式學習

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*的圖示

▲ 實數 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 試圖分離信號源

▲ 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語言:哪個比較適合人工智慧/機器學習?

最新文章

熱門文章