10 個常用機器學習算法

2021-02-15 算法愛好者

(給算法愛好者加星標,修煉編程內功)

來源:機器之心   

本文介紹了 10 大常用機器學習算法,包括線性回歸、Logistic 回歸、線性判別分析、樸素貝葉斯、KNN、隨機森林等。

1. 線性回歸

在統計學和機器學習領域,線性回歸可能是最廣為人知也最易理解的算法之一。

預測建模主要關注的是在犧牲可解釋性的情況下,儘可能最小化模型誤差或做出最準確的預測。我們將借鑑、重用來自許多其它領域的算法(包括統計學)來實現這些目標。

線性回歸模型被表示為一個方程式,它為輸入變量找到特定的權重(即係數 B),進而描述一條最佳擬合了輸入變量(x)和輸出變量(y)之間關係的直線。

線性回歸

例如:y = B0 + B1 * x

我們將在給定輸入值 x 的條件下預測 y,線性回歸學習算法的目的是找到係數 B0 和 B1 的值。

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

線性回歸大約有 200 多年的歷史,並已被廣泛地研究。在使用此類技術時,有一些很好的經驗規則:我們可以刪除非常類似(相關)的變量,並儘可能移除數據中的噪聲。線性回歸是一種運算速度很快的簡單技術,也是一種適合初學者嘗試的經典算法。

2. Logistic 回歸

Logistic 回歸是機器學習從統計學領域借鑑過來的另一種技術。它是二分類問題的首選方法。

像線性回歸一樣,Logistic 回歸的目的也是找到每個輸入變量的權重係數值。但不同的是,Logistic 回歸的輸出預測結果是通過一個叫作「logistic 函數」的非線性函數變換而來的。

logistic 函數的形狀看起來像一個大的「S」,它會把任何值轉換至 0-1 的區間內。這十分有用,因為我們可以把一個規則應用於 logistic 函數的輸出,從而得到 0-1 區間內的捕捉值(例如,將閾值設置為 0.5,則如果函數值小於 0.5,則輸出值為 1),並預測類別的值。

Logistic 回歸

由於模型的學習方式,Logistic 回歸的預測結果也可以用作給定數據實例屬於類 0 或類 1 的概率。這對於需要為預測結果提供更多理論依據的問題非常有用。

與線性回歸類似,當刪除與輸出變量無關以及彼此之間非常相似(相關)的屬性後,Logistic 回歸的效果更好。該模型學習速度快,對二分類問題十分有效。

3. 線性判別分析

Logistic 回歸是一種傳統的分類算法,它的使用場景僅限於二分類問題。如果你有兩個以上的類,那麼線性判別分析算法(LDA)是首選的線性分類技術。

LDA 的表示方法非常直接。它包含為每個類計算的數據統計屬性。對於單個輸入變量而言,這些屬性包括:

線性判別分析

預測結果是通過計算每個類的判別值、並將類別預測為判別值最大的類而得出的。該技術假設數據符合高斯分布(鐘形曲線),因此最好預先從數據中刪除異常值。LDA 是一種簡單而有效的分類預測建模方法。

4. 分類和回歸樹

決策樹是一類重要的機器學習預測建模算法。

決策樹可以被表示為一棵二叉樹。這種二叉樹與算法設計和數據結構中的二叉樹是一樣的,沒有什麼特別。每個節點都代表一個輸入變量(x)和一個基於該變量的分叉點(假設該變量是數值型的)。

決策樹

決策樹的葉子結點包含一個用於做出預測的輸出變量(y)。預測結果是通過在樹的各個分叉路徑上遊走,直到到達一個葉子結點並輸出該葉子結點的類別值而得出。

決策樹的學習速度很快,做出預測的速度也很快。它們在大量問題中往往都很準確,而且不需要為數據做任何特殊的預處理準備。

5. 樸素貝葉斯

樸素貝葉斯是一種簡單而強大的預測建模算法。

該模型由兩類可直接從訓練數據中計算出來的概率組成:1)數據屬於每一類的概率;2)給定每個 x 值,數據從屬於每個類的條件概率。一旦這兩個概率被計算出來,就可以使用貝葉斯定理,用概率模型對新數據進行預測。當你的數據是實值的時候,通常假設數據符合高斯分布(鐘形曲線),這樣你就可以很容易地估計這些概率。

貝葉斯定理

樸素貝葉斯之所以被稱為「樸素」,是因為它假設每個輸入變量相互之間是獨立的。這是一種很強的、對於真實數據並不現實的假設。不過,該算法在大量的複雜問題中十分有效。

6. K 最近鄰算法

K 最近鄰(KNN)算法是非常簡單而有效的。KNN 的模型表示就是整個訓練數據集。這很簡單吧?

對新數據點的預測結果是通過在整個訓練集上搜索與該數據點最相似的 K 個實例(近鄰)並且總結這 K 個實例的輸出變量而得出的。對於回歸問題來說,預測結果可能就是輸出變量的均值;而對於分類問題來說,預測結果可能是眾數(或最常見的)的類的值。

關鍵之處在於如何判定數據實例之間的相似程度。如果你的數據特徵尺度相同(例如,都以英寸為單位),那麼最簡單的度量技術就是使用歐幾裡得距離,你可以根據輸入變量之間的差異直接計算出該值。

K 最近鄰

KNN 可能需要大量的內存或空間來存儲所有數據,但只有在需要預測時才實時執行計算(或學習)。隨著時間的推移,你還可以更新並管理訓練實例,以保證預測的準確率。

使用距離或接近程度的度量方法可能會在維度非常高的情況下(有許多輸入變量)崩潰,這可能會對算法在你的問題上的性能產生負面影響。這就是所謂的維數災難。這告訴我們,應該僅僅使用那些與預測輸出變量最相關的輸入變量。

7. 學習向量量化

KNN 算法的一個缺點是,你需要處理整個訓練數據集。而學習向量量化算法(LVQ)允許選擇所需訓練實例數量,並確切地學習這些實例。

學習向量量化

LVQ 的表示是一組碼本向量。它們在開始時是隨機選擇的,經過多輪學習算法的迭代後,最終對訓練數據集進行最好的總結。通過學習,碼本向量可被用來像 K 最近鄰那樣執行預測。通過計算每個碼本向量與新數據實例之間的距離,可以找到最相似的鄰居(最匹配的碼本向量)。然後返回最匹配單元的類別值(分類)或實值(回歸)作為預測結果。如果將數據重新放縮放到相同的範圍中(例如 0 到 1 之間),就可以獲得最佳的預測結果。

如果你發現 KNN 能夠在你的數據集上得到不錯的預測結果,那麼不妨試一試 LVQ 技術,它可以減少對內存空間的需求,不需要像 KNN 那樣存儲整個訓練數據集。

8. 支持向量機

支持向量機(SVM)可能是目前最流行、被討論地最多的機器學習算法之一。

超平面是一條對輸入變量空間進行劃分的「直線」。支持向量機會選出一個將輸入變量空間中的點按類(類 0 或類 1)進行最佳分割的超平面。在二維空間中,你可以把他想像成一條直線,假設所有輸入點都可以被這條直線完全地劃分開來。SVM 學習算法旨在尋找最終通過超平面得到最佳類別分割的係數。

支持向量機

超平面與最近數據點之間的距離叫作間隔(margin)。能夠將兩個類分開的最佳超平面是具有最大間隔的直線。只有這些點與超平面的定義和分類器的構建有關,這些點叫作支持向量,它們支持或定義超平面。在實際應用中,人們採用一種優化算法來尋找使間隔最大化的係數值。

支持向量機可能是目前可以直接使用的最強大的分類器之一,值得你在自己的數據集上試一試。

9. 袋裝法和隨機森林

隨機森林是最流行也最強大的機器學習算法之一,它是一種集成機器學習算法。

自助法是一種從數據樣本中估計某個量(例如平均值)的強大統計學方法。你需要在數據中取出大量的樣本,計算均值,然後對每次取樣計算出的均值再取平均,從而得到對所有數據的真實均值更好的估計。

Bagging 使用了相同的方法。但是最常見的做法是使用決策樹,而不是對整個統計模型進行估計。Bagging 會在訓練數據中取多個樣本,然後為每個數據樣本構建模型。當你需要對新數據進行預測時,每個模型都會產生一個預測結果,Bagging 會對所有模型的預測結果取平均,以便更好地估計真實的輸出值。

隨機森林

隨機森林是這種方法的改進,它會創建決策樹,這樣就不用選擇最優分割點,而是通過引入隨機性來進行次優分割。

因此,為每個數據樣本創建的模型比在其它情況下創建的模型更加獨特,但是這種獨特的方式仍能保證較高的準確率。結合它們的預測結果可以更好地估計真實的輸出值。

如果你使用具有高方差的算法(例如決策樹)獲得了良好的結果,那麼你通常可以通過對該算法執行 Bagging 獲得更好的結果。

10. Boosting 和 AdaBoost

Boosting 是一種試圖利用大量弱分類器創建一個強分類器的集成技術。要實現 Boosting 方法,首先你需要利用訓練數據構建一個模型,然後創建第二個模型(它企圖修正第一個模型的誤差)。直到最後模型能夠對訓練集進行完美地預測或加入的模型數量已達上限,我們才停止加入新的模型。

AdaBoost 是第一個為二分類問題開發的真正成功的 Boosting 算法。它是人們入門理解 Boosting 的最佳起點。當下的 Boosting 方法建立在 AdaBoost 基礎之上,最著名的就是隨機梯度提升機。

AdaBoost

AdaBoost 使用淺層決策樹。在創建第一棵樹之後,使用該樹在每個訓練實例上的性能來衡量下一棵樹應該對每個訓練實例賦予多少權重。難以預測的訓練數據權重會增大,而易於預測的實例權重會減小。模型是一個接一個依次創建的,每個模型都會更新訓練實例權重,影響序列中下一棵樹的學習。在構建所有的樹之後,我們就可以對新的數據執行預測,並根據每棵樹在訓練數據上的準確率來對其性能進行加權。

由於算法在糾正錯誤上投入了如此多的精力,因此刪除數據中的異常值在數據清洗過程中是非常重要的。

原文連結:https://medium.com/m/global-identity?redirectUrl=https%3A%2F%2Fblog.goodaudience.com%2Ftop-10-machine-learning-algorithms-2a9a3e1bdaff

- EOF -


覺得本文有幫助?請分享給更多人

關注「算法愛好者」加星標,修煉編程內功

好文章,我在看❤️

相關焦點

  • 常用機器學習算法的目前主要有深度學習領域的各種模型及框架
    中國人工智慧四個代表職位之一的「算法工程師」——數據科學家,是近年來在網際網路和人工智慧領域顯示出極大發展潛力的新興職位,是在計算機科學、工程技術等諸多領域中分別涉及的領域內的一個綜合領域。很多初期從事人工智慧相關工作的人,受限於對本專業知識認識有限,在對人工智慧了解尚淺之時,就開始應聘。甚至有人剛開始著手做招聘工作時,就拿數據科學家這個工作的名稱誤導了初入門人工智慧行業的從業者。
  • AI機器學習領域常用的15個術語
    本文整理了一下機器學習領域常用的15個術語,希望可以幫助大家更好的理解這門涉及概率論、統計學、逼近論、凸分析、算法複雜度理論等多個領域的龐雜學科。1. AdaBoost(Adaptive Boosting)AdaBoost是Adaptive Boosting的縮寫。
  • 《機器學習-原理、算法與應用》出版了
    基於深度學習的目標檢測算法綜述用一張圖理解SVM的脈絡深度卷積神經網絡演化歷史及結構改進脈絡理解梯度下降法用一句話總結常用的機器學習算法機器學習算法地圖深度學習算法地圖其他的不再一一列舉。這些文章有一個共同的特點:脈絡清晰,深入淺出,一針見血。
  • 【綜述】介紹這些常用機器學習算法的優缺點
    (Decision Tree Algorithm)回歸(Regression)人工神經網絡(Artificial Neural Network)深度學習(Deep Learning)支持向量機(Support Vector Machine)降維算法(Dimensionality Reduction Algorithms)
  • 如何開啟機器學習?丨算法類型簡介
    機器學習(Machine Learning)
  • Python手寫機器學習最簡單的KNN算法
    摘要:從零開始學習機器學習最簡單的 KNN 算法。今天開始,我打算寫寫機器學習教程。
  • 深度學習最常用的學習算法:Adam優化算法
    正文共6547個字,32張圖,預計閱讀時間17分鐘。聽說你了解深度學習最常用的學習算法:Adam優化算法?-深度學習世界。深度學習常常需要大量的時間和機算資源進行訓練,這也是困擾深度學習算法開發的重大原因。雖然我們可以採用分布式並行訓練加速模型的學習,但所需的計算資源並沒有絲毫減少。
  • 圖解十大經典機器學習算法入門
    圖解十大經典的機器學習算法圖1 智慧型手機上的相關應用傳統的機器學習算法包括決策樹、聚類、貝葉斯分類、支持向量機、EM、Adaboost等等。這篇文章將對常用算法做常識性的介紹,沒有代碼,也沒有複雜的理論推導,就是圖解一下,知道這些算法是什麼,它們是怎麼應用的。
  • Python 手寫機器學習最簡單的 kNN 算法
    本文 3000 字,預計閱讀時間 10 分鐘,建議收藏摘要:從零開始學習機器學習最簡單的 kNN 算法。今天開始,我打算寫寫機器學習教程。說實話,相比爬蟲,掌握機器學習更實用競爭力也更強些。目前網上大多這類教程對新手都不友好,要麼直接調用 Sklearn 包,要麼滿篇抽象枯燥的算法公式文字,看這些教程你很難入門,而真正適合入門的手寫 Python 代碼教程寥寥無幾。最近看了慕課網 bobo 老師的機器學習課程後,大呼過癮,最好的機器學習教程沒有之一。我打算以他的教程為基礎並結合自己的理解,從零開始更新機器學習系列推文。
  • 人工智慧之機器學習算法體系匯總
    > 來源:https://blog.csdn.net/qq_34424731/article/details/76443719本文主要梳理了機器學習算法體系
  • 從淺層模型到深度模型:概覽機器學習優化算法
    該論文從淺層模型到深度模型縱覽監督學習中常用的優化算法,並指出了每一種優化算法的優點及局限性,同時其還包括了一階和二階等各種算法的形式化表達。機器之心主要對本論文選擇性地編譯了優化算法的部分,更詳細的推導及介紹請查看原論文。
  • 藝術家:使用機器學習與量子算法生成其「量子記憶」藝術
    第二屆三年展"NGV Triennial 2020"在這裡舉辦,吸引了全球33個國家和地區、超過100位藝術家和設計師、86個結合當今世界現狀的當代藝術項目。最為吸引人的是,在展覽大廳的10米高寬的電子巨屏所展示的「量子記憶」數據雕塑視頻藝術,給人以無與倫比的美幻視覺享受!藝術家使用機器學習算法與量子算法來產生這些稱為「量子記憶」的視頻藝術品系列。
  • 數據產品必備技術知識:機器學習及常見算法,看這一篇就夠了
    除了這些,數據產品還要懂數據相關的技術,比如說數據倉庫,機器學習數據挖掘,大數據框架或者常用的數據開發工具hadoop、hive、spark等等這些。所以,從某些角度而言,數據產品比其他產品門檻要更高點。本文主要梳理機器學習及常見算法。
  • 【機器學習基礎】8個知識點,圖解K-Means算法
    8個知識點,圖解K-Means算法之前,公眾號分享了關於 KNN算法 的介紹,今天,我們來學習下另一個經典的算法:K-means算法。本文中介紹的是一種常見的無監督學習算法,名字叫做 K 均值算法:K-Means算法。
  • 人工智慧之機器學習ML 學習筆記乾貨
    機器學習(ML)是指通過數據訓練出能完成一定功能的模型,是實現人工智慧的手段之一,也是目前最主流的人工智慧實現方法。人工智慧是科學,機器學習是讓機器變得更加智能的方法或算法。機器學習ML(Machine Learning)是一門人工智慧的學科,一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、算法複雜度理論等多門學科。專門研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的性能。
  • 算法之「算法」:所有機器學習算法都可以表示為神經網絡
    隨後出現了一個又一個新算法,從邏輯回歸到支持向量機。但是眾所周知,神經網絡是算法的算法及機器學習的巔峰。我們可以說,神經網絡是對機器學習的普遍概括,而不是僅僅一次嘗試。與其說神經網絡是簡單的算法,不如說是框架和概念,這是顯而易見的,因為在構建神經網絡時有很大的自由度——比如對於隱藏層&節點個數、激活函數、優化器、損失函數、網絡類型(卷積神經網絡、循環神經網絡等)以及特殊層(批歸一化、隨機失活等)。
  • 聽說你了解深度學習最常用的學習算法:Adam優化算法?
    By蔣思源2017年7月12日  深度學習常常需要大量的時間和機算資源進行訓練,這也是困擾深度學習算法開發的重大原因。雖然我們可以採用分布式並行訓練加速模型的學習,但所需的計算資源並沒有絲毫減少。而唯有需要資源更少、令模型收斂更快的最優化算法,才能從根本上加速機器的學習速度和效果,Adam算法正為此而生!
  • 曼孚科技:AI算法領域常用的39個術語(上)
    算法是人工智慧(AI)核心領域之一。本文整理了算法領域常用的39個術語,希望可以幫助大家更好地理解這門學科。1. Attention 機制Attention的本質是從關注全部到關注重點。它並不特指某種具體的算法,而是一類算法的統稱。Encoder-Decoder 算是一個通用的框架,在這個框架下可以使用不同的算法來解決不同的任務。Encoder-Decoder 這個框架很好的詮釋了機器學習的核心思路:將現實問題轉化為數學問題,通過求解數學問題,從而解決現實問題。
  • 17個機器學習的常用算法!
    應用場景包括分類和回歸,算法包括一些對常用監督式學習算法的延伸,這些算法首先試圖對未標識數據進行建模,在此基礎上再對標識的數據進行預測。如圖論推理算法(Graph Inference)或者拉普拉斯支持向量機(Laplacian SVM.)等。 4.
  • 一文帶你理解Q-Learning的搜索策略,掌握強化學習最常用算法
    王小新 編譯自 Medium量子位 出品 | 公眾號 QbitAIQ-Learning是強化學習中最常用的算法之一。Medium上有篇文章,討論了這種算法的一個重要部分:搜索策略。量子位搬運過來,以下為博客譯文:我們先介紹下有關概念和符號。