新手必看的Top10個機器學習算法 學會了你就是老手
總共有多少機器學習的模型?不知道,沒人統(tǒng)計過,如果加上各種變體的話,那就更加多了去了。想到這個,你頭大不大?那是不是所有都要去學,都要去了解呢?當然不是,不過,下面的這10個算法,如果你是新手的話,一定要去好好學學,搞懂了這些,其他的就是舉一反三的事情了。
在機器學習中,有一個叫做“沒有免費午餐”的定理。簡而言之,它指出,沒有一種算法對每一個問題都是最有效的,它尤其適用于監(jiān)督學習(即預測建模)。
例如,你不能說神經網絡總是比決策樹好,反之亦然。有很多因素在起作用,比如數(shù)據(jù)集的大小和結構。
因此,你應該針對你的問題嘗試許多不同的算法,同時使用一組保留的“測試集”數(shù)據(jù)來評估性能并選擇獲勝者。
當然,你嘗試的算法必須適合你的問題,這就是選擇正確的機器學習任務的原因。打個比方,如果你需要打掃房子,你可以用吸塵器、掃帚或拖把,但你不會拿出鐵鍬開始挖。
大的原則
然而,所有用于預測建模的監(jiān)督機器學習算法都有一個共同的原則。
機器學習算法被描述為學習一個目標函數(shù)(f),該目標函數(shù)將輸入變量(X)映射到輸出變量(Y): Y = f(X)
這是一個一般的學習任務,我們想在給定輸入變量(X)的新樣本下對未來的(Y)進行預測,我們不知道函數(shù)(f)是什么樣子或它的形式,因為如果我們知道的話,我們就直接使用它就完了,我們就不需要使用機器學習算法從數(shù)據(jù)中學習它了。
最常見的機器學習類型是學習映射Y = f(X),對新的X做出Y的預測,這被稱為預測建?;蝾A測分析,我們的目標是盡可能做出最準確的預測。
對于那些渴望了解機器學習基礎知識的機器學習新手來說,以下是數(shù)據(jù)科學家使用的十大機器學習算法的快速介紹。
1 — 線性回歸
線性回歸可能是統(tǒng)計學和機器學習中最著名和最容易理解的算法之一。
預測建模主要關注的是最小化模型的誤差,或者盡可能做出最準確的預測,可以犧牲掉一些可解釋性。我們將從許多不同的領域借用、重用和竊取算法,包括統(tǒng)計學,并將它們用于這些目的。
線性回歸的表示是一個方程,它描述了一條最適合輸入變量(x)和輸出變量(y)之間的關系的直線,通過找出稱為系數(shù)(B)的輸入變量的特定權重。
線性回歸
例如: y = B0 + B1 * x
我們要在給定輸入x的情況下預測y,線性回歸學習算法的目標是找到系數(shù)B0和B1的值。
從數(shù)據(jù)中學習線性回歸模型可以采用不同的技術,如普通最小二乘的線性代數(shù)解和梯度下降優(yōu)化。
線性回歸已有200多年的歷史,并得到了廣泛的研究。使用這種技術時,一些好的經驗法則是刪除非常相似(相關)的變量,如果可能的話,從數(shù)據(jù)中刪除噪聲。這是一種快速、簡單的技術,也是一種很好的首先嘗試的算法。
2 — 邏輯回歸
邏輯回歸是機器學習從統(tǒng)計學領域借用的另一種技術。它是二元分類問題(具有兩個類值的問題)的首選方法。
邏輯回歸與線性回歸相似,其目標是找到每個輸入變量權重系數(shù)的值。與線性回歸不同,輸出的預測是使用一個稱為logistic函數(shù)的非線性函數(shù)進行轉換的。
logistic函數(shù)看起來像一個大S,它將把任何值轉換成0到1的范圍。這很有用,因為我們可以對logistic函數(shù)的輸出應用一個規(guī)則,將值限制到到0和1(例如,如果小于0.5,則輸出1)并預測一個類值。
邏輯回歸
由于模型的學習方式,通過邏輯回歸所做的預測也可以用作給定數(shù)據(jù)實例屬于類0或類1的概率。這對于需要為預測提供更多解釋的問題非常有用。
與線性回歸一樣,當你刪除與輸出變量無關的屬性以及彼此非常相似(相關)的屬性時,邏輯回歸的效果更好。它是一種快速學習和有效解決二元分類問題的模型。
3 — 線性判別分析
邏輯回歸是一種傳統(tǒng)上僅限于兩類分類問題的分類算法。如果你有兩個以上的類,那么線性判別分析算法是首選的線性分類技術。
LDA的表示非常直接,它由數(shù)據(jù)的統(tǒng)計屬性組成,每個類都會計算。對于單個輸入變量,包括:
- 每個類的平均值。
- 所有類計算的方差。
線性判別分析
預測是通過計算每個類的判別值并對最大的類進行預測來實現(xiàn)的。該技術假定數(shù)據(jù)具有高斯分布(鐘形曲線),因此在處理之前從數(shù)據(jù)中刪除離群值是一個好主意。它是一種簡單而強大的分類預測建模方法。
4 — 分類和回歸樹
決策樹是預測建模的一種重要算法。
決策樹模型的表示是一個二叉樹。這就是算法和數(shù)據(jù)結構的二叉樹,沒什么特別的。每個節(jié)點表示單個輸入變量(x)和該變量上的分叉點(假設該變量是數(shù)值型的)。
決策樹
樹的葉節(jié)點包含一個用于進行預測的輸出變量(y)。預測是通過遍歷樹的分割直到到達葉節(jié)點并在該葉節(jié)點輸出類值來完成的。
樹學起來很快,預測起來也很快。它們通常也適用于各種各樣的問題,不需要為數(shù)據(jù)做任何特別的準備。
5 —樸素貝葉斯
樸素貝葉斯算法是一種簡單但功能驚人的預測建模算法。
該模型由兩種概率組成,可以直接從訓練數(shù)據(jù)中計算出來:1)每個類的概率;2)給定每個x值的每個類的條件概率。概率模型一旦計算出來,就可以利用貝葉斯定理對新數(shù)據(jù)進行預測。當你的數(shù)據(jù)是實數(shù)時,通常會假設是高斯分布(鐘形曲線),這樣你就可以很容易地估計這些概率。
貝葉斯定理
樸素貝葉斯之所以被稱為樸素貝葉斯,是因為它假定每個輸入變量都是獨立的。這是一個強烈的假設,對于真實的數(shù)據(jù)來說是不現(xiàn)實的,然而,這項技術對于許多復雜的問題是非常有效的。
6 — K-近鄰
KNN算法非常簡單有效。KNN的模型表示是整個訓練數(shù)據(jù)集。簡單吧?
通過搜索整個訓練集中最相似的K個樣本(鄰居),并匯總K個樣本的輸出,對新的數(shù)據(jù)點進行預測。對于回歸問題,這可能是平均輸出值,對于分類問題,這可能是多數(shù)的(或最常見的)類值。
訣竅在于如何確定數(shù)據(jù)實例之間的相似性。如果你的屬性都是相同的比例(例如,都是英寸),最簡單的方法是使用歐幾里德距離(Euclidean distance),這個數(shù)字可以根據(jù)每個輸入變量之間的差異直接計算。
K-近鄰
KNN可能需要大量內存或空間來存儲所有數(shù)據(jù),但只有在需要預測時才執(zhí)行計算(或學習)。你還可以隨著時間的推移更新和管理你的訓練樣本,以保持預測的準確性。
KNN中的距離或靠近的概念可以分解為非常高的維度(許多輸入變量),這會對算法在問題上的性能產生負面影響。這被稱為維度詛咒。建議你只使用與預測輸出變量最相關的輸入變量。
7 — 學習向量量化
k近鄰的缺點是你需要保留整個訓練數(shù)據(jù)集。學習向量量化算法(簡稱LVQ)是一種人工神經網絡算法,它允許你選擇要掛起多少個訓練樣本,并準確地了解這些樣本應該是什么樣子。
學習向量量化
LVQ的表示是一組碼本向量。這些在開始時是隨機選擇的,并且在學習算法的多次迭代中不斷的自適應的對數(shù)據(jù)集進行最好的總結。經過學習,碼本向量可以像k近鄰一樣進行預測。通過計算每個碼本向量與新數(shù)據(jù)之間的距離,找到最相似的鄰居(最匹配的碼本向量)。然后返回最佳匹配單元的類值或(在回歸情況下的實數(shù)值)作為預測。如果你將數(shù)據(jù)縮放到相同的范圍,例如在0到1之間,則可以獲得最佳結果。
如果你發(fā)現(xiàn)KNN在數(shù)據(jù)集中提供了良好的結果,可以嘗試使用LVQ來減少存儲整個訓練數(shù)據(jù)集的內存需求。
8 — 支持向量機
支持向量機可能是最流行的機器學習算法之一。
超平面是一條分割輸入變量空間的直線。在支持向量機中,選擇超平面是為了根據(jù)類(class 0或class 1)最好地分離輸入變量空間中的點。在二維中,你可以把它想象成一條直線假設所有的輸入點都可以被這條直線完全隔開。支持向量機學習算法通過超平面找到最優(yōu)的分割系數(shù)。
支持向量機
超平面與最近數(shù)據(jù)點之間的距離稱為margin。能夠分隔兩個類的最佳或最優(yōu)超平面是具有最大邊距的直線。只有這些點與超平面的定義和分類器的構造有關。這些點稱為支持向量。它們支持或定義超平面。在實際應用中,采用了一種優(yōu)化算法,求出了使margin最大化的系數(shù)的值。
SVM可能是最強大的開箱即用分類器之一,值得一試。
9 — bagging和隨機森林
隨機森林是目前最流行、最強大的機器學習算法之一。它是一種集成機器學習算法,稱為bootstrap Aggregation或bagging。
bootstrap是一種用于從數(shù)據(jù)樣本中估計量的強大統(tǒng)計方法,例如平均數(shù)。對你的數(shù)據(jù)進行多次的采樣,計算均值,然后求均值的平均值,以便更好地估計真實均值。
在bagging中,使用相同的方法,但用于估計整個統(tǒng)計模型,最常用的是決策樹。獲取訓練數(shù)據(jù)的多個采樣,然后為每個采樣的數(shù)據(jù)集構建模型。當你需要對新數(shù)據(jù)進行預測時,每個模型都會進行預測,并對預測進行平均,以更好地估計真實的輸出值。
隨機森林
Random forest是對這種創(chuàng)建決策樹的方法的一種改進,它不是選擇最優(yōu)的分割點,而是通過引入隨機性來進行次優(yōu)分割。
因此,為每個數(shù)據(jù)集的采樣創(chuàng)建的模型比其他情況下更不同,但時仍然很準確。結合他們的預測,可以更好地估計實際的輸出值。
如果你使用具有高方差的算法(如決策樹)得到了好的結果,那么通??梢酝ㄟ^bagging該算法得到更好的結果。
10 —提升算法和AdaBoost
增強是一種集成技術,它試圖從一些弱分類器創(chuàng)建一個強分類器。通過從訓練數(shù)據(jù)構建一個模型,然后創(chuàng)建第二個模型,試圖糾正第一個模型中的錯誤,這樣來實現(xiàn)。模型不斷的被添加,直到訓練集被完美地預測或者模型的數(shù)量達到了最大。
AdaBoost是第一個真正成功的應用是二元分類的增強算法。這是理解提升算法的最佳起點?,F(xiàn)代的提升算法都是在AdaBoost的基礎上發(fā)展起來的,最著名的是隨機梯度提升算法。
Adaboost
AdaBoost用于短決策樹。在創(chuàng)建第一個樹之后,用這棵樹來計算每個樣本的performance(和label之間的差別),用來衡量下一棵樹將更多的注意哪些樣本。難預測的訓練數(shù)據(jù)被賦予更多的權重,而容易預測的數(shù)據(jù)被賦予較少的權重。模型依次創(chuàng)建,每個模型更新訓練樣本的權重,這些樣本影響序列中下一棵樹執(zhí)行的學習。所有的樹都建好之后,對新數(shù)據(jù)進行預測,每棵樹根據(jù)在訓練數(shù)據(jù)集上的performance來設定權重。
由于算法對錯誤的糾正給予了如此多的關注,因此重要的是要有去除離群值的干凈數(shù)據(jù)。
劃重點,記得帶走
當面對各種各樣的機器學習算法時,初學者通常會問這樣一個問題:”我應該使用哪種算法?“這個問題的答案取決于許多因素,包括:(1)數(shù)據(jù)的規(guī)模、質量和性質;(2)可用計算時間;(三)任務的緊迫性;以及(4)如何處理數(shù)據(jù)。
在嘗試不同的算法之前,即使是經驗豐富的數(shù)據(jù)科學家也無法判斷哪種算法會表現(xiàn)最好。雖然還有許多其他的機器學習算法,但這些是最流行的。如果你是機器學習的新手,那么這將是一個很好的學習起點。
英文原文:https://towardsdatascience.com/a-tour-of-the-top-10-algorithms-for-machine-learning-newbies-dde4edffae11