【轉】機器學習新手必學十大演算法指南
- 深度學習
- 分散式
- 消息系統
- 演算法
- 函數
摘要: 本文為機器學習新手介紹了十種必備演算法:線性回歸、邏輯回歸、線性判別分析、分類和回歸樹、樸素貝葉斯、K-近鄰演算法、學習向量量化、支持向量機、Bagging和隨機森林、Boosting和AdaBoost。
在機器學習中有一種「無免費午餐(NFL)」的定理。簡而言之,它指出沒有任何一個演算法可以適用於每個問題,尤其是與監督學習相關的。
因此,你應該嘗試多種不同的演算法來解決問題,同時還要使用「測試集」對不同演算法進行評估,並選出最優者。
大原則
然而,這些都有一個共同的原則,那就是所有監督機器學習演算法都是預測建模的基礎。
機器學習演算法包括目標函數(f),輸入映射變數(X),生成輸出變數(y):Y=f(X)。這是一個通用的學習任務,希望在給出新案例的輸入變數(X)能預測出(Y)。
最常見的機器學習方式是Y= f(X)的映射來預測新的X,這被稱為預測建模或預測分析。
對於渴望了解機器學習基礎的機器學習新手來說這非常難,那麼下面來為大家介紹數據科學家最常使用的10種機器學習演算法。
1——線性回歸
線性回歸是統計學和機器學習中最著名和最容易理解的演算法之一。
預測建模主要關注如何最小化模型的錯誤或如何做出最準確的預測,而相應的代價是解釋能力的欠缺。我們將從許多不同的領域借用、重用甚至竊取演算法和統計數據,來實現這個目標。
線性回歸是一個方程,通過找到擁有特定權重的被稱為字母係數(B)的輸入變數,來描繪出最適合輸入變數X和輸出變數Y關係的一條線。
線性回歸
可以使用不同的技術從數據中學習線性回歸模型,例如用於普通最小二乘和梯度下降優化的線性代數解。
線性回歸已經存在了200多年,使用這種技術的一些經驗是:儘可能的去除相似變數,並從數據中去除雜訊。
2——邏輯回歸
邏輯回歸是機器學習從統計學領域借鑒的另一種技術。它是解決二進位分類問題的首選方法。
邏輯回歸與線性回歸的相似點在於,兩者目標都是找出每個輸入變數加權的係數值。不同於線性回歸的是,輸出的預測需要用非線性函數的邏輯函數進行變換的。
邏輯函數看起來像一個大S,並將任何值轉換成0到1的範圍內。這是有用的,因為我們可以將邏輯函數的輸出規範成0和1(例如,如果小於0.5,則輸出1),並預測類別值。
邏輯回歸
由於模型的學習方式,邏輯回歸的預測也可以用來求給定數據實例的概率,屬於第0類或第1類。當需要對預測結果做出合理解釋時這非常有用。
與線性回歸一樣,當你刪除與輸出變數無關的屬性和非常相似(相關)的屬性時,邏輯回歸的效果會更好。對於二元分類問題,這是一個快速且有效的模型。
3——線性判別分析
邏輯回歸演算法是傳統的分類演算法,如果你有兩個以上的類,那麼線性判別分析演算法是首選的線性分類技術。LDA的表達式非常直接,由數據統計值組成,為每個類別分別計算。對單個輸入變數來說包括:每個類的平均值、所有類的計算方差。
線性判別分析
線性判別分析計算每個類別的差別值,並對具有最大差別值的類別進行預測。該技術假定數據的分布遵循高斯分布(鐘形曲線),因此在開始分析之前,需要移除數據中的異常值。對於分類預測建模問題來說,這是有效的方法。
4——分類和回歸樹
決策樹是機器學習預測建模的重要演算法。
決策樹模型為二叉樹形式,就是像演算法和數據結構中的二叉樹。每個節點表示一個單獨的輸入變數(x)和該變數上分裂點(假設變數為數值)。
決策樹
樹的葉節點包含用於預測的輸出變數(y),預測從樹榦開始遍歷,直到到達葉節點並輸出葉節點的值。樹的學習速度和預測速度都非常快,並且不需要對數據進行任何的準備。
5——樸素貝葉斯
樸素貝葉斯是一種簡單但功能強大的預測建模演算法。
該模型由兩種類型的概率組成,這兩種概率可以從訓練數據中直接計算:1)每個類別的概率,2)給定每個x值的每個類別的條件概率。計算出來後,就可以用貝葉斯定理對新數據進行預測。當你的數據是實值時,通常採用高斯分布(鐘形曲線),這樣你就可以很容易的估計出這些概率。
貝葉斯定理
樸素貝葉斯之所以被稱為樸素,是因為它假定每個輸入的變數都是獨立的。
6——K-近鄰演算法
KNN演算法是非常簡單有效的,因為KNN的模型是整個訓練數據集表示的。
通過在整個數據集中搜索K個最相似的樣本,並將這些輸出變數進行匯總來預測新的數據點。對於回歸問題,這可能是平均輸出變數,對於分類問題,這可能是模式(或最常見的)類值。
關鍵在於如何確定數據實例之間的相似性。如果你的屬性都是相同的比例(例如都以英寸為單位),最簡單的就是使用Euclidean距離,你可以根據每個輸入變數之間的差異直接計算出一個數字。
K-近鄰演算法
KNN需要大量的內存或空間來存儲所有的數據,但是只有在需要預測時才會執行計算(或學習)。你也可以隨時更新和管理你的訓練實例,以保持預測的準確性。
當有大量的輸入變數時距離或緊密性可能會奔潰,導致演算法性能下降,所以建議只是用那些與預測變數最相關的輸入變數。
7——學習向量量化
K-近鄰演算法的缺點之一是你需要利用整個數據集進行訓練,而學習向量量化演算法(LVQ)是一種人工神經網路演算法,可以讓你選擇訓練實例的個數,並精確地學習這些實例應該是什麼樣的。
L-
學習向量量化
LVQ的表示是一個碼本向量的集合。這些都是在開始時隨機選取,並根據學習演算法的多次迭代對數據集進行總結。在學習之後,這些向量表可以用來做類似K-緊鄰演算法一樣的預測。計算每個碼本向量和新數據實例之間的距離,找到最相似的鄰居(最佳匹配的碼本向量)。然後將最佳匹配單元的類值或(回歸的實際值)作為預測返回。
8——支持向量機
支持向量機可能是最受歡迎的機器學習演算法之一。
超平面是一個分割輸入變數空間的線。在SVM中,可以選擇一個超平面來將輸入變數空間中的點與它們的類(0類或1類)分開。在二維中,你可以將其想像成一條線,假設輸入的所有點都可以被這條線完全隔開。SVM學習演算法可以找到能夠被超平面完美分割類別的係數。
支持向量機
超平面和最近數據點之間的距離被稱為間隔,能夠區分這兩個類的最好或最優的超平面是有最大間隔的直線。這些與定義超平面和分類器構造有關的點成為支持向量。在實踐中,可以使用優化演算法來找到最大化間隔的係數的值。
SVM可能是最強大的分類器之一,值得在你的數據集上嘗試。
9——Bagging和隨機森林
隨機森林是最受歡迎和最強大的機器學習演算法之一。它是一種集成機器學習演算法,稱為Bootstrap聚合或bagging。
Bootstrap是一種強大的統計方法,用於從數據樣本中估計數量。就像一種平均值。你需要從數據中抽取大量樣本,計算平均值,然後再計算所有平均值的平均值,以便更好地估計真實平均值。
在Bagging中,可以用上述相同的方法估計整個數據模型,最常見的是決策樹。選取訓練數據中的多個樣本,然後構建模型。當你需要預測新數據時,每個模型都會做出預測,取平均值後以便更好地估計真實輸出值。
隨機森林
隨機森林是對這種方法的一種調整,通過引入隨機性來實現決策樹的次優分割。因此,針對每個數據樣本創建的模型與其它方式相比會有所不同,但仍然非常精確,結合預測的值可以更好地估計真實的潛在輸出價值。
10——Boosting和AdaBoost
boost是一種集成技術,它試圖從許多弱分類器中創建一個強大的分類器。根據訓練數據構建模型,然後創建第二個模型來糾正第一個模型中的錯誤。直到可以完美的預測模型,或者達到了模型最大量。
AdaBoost是第一個真正成功的用於二進位分類的增強演算法。現代的增強方法都建立在AdaBoost上,最顯著的是隨機梯度增強機。
演演算法
AdaBoost是用於短決策樹的,在創建第一個樹後,通過每個訓練實例上的樹的性能來衡量下一個創建的樹對每個訓練實例分配的權重。難以預測的訓練數據將獲得更多的權重。
依次創建模型後,每個模型都要更新訓練實例上的權重,以確保序列中下一棵樹執行的學習。在所有的樹都建立之後,對新的數據進行預測,每棵樹的性能都取決於它對訓練數據的準確性。
因為大量的注意力都被放在了糾正演算法的錯誤上,所以要有乾淨的數據和離群值。
本文由北郵@愛可可-愛生活 老師推薦,阿里云云棲社區組織翻譯。
文章原標題《A Tour of The Top 10 Algorithms for Machine Learning Newbies》
作者:James Le
譯者:奧特曼,審校:袁虎。
文章為簡譯,更為詳細的內容,請查看原文
推薦閱讀:
※集智:負基礎就能學會的機器學習(二) 無需任何編程基礎
※Machine Learning: 機器學習項目Top 30 (v.2018)
※機器學習基石筆記14:正則化(Regularization)
※機器學習基石筆記2:感知器學習演算法(PLA)
※為什麼我們需要傳統方法?