華文網

適合初學者的TOP10機器學習演算法

1 緒論

“哈佛商業評論”稱ML(Machine Learning)演算法的研究已經獲得了巨大的成就,“資料科學家”是“21世紀最性☆禁☆感的工作”。所以,對於那些剛開始研究ML的人來說,我們決定重新介紹一下非常流行的TOP10的機器學習演算法。

ML演算法是可以從資料中學習並從經驗中改進的演算法,而無需人工干預。學習任務可能包括將輸入映射到輸出的函數,在未標記的資料中學習隱藏的結構,或者“基於實例學習”,通過將實例與庫中的資料比對從而創建新的標籤。

2 ML演算法的類型

有三種ML演算法:

1.監督學習:

監督學習解釋如下:使用標記的訓練資料來學習從輸入變數(X)到輸出變數(Y)的映射函數。

Y = f(X).

監督學習有兩種類型:

a.分類型:預測處於類別形式的給定樣本的輸出結果。例如男性和女性,病態和健康等標籤。

b.回歸型:預測輸出變數為實值形式的給定樣本的結果。例如:表示降雨量和人的身高的實值標籤。

在這篇文章中介紹的前5個演算法 - 線性回歸,Logistic回歸,CART,樸素貝葉斯,KNN都是監督學習的例子。

集成學習是一種監督學習。這意味著要結合多個不同的弱ML模型的來預測新的樣本。

XGBoost就是集成學習的案例。

2.無監督學習:

無監督學習問題只有輸入變數(X),但沒有相應的輸出變數。它使用無標籤的訓練資料來類比資料的基本結構。

無監督學習問題有兩種類型:

B.簇型:對樣本進行分組,使得同一個簇內的物件彼此之間的關係比來另一個簇中的物件更相似。

c.降維型:正如其名稱一樣,維度降低意味著減少資料集變數的數量,同時確保重要的資訊仍可傳達。

可以使用特徵提取方法和特徵選擇方法來完成維度降低,從高維空間到低維空間的進行資料轉換。例如:PCA演算法是一種典型的特徵提取方法。

我們在這裡介紹的演算法6-8是Apriori,K-means,PCA是無監督學習的例子。

3.強化學習:

強化學習也是一種機器學習演算法,通過將獎勵最大化,來巨鼎下一個最佳動作。

強化演算法通常通過反復試驗來學習最佳行為。通常被用於機器人上,機器人可以通過在碰到障礙物後接收負面回饋來學習如何避免碰撞。

以及在視頻遊戲中,通過反復試驗顯示特定的動作激發玩家的獎勵。代理人可以使用這些獎勵來瞭解遊戲的最佳狀態,並選擇下一個動作。

3 衡量ML演算法的流行度

本文中排名前十的演算法都是針對初學者的。

4.監督學習演算法

1)線性回歸

在ML中,我們有一組輸入變數(x)確定的輸出變數(y),輸入變數和輸出變數之間存在著關係,

ML的目標就是量化這種關係。

圖1:線性回歸表示為y = ax + b

在線性回歸中,輸入變數(x)和輸出變數(y)之間的關係表示為y = ax + b的方程。因此,線性回歸的目標就是找出係數a和b的值。這裡,a是截距,b是線的斜率。

圖1顯示了資料集繪製的x和y值。目標是擬合出最接近大部分點的線,這將減少與資料點之間的差值。

2)Logistic回歸

線性回歸預測的是連續的值(例如降雨量),邏輯回歸預測的是離散值(學生是通過/還是失敗)。

邏輯回歸最適合用二元分類(y = 0或1的資料集,1為預設值)。例如:在預測事件是否發生時,發生的事件分類為。在預測人將生病或不生病時,將生病記為1。它是以其使用的變換函數命名的,稱為邏輯函數h(x)= 1 /(1 + e ^ x),它是一個S形曲線。

在邏輯回歸中,輸出的是以缺省類別概率形式出現的(不同于直接生成的線性回歸)。因為這是一個概率,所以輸出結果在0-1的範圍內。輸出(y值)通過對數轉換x值,使用對數函數h(x)= 1 /(1 + e ^ -x)來生成。然後應用一個閾值來強制這個概率進入二元分類。

圖2:用邏輯回歸分析腫瘤是惡性還是良性的。

如果概率h(x)> = 0.5,則被分類為惡性。在圖2中,為了確定腫瘤是否是惡性的,預設變數是y = 1(腫瘤=惡性),x變數可以是腫瘤的量度,例如腫瘤的大小。如圖所示,邏輯函數將資料集的各種x值轉換為0到1之間的一個值。如果概率跨越閾值0.5(水平線示出位置),則腫瘤被判斷為惡性。

可以將邏輯回歸方程P(x)= e ^(b0 + b1 * x)/(1 + e ^(b0 + b1 * x))轉換成ln(p(x)/ 1-p = b0 + b1 * x。

邏輯回歸的目標是通過訓練資料來找到係數b0和b1的值,以減小預測結果與實際結果之間的誤差,這些係數是使用最大似然估計法估計的。

3)CART

分類和回歸樹(CART)是決策樹的一種,包括ID3,C4.5等。

根節點和內部節點都是非終,終節點是葉節點。每個非終節點代表單個輸入變數(x)和該變數上的分裂點;葉節點表示輸出變數(y)。該模型可用於做如下預測:漫遊決策樹到達一個葉節點,並輸出葉節點上的值。

4)樸素貝葉斯

為了計算事件發生的概率,假設已經發生了另一個事件,我們就使用貝葉斯定理。為了計算給定變數值的結果的概率,也就是說,根據我們的先驗知識(d)計算假設(h)為真的概率,我們使用貝葉斯定理如下:

P(h | d)=(P(d | h)* P(h))/ P(d),

在這裡,

P(h | d)=後驗概率。假設h為真的概率為d,其中P(h | d)= P(d1 | h)* P(d2 | h)* ... * P(dn | h)* P(d ),

P(d | h)=可能性。假設h是真的時,資料d的概率;

P(h)=類別先驗概率。假設h的可能性為真(不考慮資料)

P(d)=預測值先驗概率。資料的可能性(與假設無關)

這個演算法被稱為“天真的”,因為它假設所有的變數是相互獨立的,下圖現實世界中的一個天真的假設。

圖4:使用樸素貝葉斯使用變數“天氣”的狀態。

以圖4為例,如果天氣=“陽光”,結果如何呢?

為了確定結果play ='yes'或'no',給定變數weather ='sunny'的值,計算P(yes | sunny)和P(no | sunny)的值,並選擇概率較高的結果。

- > P(yes|sunny)=(P(sunny|yes)* P(yes))/ P(sunny)

=(3/9 * 9/14)/(5/14)

= 0.60.

- > P(no | sunny)=(P(sunny|no)* P(no))/ P(sunny)

=(2/5 * 5/14)/(5/14)

= 0.40

因此,如果天氣=“晴天”,結果是play ='是'。

5)KNN

k-nearest鄰演算法使用整個資料集作為訓練集,而不是將資料集分成訓練集和測試集。

當新的資料實例需要結果時,KNN演算法會遍歷整個資料集,找出距新實例k個最近的實例,或者與新記錄最相似的k個實例,然後輸出均值。 k值由用戶指定。

實例之間的相似度使用歐幾裡德距離和漢明距離等度量來計算。

6)Apriori

圖5:關聯規則X→Y的支援度,置信度和提升的公式

“支持”度量有助於過濾頻繁項目集生成期間要考慮的候選項目集的數量。這個支持措施是由Apriori原則指導的。 Apriori原則規定,如果一個專案集合頻繁,那麼它的所有子集也必須是頻繁的。

7)K-means

K-means是一種反覆運算演算法,它將相似的資料分組到簇中。通過計算k個簇的質心,然後將資料點分配給質心和資料點之間距離最小的簇。

圖6:K-means演算法的步驟資源

步驟1:K-means初始化:

a)選擇K的值。在這裡,我們取k = 3。

b)將每個數據點隨機分配到3個群集中的任何一個。

c) 為每個集群計算集群質心。紅色、藍色和綠色星星表示3個星團中的每一個的質心。

步驟2:將每個觀察結果與群集相關聯:

將每個點重新分配到最近的集群質心。這裡,上面的5個點被分配到藍色質心的群集。按照相同的步驟將點分配給包含紅色和綠色質心的群集。

第3步:重新計算質心:

計算新簇的質心。舊的質心由灰色星星表示,而新的質心是紅色、綠色和藍色星星。

第4步:反覆運算,直到結果不變,然後退出。

重複步驟2-3,直到沒有一個點從一個群集切換到另一個群集。一旦連續兩個步驟沒有切換,退出k-means演算法。

8)PCA

主成分分析法(PCA)通過減少變數的數量來使資料易於探索和視覺化。通過將資料中的最大方差捕獲到一個稱為“主要成分”的軸上的新的坐標系上。每個元件都原始變數的線性組合,並且彼此正交。元件之間的正交性表明這些元件之間的相關性為零。

第一個主成分捕捉資料中最大變化的方向。第二個主要元件捕獲資料中的剩餘變數,但該變數與第一個元件不相關。類似地,所有連續的主成分(PC3,PC4等)捕獲剩餘的方差,每一個都與前一個成分不相關。

圖7:3個原始變數(基因)被簡化為2個稱為主成分(PC)的新變數。

4 集成學習技術

集成意味著通過投票或將多個學習者的平均結果結合起來,來改善結果。在分類過程中使用投票,在回歸過程中使用平均。這個觀點的看法是,學習者的綜合表現比單個學習者的好。

有三種類型的集成演算法:套袋法,提升法和堆疊法。

9)隨機森林(多個學習者)是對袋裝決策樹(單個學習者)的改進

裝袋的第二步是在生成的不同訓練集上使用相同的演算法創建多個模型。在這種情況下,讓我們討論隨機森令。與決策樹不同的是,每個節點被分割成最小化誤差的最佳特徵,在隨機森林中,我們用隨機選擇的特徵來構建最佳分割。隨機性的原因是:在裝袋中,即使決策樹選擇了一個最佳的特徵來分裂,然後以相似的結構和相關的預測結束,但是,在分割一個隨機的特徵子集之後進行裝袋,意味著子樹之間的預測相關性較小。

在每個分割點處要搜索的特徵的數量被指定為隨機森林演算法的參數。

因此,在用隨機森林裝袋時,每棵樹都是使用記錄的隨機樣本構建的,每個分裂是使用預測變數的隨機樣本構建的。

10)借助AdaBoost

a)套袋是一個平行的集合,因為每個模型都是獨立建立的。另一方面,boosting是一個連續的集合,每個模型的建立都是為了糾正前一個模型的錯誤分類。:

b)套袋大多涉及“簡單投票”,通過每個分類器的投票得到最終結果。資料點的大小表明我們已經應用相同的權重將它們分類為一個圓或三角形。決策樹樁在上半部分產生了一條水平線來對這些點進行分類。我們可以看到有2個圓圈錯誤地預測為三角形。因此,我們將為這兩個圈子分配更高的權重,並應用另一個決策樹樁。

在圖9中,步驟1,2,3涉及一個稱為決策殘缺的弱學習者(一個1級決策樹,僅基於1個輸入特徵的值進行預測;一個決策樹,其根部直接連接到其樹葉)。構建弱學習者的過程一直持續到用戶定義數量的弱學習者被構建或者直到訓練時沒有進一步的改進。步驟4結合了模型前3個決策樹(在決策樹中有3個分裂規則)。

步驟1:從決策樹樁1開始,對1個輸入變數做出決定:

資料點的大小表明我們已經應用相同的權重將它們分類為一個圓或三角形。決策樹樁在上半部分產生了一條水平線來對這些點進行分類。我們可以看到有2個圓圈錯誤地預測為三角形。因此,我們將為這兩個圈分配更高的權重,並應用到另一個決策樹樁上。

步驟2:移動到另一個決策樹樹樁,以決定另一個輸入變數:

我們觀察到,上一步的兩個錯誤分類圈的大小大於其餘點。現在,第二個決策樹會試圖正確預測這兩個圓。

分配更高權重之後,這2個圓圈已經被左邊的垂直線正確地分類了。但導致了頂部3個圓圈的錯誤分類。因此,我們將在這三個頂部圓圈分配更高的權重,並應用另一個決策樹樁上。

步驟3:訓練另一個決策樹樹樁來決定另一個輸入變數。

來自上一步的3個錯誤分類圈大於其餘的資料點。 現在,已經生成了一條垂直線,用於分類圓和三角形。

步驟4:結合決策樹樁。

我們已經結合了前3個模型中的分隔符號,並觀察到這個複雜規則的模型與任何一個單獨的弱學習者相比,正確地分類了資料點。

5 結論

回顧一下,我們瞭解到:

5個監督學習技術 - 線性回歸,Logistic回歸,CART,樸素貝葉斯,KNN。

3種無監督學習技術 - Apriori,K-means,PCA。

2個合奏技巧 - 隨機森林裝袋,XGBoost助推。

邏輯回歸最適合用二元分類(y = 0或1的資料集,1為預設值)。例如:在預測事件是否發生時,發生的事件分類為。在預測人將生病或不生病時,將生病記為1。它是以其使用的變換函數命名的,稱為邏輯函數h(x)= 1 /(1 + e ^ x),它是一個S形曲線。

在邏輯回歸中,輸出的是以缺省類別概率形式出現的(不同于直接生成的線性回歸)。因為這是一個概率,所以輸出結果在0-1的範圍內。輸出(y值)通過對數轉換x值,使用對數函數h(x)= 1 /(1 + e ^ -x)來生成。然後應用一個閾值來強制這個概率進入二元分類。

圖2:用邏輯回歸分析腫瘤是惡性還是良性的。

如果概率h(x)> = 0.5,則被分類為惡性。在圖2中,為了確定腫瘤是否是惡性的,預設變數是y = 1(腫瘤=惡性),x變數可以是腫瘤的量度,例如腫瘤的大小。如圖所示,邏輯函數將資料集的各種x值轉換為0到1之間的一個值。如果概率跨越閾值0.5(水平線示出位置),則腫瘤被判斷為惡性。

可以將邏輯回歸方程P(x)= e ^(b0 + b1 * x)/(1 + e ^(b0 + b1 * x))轉換成ln(p(x)/ 1-p = b0 + b1 * x。

邏輯回歸的目標是通過訓練資料來找到係數b0和b1的值,以減小預測結果與實際結果之間的誤差,這些係數是使用最大似然估計法估計的。

3)CART

分類和回歸樹(CART)是決策樹的一種,包括ID3,C4.5等。

根節點和內部節點都是非終,終節點是葉節點。每個非終節點代表單個輸入變數(x)和該變數上的分裂點;葉節點表示輸出變數(y)。該模型可用於做如下預測:漫遊決策樹到達一個葉節點,並輸出葉節點上的值。

4)樸素貝葉斯

為了計算事件發生的概率,假設已經發生了另一個事件,我們就使用貝葉斯定理。為了計算給定變數值的結果的概率,也就是說,根據我們的先驗知識(d)計算假設(h)為真的概率,我們使用貝葉斯定理如下:

P(h | d)=(P(d | h)* P(h))/ P(d),

在這裡,

P(h | d)=後驗概率。假設h為真的概率為d,其中P(h | d)= P(d1 | h)* P(d2 | h)* ... * P(dn | h)* P(d ),

P(d | h)=可能性。假設h是真的時,資料d的概率;

P(h)=類別先驗概率。假設h的可能性為真(不考慮資料)

P(d)=預測值先驗概率。資料的可能性(與假設無關)

這個演算法被稱為“天真的”,因為它假設所有的變數是相互獨立的,下圖現實世界中的一個天真的假設。

圖4:使用樸素貝葉斯使用變數“天氣”的狀態。

以圖4為例,如果天氣=“陽光”,結果如何呢?

為了確定結果play ='yes'或'no',給定變數weather ='sunny'的值,計算P(yes | sunny)和P(no | sunny)的值,並選擇概率較高的結果。

- > P(yes|sunny)=(P(sunny|yes)* P(yes))/ P(sunny)

=(3/9 * 9/14)/(5/14)

= 0.60.

- > P(no | sunny)=(P(sunny|no)* P(no))/ P(sunny)

=(2/5 * 5/14)/(5/14)

= 0.40

因此,如果天氣=“晴天”,結果是play ='是'。

5)KNN

k-nearest鄰演算法使用整個資料集作為訓練集,而不是將資料集分成訓練集和測試集。

當新的資料實例需要結果時,KNN演算法會遍歷整個資料集,找出距新實例k個最近的實例,或者與新記錄最相似的k個實例,然後輸出均值。 k值由用戶指定。

實例之間的相似度使用歐幾裡德距離和漢明距離等度量來計算。

6)Apriori

圖5:關聯規則X→Y的支援度,置信度和提升的公式

“支持”度量有助於過濾頻繁項目集生成期間要考慮的候選項目集的數量。這個支持措施是由Apriori原則指導的。 Apriori原則規定,如果一個專案集合頻繁,那麼它的所有子集也必須是頻繁的。

7)K-means

K-means是一種反覆運算演算法,它將相似的資料分組到簇中。通過計算k個簇的質心,然後將資料點分配給質心和資料點之間距離最小的簇。

圖6:K-means演算法的步驟資源

步驟1:K-means初始化:

a)選擇K的值。在這裡,我們取k = 3。

b)將每個數據點隨機分配到3個群集中的任何一個。

c) 為每個集群計算集群質心。紅色、藍色和綠色星星表示3個星團中的每一個的質心。

步驟2:將每個觀察結果與群集相關聯:

將每個點重新分配到最近的集群質心。這裡,上面的5個點被分配到藍色質心的群集。按照相同的步驟將點分配給包含紅色和綠色質心的群集。

第3步:重新計算質心:

計算新簇的質心。舊的質心由灰色星星表示,而新的質心是紅色、綠色和藍色星星。

第4步:反覆運算,直到結果不變,然後退出。

重複步驟2-3,直到沒有一個點從一個群集切換到另一個群集。一旦連續兩個步驟沒有切換,退出k-means演算法。

8)PCA

主成分分析法(PCA)通過減少變數的數量來使資料易於探索和視覺化。通過將資料中的最大方差捕獲到一個稱為“主要成分”的軸上的新的坐標系上。每個元件都原始變數的線性組合,並且彼此正交。元件之間的正交性表明這些元件之間的相關性為零。

第一個主成分捕捉資料中最大變化的方向。第二個主要元件捕獲資料中的剩餘變數,但該變數與第一個元件不相關。類似地,所有連續的主成分(PC3,PC4等)捕獲剩餘的方差,每一個都與前一個成分不相關。

圖7:3個原始變數(基因)被簡化為2個稱為主成分(PC)的新變數。

4 集成學習技術

集成意味著通過投票或將多個學習者的平均結果結合起來,來改善結果。在分類過程中使用投票,在回歸過程中使用平均。這個觀點的看法是,學習者的綜合表現比單個學習者的好。

有三種類型的集成演算法:套袋法,提升法和堆疊法。

9)隨機森林(多個學習者)是對袋裝決策樹(單個學習者)的改進

裝袋的第二步是在生成的不同訓練集上使用相同的演算法創建多個模型。在這種情況下,讓我們討論隨機森令。與決策樹不同的是,每個節點被分割成最小化誤差的最佳特徵,在隨機森林中,我們用隨機選擇的特徵來構建最佳分割。隨機性的原因是:在裝袋中,即使決策樹選擇了一個最佳的特徵來分裂,然後以相似的結構和相關的預測結束,但是,在分割一個隨機的特徵子集之後進行裝袋,意味著子樹之間的預測相關性較小。

在每個分割點處要搜索的特徵的數量被指定為隨機森林演算法的參數。

因此,在用隨機森林裝袋時,每棵樹都是使用記錄的隨機樣本構建的,每個分裂是使用預測變數的隨機樣本構建的。

10)借助AdaBoost

a)套袋是一個平行的集合,因為每個模型都是獨立建立的。另一方面,boosting是一個連續的集合,每個模型的建立都是為了糾正前一個模型的錯誤分類。:

b)套袋大多涉及“簡單投票”,通過每個分類器的投票得到最終結果。資料點的大小表明我們已經應用相同的權重將它們分類為一個圓或三角形。決策樹樁在上半部分產生了一條水平線來對這些點進行分類。我們可以看到有2個圓圈錯誤地預測為三角形。因此,我們將為這兩個圈子分配更高的權重,並應用另一個決策樹樁。

在圖9中,步驟1,2,3涉及一個稱為決策殘缺的弱學習者(一個1級決策樹,僅基於1個輸入特徵的值進行預測;一個決策樹,其根部直接連接到其樹葉)。構建弱學習者的過程一直持續到用戶定義數量的弱學習者被構建或者直到訓練時沒有進一步的改進。步驟4結合了模型前3個決策樹(在決策樹中有3個分裂規則)。

步驟1:從決策樹樁1開始,對1個輸入變數做出決定:

資料點的大小表明我們已經應用相同的權重將它們分類為一個圓或三角形。決策樹樁在上半部分產生了一條水平線來對這些點進行分類。我們可以看到有2個圓圈錯誤地預測為三角形。因此,我們將為這兩個圈分配更高的權重,並應用到另一個決策樹樁上。

步驟2:移動到另一個決策樹樹樁,以決定另一個輸入變數:

我們觀察到,上一步的兩個錯誤分類圈的大小大於其餘點。現在,第二個決策樹會試圖正確預測這兩個圓。

分配更高權重之後,這2個圓圈已經被左邊的垂直線正確地分類了。但導致了頂部3個圓圈的錯誤分類。因此,我們將在這三個頂部圓圈分配更高的權重,並應用另一個決策樹樁上。

步驟3:訓練另一個決策樹樹樁來決定另一個輸入變數。

來自上一步的3個錯誤分類圈大於其餘的資料點。 現在,已經生成了一條垂直線,用於分類圓和三角形。

步驟4:結合決策樹樁。

我們已經結合了前3個模型中的分隔符號,並觀察到這個複雜規則的模型與任何一個單獨的弱學習者相比,正確地分類了資料點。

5 結論

回顧一下,我們瞭解到:

5個監督學習技術 - 線性回歸,Logistic回歸,CART,樸素貝葉斯,KNN。

3種無監督學習技術 - Apriori,K-means,PCA。

2個合奏技巧 - 隨機森林裝袋,XGBoost助推。