天天看點

Machine Learning 機器學習常見算法

大原則

然而,有一個共同的原則是所有監督機器學習算法的基礎,用于預測模組化。

機器學習算法被描述為學習目标函數(f),其最佳地将輸入變量(X)映射到輸出變量(Y): Y = f(X)

這是一個通用的學習任務,我們希望在未來(Y)中給出預測輸入變量(X)的新例子。我們不知道函數(f)的樣子或形式。如果我們這樣做,我們将直接使用它,我們不需要使用機器學習算法從資料中學習它。

最常見的機器學習類型是學習映射Y = f(X)來預測新X的Y.這稱為預測模組化或預測分析,我們的目标是使最準确的預測成為可能。

對于渴望了解機器學習基礎的機器學習新手,這裡是資料科學家使用的十大機器學習算法的快速浏覽。

1 - 線性回歸

線性回歸可能是統計學和機器學習中最知名且易于了解的算法之一。

預測模組化主要關注最小化模型的誤差或使可能性最準确的預測,但代價是可解釋性。我們将借用,重用和竊取來自許多不同領域的算法,包括統計資料并将其用于這些目的。

線性回歸的表示是通過查找稱為系數(B)的輸入變量的特定權重來描述最符合輸入變量(x)和輸出變量(y)之間關系的線的等式。

線性回歸

例如:y = B0 + B1 * x

我們将在給定輸入x的情況下預測y,并且線性回歸學習算法的目标是找到系數B0和B1的值。

可以使用不同的技術從資料中學習線性回歸模型,例如用于普通最小二乘和梯度下降優化的線性代數解。

線性回歸已經存在了200多年,并且已經被廣泛研究。使用此技術時,一些好的經驗法則是删除非常相似(相關)的變量,并盡可能消除資料中的噪音。這是一種快速而簡單的技術和良好的第一種算法。

2 - Logistic回歸

邏輯回歸是從統計領域的機器學習中借用的另一種技術。它是二進制分類問題的首選方法(具有兩個類值的問題)。

邏輯回歸就像線性回歸一樣,目标是找到權重每個輸入變量的系數的值。與線性回歸不同,使用稱為邏輯函數的非線性函數來轉換輸出的預測。

邏輯函數看起來像一個大S,并将任何值轉換為0到1的範圍。這很有用,因為我們可以将一個規則應用于邏輯函數的輸出,以将值捕捉到0和1(例如IF小于0.5然後輸出1)并預測一個類值。

Logistic回歸

由于學習模型的方式,邏輯回歸所做的預測也可以用作給定資料執行個體屬于0級或1級的機率。這對于需要給出更多基本原理的問題非常有用。一個預測。

與線性回歸一樣,當您删除與輸出變量無關的屬性以及彼此非常相似(相關)的屬性時,邏輯回歸确實更有效。這是一個學習二進制分類問題的快速模型。

3 - 線性判别分析

Logistic回歸是一種傳統上僅限于兩類分類問題的分類算法。如果您有兩個以上的類,則線性判别分析算法是首選的線性分類技術。

LDA的代表非常簡單。它包含資料的統計屬性,為每個類計算。對于單個輸入變量,這包括:

每個班級的平均值。

在所有類别中計算的方差。

線性判别分析

通過計算每個類的判别值并對具有最大值的類進行預測來進行預測。該技術假設資料具有高斯分布(鐘形曲線),是以最好事先從資料中删除異常值。它是分類預測模組化問題的一種簡單而強大的方法。

4 - 分類和回歸樹

決策樹是預測模組化機器學習的一種重要算法。

決策樹模型的表示是二叉樹。這是來自算法和資料結構的二叉樹,沒什麼太花哨的。每個節點表示單個輸入變量(x)和該變量上的分割點(假設變量是數字)。

決策樹

樹的葉節點包含用于進行預測的輸出變量(y)。通過周遊樹的分裂直到到達葉節點并在該葉節點處輸出類值來進行預測。

樹木學習速度快,預測速度非常快。它們通常也可以解決各種問題,并且不需要對資料進行任何特殊準備。

5 - 樸素貝葉斯

Naive Bayes是一種簡單但令人驚訝的強大的預測模組化算法。

該模型由兩種類型的機率組成,可以直接根據您的訓練資料計算:1)每個班級的機率; 2)給出每個x值的每個類的條件機率。一旦計算,機率模型可用于使用貝葉斯定理對新資料進行預測。當您的資料是實值時,通常假設高斯分布(鐘形曲線),以便您可以輕松估計這些機率。

貝葉斯定理

樸素貝葉斯被稱為天真,因為它假設每個輸入變量是獨立的。這是一個強有力的假設,對于實際資料是不現實的,然而,該技術對于大範圍的複雜問題非常有效。

6 - K-Nearest Neighbors

KNN算法非常簡單且非常有效。KNN的模型表示是整個訓練資料集。簡單吧?

通過搜尋K個最相似的執行個體(鄰居)的整個訓練集并總結那些K個執行個體的輸出變量,對新資料點進行預測。對于回歸問題,這可能是平均輸出變量,對于分類問題,這可能是模式(或最常見)類值。

訣竅在于如何确定資料執行個體之間的相似性。如果您的屬性具有相同的比例(例如,以英寸為機關),則最簡單的技術是使用歐幾裡德距離,您可以根據每個輸入變量之間的差異直接計算該數字。

K-Nearest Neighbors

KNN可能需要大量記憶體或空間來存儲所有資料,但僅在需要預測時才進行計算(或學習),及時。您還可以随着時間的推移更新和策劃您的訓練執行個體,以保持預測準确。

距離或接近度的概念可以在非常高的次元(許多輸入變量)中分解,這會對算法在您的問題上的性能産生負面影響。這被稱為次元的詛咒。它建議您僅使用與預測輸出變量最相關的輸入變量。

7 - 學習矢量量化

K-Nearest Neighbors的缺點是你需要堅持整個訓練資料集。學習矢量量化算法(或簡稱LVQ)是一種人工神經網絡算法,允許您選擇要挂起的訓練執行個體數量,并準确了解這些執行個體應該是什麼樣子。

學習矢量量化

LVQ的表示是碼本向量的集合。這些是在開始時随機選擇的,并且适于在學習算法的多次疊代中最佳地總結訓練資料集。在學習之後,可以使用碼本向量來進行與K-Nearest Neighbors類似的預測。通過計算每個碼本矢量和新資料執行個體之間的距離來找到最相似的鄰居(最佳比對碼本矢量)。然後傳回最佳比對單元的類值或(回歸情況下的實際值)作為預測。如果将資料重新縮放到相同範圍(例如0到1之間),則可獲得最佳結果。

如果您發現KNN在您的資料集上提供了良好的結果,請嘗試使用LVQ來降低存儲整個訓練資料集的記憶體要求。

8 - 支援向量機

支援向量機可能是最流行和最受關注的機器學習算法之一。

超平面是分割輸入變量空間的線。在SVM中,選擇超平面以最佳地将輸入變量空間中的點與它們的類(0級或1級)分開。在二維中,您可以将其視為一條線,并假設我們的所有輸入點都可以被這條線完全分開。SVM學習算法找到導緻超平面最好地分離類的系數。

支援向量機

超平面與最近資料點之間的距離稱為邊距。可以将兩個類分開的最佳或最佳超平面是具有最大邊距的線。隻有這些點與定義超平面和分類器的構造有關。這些點稱為支援向量。它們支援或定義超平面。實際上,優化算法用于找到使裕度最大化的系數的值。

SVM可能是最強大的開箱即用分類器之一,值得嘗試使用您的資料集。

9 - 套袋和随機森林

随機森林是最流行和最強大的機器學習算法之一。它是一種稱為Bootstrap Aggregation或bagging的內建機器學習算法。

引導程式是一種用于從資料樣本中估計數量的強大統計方法。比如一個意思。您可以擷取大量的資料樣本,計算平均值,然後平均所有平均值,以便更好地估計真實平均值。

在裝袋中,使用相同的方法,但是用于估計整個統計模型,最常見的是決策樹。擷取訓練資料的多個樣本,然後為每個資料樣本構模組化型。當您需要對新資料進行預測時,每個模型都會進行預測,并對預測進行平均以更好地估計真實輸出值。

随機森林

随機森林是對這種方法的一種調整,其中建立決策樹,使得不是選擇最佳分裂點,而是通過引入随機性來進行次優分割。

是以,為每個資料樣本建立的模型與其他情況相比更加不同,但仍然以其獨特和不同的方式準确。結合他們的預測可以更好地估計真實的基礎産值。

如果使用具有高方差的算法(如決策樹)獲得良好的結果,通常可以通過裝袋算法獲得更好的結果。

10 - Boosting和AdaBoost

Boosting是一種集合技術,試圖從許多弱分類器中建立一個強分類器。這是通過從訓練資料構模組化型,然後建立第二個模型來嘗試從第一個模型中糾正錯誤來完成的。添加模型直到完美預測訓練集或添加最大數量的模型。

AdaBoost是第一個為二進制分類開發的真正成功的增強算法。這是了解助力的最佳起點。現代助推方法建立在AdaBoost上,最着名的是随機梯度增強機。

AdaBoost的

AdaBoost用于短決策樹。在建立第一個樹之後,每個訓練執行個體上的樹的性能用于權重建立的下一個樹應該關注每個訓練執行個體的注意力。難以預測的訓練資料被賦予更多權重,而易于預測的執行個體被賦予更少的權重。模型一個接一個地順序建立,每個模型更新訓練執行個體上的權重,這些權重影響序列中下一個樹所執行的學習。建構完所有樹之後,将對新資料進行預測,并根據訓練資料的準确性對每棵樹的性能進行權重。

因為通過算法如此關注糾正錯誤,是以必須删除帶有異常值的幹淨資料。

最後的外賣

初學者在面對各種各樣的機器學習算法時提出的典型問題是“我應該使用哪種算法?”問題的答案因許多因素而異,包括:(1)尺寸,品質和性質資料的; (2)可用的計算時間; (3)任務的緊迫性; (4)您想要對資料做什麼。

即使是經驗豐富的資料科學家也無法确定哪種算法在嘗試不同的算法之前表現最佳。雖然還有許多其他機器學習算法,但這些算法最受歡迎。如果您是機器學習的新手,這些将是一個很好的學習起點。

繼續閱讀