【小宅按】哈佛商業評論稱資料科學家是21世紀最性感的工作。所以,對於那些ML剛剛開始的人來說,這篇部落格機器學習演算法工程師需要知道的十大演算法是非常有用的。

ML演算法是可以從資料中學習並從中改進的演算法,無需人工干預。學習任務可能包括將輸入對映到輸出,在未標記的資料中學習隱藏的結構,或者“基於例項的學習”,其中透過將新例項與來自儲存在儲存器中的訓練資料的例項進行比較來為新例項生成類標籤。

ML演算法的型別

有三種ML演算法:

1.監督學習:

監督學習可以理解為:使用標記的訓練資料來學習從輸入變數(X)到輸出變數(Y)的對映函式。

Y = f(X)

監督學習問題可以有兩種型別:

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

迴歸:預測給定樣本的輸出變數的實值結果。例子包括表示降雨量和人的身高的實值標籤。

在這篇部落格中介紹的前5個演算法——線性迴歸,Logistic迴歸,CART,樸素貝葉斯,KNN都是監督學習。

人工智慧領域的大牛吳恩達曾在他的公開課中提到,目前機器學習帶來的經濟價值全部來自監督學習。

2.無監督學習:

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

無監督學習問題可以有兩種型別:

關聯:發現數據集合中的相關資料共現的機率。它廣泛用於市場籃子分析。例如:如果顧客購買麵包,他有80%的可能購買雞蛋。

群集:對樣本進行分組,使得同一個群集內的物件彼此之間的關係比另一個群集中的物件更為相似。

維度降低:維度降低意味著減少資料集的變數數量,同時確保重要的資訊仍然傳達。可以使用特徵提取方法和特徵選擇方法來完成維度降低。特徵選擇選擇原始變數的一個子集。特徵提取執行從高維空間到低維空間的資料轉換。例如:PCA演算法是一種特徵提取方法。

Apriori,K-means,PCA是無監督學習的例子。

3.強化學習:

強化學習是一種機器學習演算法,它允許代理根據當前狀態決定最佳的下一個動作。

強化演算法通常透過反覆試驗來學習最佳行為。它們通常用於機器人的訓練,機器人可以透過在碰到障礙物後接收負面反饋來學習避免碰撞。近期的alphago zero就是採用的強化學習的方法,來完成實驗的。

監督學習演算法

1.線性迴歸

在ML中,我們有一組輸入變數(x)用於確定輸出變數(y)。輸入變數和輸出變數之間存在某種關係,ML的目標是量化這種關係。

機器學習初學者必須知道的十大演算法

圖一

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

圖1顯示了資料集的繪製x和y值。目標是擬合最接近大部分點的線。

2. Logistic迴歸

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

在邏輯迴歸中,輸出是以預設類別的機率形式出現的。因為這是一個機率,所以輸出在0——1的範圍內。輸出(y值)透過對數轉換x值,使用對數函式h(x)= 1 /(1 + e ^ -x)來生成。然後應用一個閾值來強制這個機率進入二元分類。

機器學習初學者必須知道的十大演算法

圖二

在圖2中,為了確定腫瘤是否是惡性的,預設變數是y = 1(腫瘤=惡性);x變數可以是腫瘤的量度,例如腫瘤的大小。如圖所示,邏輯函式將資料集的各種例項的x值轉換成0到1的範圍。如果機率超過閾值0。5(由水平線示出),則將腫瘤分類如惡性。

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

3. CART

分類和迴歸樹(CART)是決策樹的一個實現方式。

非終端節點是根節點和內部節點,終端節點是葉節點。每個非終端節點表示單個輸入變數(x),葉節點表示輸出變數(y)。該模型用於做出如下預測:遍歷樹的分裂到達一個葉節點,並輸出葉節點上存在的值。

圖3中的決策樹根據年齡和婚姻狀況分類是否購買跑車或小型貨車。如果這個人30多年沒有結婚,我們可以如下預測:“30多年? – >是 – >’已婚? – >不。因此,該模型輸出一個跑車。

機器學習初學者必須知道的十大演算法

圖三

4.樸素貝葉斯

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

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

· P(h | d)=後驗機率。

· P(d | h)=可能性。資料d的機率假設h是真的。

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

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

機器學習初學者必須知道的十大演算法

圖四

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

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

P(是|晴天)=(P(晴天|是)* P(是))/ P(晴天)

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

= 0。60

P(no | sunny)=(P(晴天)* P(no))/ P(晴天)

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

= 0。40

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

5. KNN

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

當新的資料例項需要結果時,KNN演算法遍歷整個資料集,以找到新例項的k個最近的例項,或者與新記錄最相似的k個例項,然後對於分類問題的結果(對於迴歸問題)或模式輸出均值。

例項之間的相似度使用歐幾里德距離和Hamming距離等度量來計算。

無監督學習演算法:

6. Apriori

Apriori演算法用於事務資料庫挖掘,然後生成關聯規則。

它在市場籃子分析中被廣泛使用,在這個分析中,檢查資料庫中經常出現的產品組合。一般來說,我們寫出如果一個人購買專案X,然後他購買專案Y的關聯規則為:X – > Y。

機器學習初學者必須知道的十大演算法

例如:如果一個人購買牛奶和糖,那麼他很可能會購買咖啡粉。這可以寫成關聯規則的形式:{牛奶,糖} – >咖啡粉。

7. K-means

K-means是一種迭代演算法,將相似的資料分組到簇中。

計算k個簇的質心,並將一個數據點分配給質心和資料點之間距離最小的簇。

機器學習初學者必須知道的十大演算法

步驟1:k-means初始化:

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

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

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

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

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

步驟3:重新計算質心:

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

步驟4:迭代,然後退出,如果不變。

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

8. PCA

主成分分析(PCA)用於透過減少變數的數量來使資料易於探索和視覺化。

這是透過將資料中的最大方差捕獲到一個稱為“主要成分”的軸上的新的座標系來完成的。每個元件是原始變數的線性組合,並且彼此正交。元件之間的正交性表明這些元件之間的相關性為零。

機器學習初學者必須知道的十大演算法

第一個主成分捕捉資料中最大變化的方向。第二個主要元件捕獲資料中的剩餘變數,但變數與第一個元件不相關。

9.隨機森林裝袋

隨機森林是對袋裝決策樹(bagged decision trees)改進。

裝袋(Bagging):裝袋的第一步是建立多個模型,使用Bootstrap Sampling方法建立資料集。在Bootstrap Sampling中,每個生成的訓練集由來自原始資料集的隨機子樣本組成。這些訓練集中的每一個與原始資料集大小相同,但有些記錄會重複多次,有些記錄根本不會出現。然後,整個原始資料集被用作測試集。因此,如果原始資料集的大小為N,那麼每個生成的訓練集的大小也是N,測試集的大小也是N。

裝袋的第二步是在不同的生成的訓練集上使用相同的演算法建立多個模型。在這種情況下,讓我們討論隨機森林。與決策樹不同的是,每個節點被分割成最小化誤差的最佳特徵,在隨機森林中,我們選擇隨機選擇的特徵來構建最佳分割。在每個分割點處要搜尋的特徵的數量被指定為隨機森林演算法的引數。

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

10. Boosting with AdaBoost

套袋(Bagging)是一個平行的集合,因為每個模型都是獨立建立的。

另一方面,boosting是一個連續的集合,每個模型的建立是基於糾正前一個模型的錯誤分類。

Adaboost代表Adaptive Boosting。

機器學習初學者必須知道的十大演算法

圖9

在圖9中,步驟1、2、3涉及一個稱為決策殘缺的弱學習者(一個1級決策樹,僅基於1個輸入特徵的值進行預測)。步驟4結合了以前模型的3個決策樹(在決策樹中有3個分裂規則)。

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

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

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

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

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

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

步驟4:合併決策樹:

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

更多精彩內容,請滑至頂部點選右上角關注小宅哦~

機器學習初學者必須知道的十大演算法