機器學習萌新必學的Top10算法

2020-12-05 量子位

原作 James Le

Root 編譯自 KDuggets

量子位 報導 | 公眾號 QbitAI

在機器學習領域裡,不存在一種萬能的算法可以完美解決所有問題,尤其是像預測建模的監督學習裡。

比方說,神經網絡不見得比決策樹好,同樣反過來也不成立。

最後的結果是有很多因素在起作用的,比方說數據集的大小以及組成。

所以,針對你要解決的問題,最好是嘗試多種不同的算法。並借一個測試集來評估不同算法之間的表現,最後選出一個結果最好的。

當然,你要選適合解決你問題的算法來嘗試。

比方說,要打掃房子,你會用真空吸塵器,掃把,拖把;你絕對不會翻出一把鏟子來開始挖坑,對吧。

大的原則

不過呢,對於所有預測建模的監督學習算法來說,還是有一些通用的底層原則的。

機器學習算法,指的是要學習一個目標函數,能夠儘可能地還原輸入和輸出之間的關係。

然後根據新的輸入值X,來預測出輸出值Y。精準地預測結果是機器學習建模的任務。

So,Top10機器學習算法,了解一下。

線性回歸

統計學與機器學習領域裡研究最多的算法。

做預測建模,最重要的是準確性(儘可能減小預測值和實際值的誤差)。哪怕犧牲可解釋性,也要儘可能提高準確性。

為了達到這個目的,我們會從不同領域(包括統計學)參考或照搬算法。

線性回歸可用一條線表示輸入值X和輸出值Y之間的關係,這條線的斜率的值,也叫係數。

比方說,y = B0 + B1*x

我們就可以根據X值來預測Y值。機器學習的任務就是找出係數B0和B1。

從數據中建立線性回歸的模型有不同的方法,比方說線性代數的最小二乘法、梯度下降優化。

線性回歸已經存在了200多年,相關研究已經很多了。用這個算法關鍵在於要儘可能地移除相似的變量以及清洗數據。

對算法萌新來說,是最簡單的算法了。

2.邏輯回歸

這方法來自統計學領域,是一種可以用在二元分類問題上的方法。

邏輯回歸,和線性回歸相似,都是要找出輸入值的係數權重。不同的地方在於,對輸出值的預測改成了邏輯函數。

邏輯函數看起來像字母S,輸出值的範圍是0到1。

把邏輯函數的輸出值加一個處理規則,就能得到分類結果,非0即1。

比方說,可以規定輸入值小於0.5,那麼輸出值就是1。

△邏輯回歸

這個算法還可以用來預測數據分布的概率,適用於需要更多數據論證支撐的預測。

和線性回歸相似,如果把和輸出不相干的因子或者相近的因子剔除掉的話,邏輯回歸算法的表現會更好。

對於二元分類問題,邏輯回歸是個可快速上手又有效的算法。

3.線性判別分析

邏輯回歸算法,只能用於二分問題。

當輸出的結果類別超過兩類的時候,就要用線性判別分析算法了。

這種算法的可視化結果還比較一目了然,能看出數據在統計學上的特徵。這上面的結果都是分別計算得到的,單一的輸入值可以是每一類的中位數,也可以是每一類值的跨度。

△線性判別分析

基於對每種類別計算之後所得到的判別值,取最大值做出預測。

這種方法是假定數據符合高斯分布。所以,最好在預測之前把異常值先踢掉。

對於分類預測問題來說,這種算法既簡單又給力。

4.分類與回歸樹

預測模型裡,決策樹也是非常重要的一種算法。

可以用分兩叉的樹來表示決策樹的模型。每一個節點代表一個輸入,每個分支代表一個變量(默認變量是數字類型)

△決策樹

決策樹的葉節點指的是輸出變量。預測的過程會經過決策樹的分岔口,直到最後停在了一個葉節點上,對應的就是輸出值的分類結果。

決策樹很好學,也能很快地得到預測結果。對於大部分問題來說,得到的結果還挺準確,也不要求對數據進行預處理。

5.樸素貝葉斯分類器

這種預測建模的算法強大到超乎想像。

這種模型,可以直接從你的訓練集中計算出來兩種輸出類別的概率。

一個是每種輸出種類的概率;另外一個,是根據給定的x值,得到的是有條件的種類概率。

一旦計算之後,概率的模型可以用貝葉斯定理預測新的數據。

當你的數據是實數值,那麼按理說應該是符合高斯分布的,也就很容易估算出這個概率。

△貝葉斯定理

樸素貝葉斯定理之所以名字裡有個「樸素」,是因為這種算法假定每個輸入的變量都是獨立的。

不過,真實的數據不可能滿足這個隱藏前提。儘管如此,這個方法對很多複雜的問題還是很管用的。

6.K近鄰算法

最近K近鄰的模型表示,就是整個訓練集。很直截了當,對吧?

對新數據的預測,是搜索整個訓練集的值,找到K個最近的例子(literally的鄰居)。然後總結K個輸出的變量。

這種算法難就難在,怎麼定義兩個數據的相似度(相距多近算相似)。

如果你的特徵(attributes)屬於同一個尺度的話,那最簡單的方法是用歐幾裡得距離。這個數值,你可以基於每個輸入變量之間的距離來計算得出。

△最近鄰法

最近鄰法,需要佔用大量的內存空間來放數據,這樣在需要預測的時候就可以進行即時運算(或學習)。也可以不斷更新訓練集,使得預測更加準確。

距離或親密度這個思路遇到更高維度(大量的輸入變量)就行不通了,會影響算法的表現。

這叫做維度的詛咒。

當(數學)空間維度增加時,分析和組織高維空間(通常有成百上千維),因體積指數增加而遇到各種問題場景。

所以最好只保留那些和輸出值有關的輸入變量。

7.學習矢量量化

最近鄰法的缺點是,你需要整個訓練集。

而學習矢量量化(後簡稱LVQ)這個神經網絡算法,是自行選擇訓練樣例。

LVQ,是一組矢量,也叫碼本。一開始,矢量是隨機選的,經過幾次學習算法迭代之後,慢慢選出最能代表訓練集的矢量。

學習完成後,碼本就可以用來預測了,就像最近鄰法那樣。計算新輸入樣例和碼本的距離,可以找出最相近的鄰居,也就是最匹配的碼本。

如果你重新調整數據尺度,把數據歸到同一個範圍裡,比如說0到1之間,那就可以獲得最好的結果。

如果用最近鄰法就獲得了不錯的結果,那麼可以再用LVQ優化一下,減輕訓練集儲存壓力。

8.支持向量機(簡稱SVM)

這可能是機器學習裡最受歡迎的算法了。

超平面是一條可以分割輸入變量的空間的「線」。

支持向量機的超平面,是能把輸入變量空間儘可能理想地按種類切割,要麼是0,要麼是1。

在二維空間裡,你可以把超平面可以分割變量空間的那條「線」。這條線能把所有的輸入值完美一分為二。

SVM的學習目標就是要找出這個超平面。

△支持矢量機

超平面和挨得最近的數據點之間的距離,叫做邊緣。

最理想的超平面,是可以無誤差地劃分訓練數據。 也就是說,每一類數據裡距離超平面最近的向量與超平面之間的距離達到最大值。

這些點就叫做支持向量,他們定義了超平面。

從實際操作上,最理想的算法是能找到這些把最近矢量與超平面值距離最大化的點。

支持向量可能是最強的拿來就用的分類器了。值得用數據集試試。

9.隨機森林

隨機森林,屬於一種重複抽樣算法,是最受歡迎也最強大的算法之一。

在統計學裡,bootstrap是個估算值大小很有效的方法。比方說估算平均值。

從資料庫中取一些樣本,計算平均值,重複幾次這樣的操作,獲得多個平均值。然後平均這幾個平均值,希望能得到最接近真實的平均值。

而bagging算法,是每次取多個樣本,然後基於這些樣本建模。當要預測新數據的時候,之前建的這些模型都做次預測,最後取這些預測值的平均數,盡力接近真實的輸出值。

隨機森林在這個基礎上稍微有點變化。

它包含多個決策樹的分類器, 並且其輸出的類別是由個別樹輸出的類別的眾數而定。

如果你的高方差算法取得了不錯的結果(比方說決策樹),那麼用隨機森林的話會進一步拿到更好的結果。

10. 提升(Boosting)算法和自適應增強(Adaboost)算法

Boosting的核心是,對同一個訓練集訓練不同的分類器(弱分類器),然後把這些弱分類器集合起來,構成一個更強的最終分類器(強分類器)。

所得到的第二個弱分類器會糾正第一個弱分類器的誤差。弱分類器的不斷疊加,直到預測結果完美為止。

Adaboost算法是首個成功用於二元分類問題的提升算法。

現在有很多提升方法都是基於Adaboost。

AdaBoost適用於短的決策樹。

在第一個樹建立出來之後,不同的樣本訓練之後的表現可以作參考,用不同的樣本訓練弱分類器,然後根據錯誤率給樣本一個權重。

很難預測的訓練數據應該給更多的權重,反過來,好預測的就少一點權重。

模型按順序一個一個建,每個訓練數據的權重都會受到上一個決策樹表現的影響。

當所有的決策樹都建好之後,看新數據的預測表現,結果準不準。

因為訓練數據對於矯正算法非常重要,所以要確保數據清洗乾淨了,不要有奇奇怪怪的偏離值。

最後的最後

面對海量的機器學習算法,萌新最愛問的是,「我該選什麼算法?」

在回答這個問題之前,要先想清楚:

1)數據的數量、質量、本質;

2)可供計算的時間;

3)這個任務的緊急程度;

4)你用這個數據想做什麼。

要知道,即使是老司機,也無法閉著眼睛說哪個算法能拿到最好的結果。還是得動手試。

其實機器學習的算法很多的,以上只是介紹用得比較多的類型,比較適合萌新試試手找找感覺。

— 完 —

相關焦點

  • 流行的機器學習算法總結,幫助你開啟機器學習算法學習之旅
    AI的ML領域是為實現非常精確的目標而創建的,它引入了多種算法,從而可以更順暢地進行數據處理和決策。什麼是機器學習算法?機器學習算法是任何模型背後的大腦,可讓機器學習並使其更智能。這些算法的工作方式是,為它們提供第一批數據,並且隨著時間的流逝和算法的準確性的提高,額外的數據也被引入到算法中。
  • 機器學習算法的新女王——XGBoost
    遲暮的女王已經退場,取而代之的是名字時髦、活力滿滿的新女王XGBoost(Exterme Gradient Boosting,極限梯度提升)。什麼是XGBoost?XGBoost是基於決策樹的集成機器學習算法,使用了梯度提升框架。在涉及非結構化數據(圖像、文本等)的預測問題中,人工神經網絡往往優於所有其他算法或框架。
  • 新手必看的十種機器學習算法
    然而,在眾多的機器學習算法中,哪些是又上手快捷又功能強大、適合新手學習的呢?Towards Data Science 上一篇文章就介紹了十種新手必看的機器學習算法,雷鋒網 AI 科技評論全文編譯如下。如果早就知道,我們就可以直接使用它,而不需要再通過機器學習算法從數據中進行學習了。最常見的機器學習就是學習 Y=f(X) 的映射,針對新的 X 預測 Y。這叫做預測建模或預測分析。我們的目標就是讓預測更加精確。針對希望對機器學習有個基本了解的新人來說,下面將介紹數據科學家們最常使用的 10 種機器學習算法。1.
  • 算法應用|機器學習python應用,簡單機器學習項目實踐
    可以說這並不是一個正式的項目,只是用來做一個簡單的展示,用於給初次接觸機器學習的讀者快速了解機器學習的過程和結果。1 機器學習中的Hello World頂目學習編程時,往往我們的第一句代碼就是print(「Hello World」),而接下來的這個數據集,可以說得上是機器學習中的Hello World頂目,入門學習機器學習的過程中最常見的一個數據集。
  • 史上最全十大機器學習算法,入門必看!
    1介紹關於機器學習算法的研究已經獲得了巨大的成功,哈佛商業評論甚至將數據科學家稱為二十一世紀最具誘惑力的工作。機器學習算法是在沒有人為幹涉的情況下,從大量的數據和歷史經驗中學習數據的結構並提升對某一目標的估計的算法。
  • 入門| 機器學習新手必看10大算法
    機器學習算法被描述為學習一個目標函數 f,該函數將輸入變量 X 最好地映射到輸出變量 Y:Y = f(X) 這是一個普遍的學習任務,我們可以根據輸入變量 X 的新樣本對 Y 進行預測。我們不知道函數 f 的樣子或形式。
  • 五分鐘了解機器學習十大算法
    本文為有志於成為數據科學家或對此感興趣的讀者們介紹最流行的機器學習算法。機器學習是該行業的一個創新且重要的領域。我們為機器學習程序選擇的算法類型,取決於我們想要實現的目標。現在,機器學習有很多算法。因此,如此多的算法,可能對於初學者來說,是相當不堪重負的。
  • 常見的機器學習算法,你知道幾個?
    誕生於1956年的人工智慧,由於受到智能算法、計算速度、存儲水平等因素的影響,在六十多年的發展過程中經歷了多次高潮和低谷。最近幾年,得益於數據量的上漲、運算力的提升,特別是機器學習新算法的出現,人工智慧迎來了大爆發的時代。提到機器學習這個詞時,有些人首先想到的可能是科幻電影裡的機器人。
  • 數據科學家應該知道的頂級機器學習算法
    機器學習算法簡介有兩種方法可以對您可能在現場遇到的機器學習算法進行分類。首先是按照學習風格對算法進行分組。第二個是通過形式或功能上的相似性對算法進行分組。通常,兩種方法都是有用的。但是,我們將專注於通過相似性進行算法分組,並瀏覽各種不同的算法類型。
  • 機器學習十大算法都是何方神聖?看完你就懂了
    大數據原本在工業界中就已經炙手可熱,而基於大數據的機器學習則更加流行,因為其通過對數據的計算,可以實現數據預測、為公司提供決策依據。跟我們生活息息相關的最常見機器學習算法包括電影推薦算法、圖書推薦算法。這些算法都是基於你的電影觀看記錄或圖書購買記錄來給你做推薦的。James Le 在 KDnuggets 上發布了一篇文章,介紹了他是如何入門機器學習的。
  • 十大機器學習算法之旅已啟程
    因此,你應該為你的問題嘗試許多不同的算法,同時使用數據的「測試集」來評估性能並選擇勝出者。  當然,你嘗試的算法必須適合你的問題,這就是選擇正確的機器學習任務的地方。打一個比方,如果你需要清理你的房子,你可以使用真空吸塵器、掃帚或拖把,但是你不會用一個鏟子來挖掘。
  • 機器學習Get新用途 用算法解決抗藥性細菌
    該研究算法被稱為「去噪編碼」(denoising autoencoder)而為人們所熟知,這一算法最初其實是被設計用於找出大型數據集中的特定模式或特定規律。不過這項技術早已被用於各種其他的研究中,比如通過分析隨機出現的YouTube圖像,來找出常見的趨勢或特徵等。意料之中的是,研究發現貓的視頻格外受到人們的歡迎。
  • 機器學習在合成生物學:一種新的生物工程算法
    合成生物學(synthetic biology)是生物科學在21世紀新出現的一個分支學科,它從最基本的生物要素開始建立零部件,以構造人工生物系統(artificial biosystem),猶如構建智能電路一樣。
  • 機器學習算法基礎(使用Python代碼)
    今天,作為一名數據科學家,我可以用每小時幾美元的成本,用複雜算法構建數據處理機器。但是實現這並不容易!因為我需要面臨度過無數個黑暗的日日夜夜。機器學習算法類型從廣義上講,有3種類型的機器學習算法。創建本指南背後的想法是簡化世界各地有抱負的數據科學家和機器學習愛好者的旅程。通過本指南,我將幫助您解決機器學習問題並從經驗中獲益。我提供了對各種機器學習算法的高級理解以及運行它們的R&Python代碼。這些應該足以弄髒你的手。線性回歸主要有兩種類型:簡單線性回歸和多元線性回歸。簡單線性回歸的特徵在於一個自變量。
  • 分享最適合新手入門的10種機器學習算法
    首要原則 然而,在為監督式機器學習創建預測模型之前,要記得一條最重要的原則: 機器學習算法可以看做學習一種目標函數(f),該函數是輸入變量(X)到輸出變量(Y)的完美映射:Y=f(X) 這是一個通用的學習任務,我們希望用新輸入的變量(X)能輸出預測變量(Y)。我們不知道函數(f)是什麼樣子的,或者什麼形式的。
  • 機器學習初學者必須知道的十大算法
    還在為不知道學什麼算法入門機器學習感到頭疼?本文作者通過自身的學習向初學者介紹十大機器學習(ML)算法,並附有數字和實例以便於理解。哈佛商業評論稱數據科學家是21世紀最性感的工作。所以,對於那些ML剛剛開始的人來說,這篇博客機器學習算法工程師需要知道的十大算法是非常有用的。ML算法是可以從數據中學習並從中改進的算法,無需人工幹預。
  • 機器學習十大算法都是何方神聖?
    跟我們生活息息相關的最常見機器學習算法包括電影推薦算法、圖書推薦算法。這些算法都是基於你的電影觀看記錄或圖書購買記錄來給你做推薦的。James Le在KDnuggets上發布了一篇文章,介紹了他是如何入門機器學習的。此外,他在其中摸索出十大常用的機器學習算法,並逐一進行介紹。雷鋒網編譯如下,未經許可不得轉載。如果你想學機器學習,那怎麼入門呢?
  • Python機器學習10:機器學習中的六種分類算法及實現(上)
    在機器學習中,可以使用多種算法模型解決同一個問題,那麼如何從中選擇出最佳的算法模型呢?當然,這個問題沒有一種固定的答案,需要根據不同的問題,嘗試使用多種機器學習方法,比較各種算法模型在該問題上的效果,最終才能決定究竟選擇哪一種模型。
  • 機器學習算法盤點:人工神經網絡、深度學習
    機器學習算法盤點:人工神經網絡、深度學習 佚名 發表於 2016-08-01 16:26:33   機器學習無疑是當前數據分析領域的一個熱點內容。很多人在平時的工作中都或多或少會用到機器學習的算法。
  • 「機器學習」機器學習算法優缺點對比(匯總篇)
    主要回顧下幾個常用算法的適應場景及其優缺點!機器學習算法太多了,分類、回歸、聚類、推薦、圖像識別領域等等,要想找到一個合適算法真的不容易,所以在實際應用中,我們一般都是採用啟發式學習方式來實驗。但是如果你只是在尋找一個「足夠好」的算法來解決你的問題,或者這裡有些技巧可以參考,下面來分析下各個算法的優缺點,基於算法的優缺點,更易於我們去選擇它。天下沒有免費的午餐在機器學習領域,一個基本的定理就是「沒有免費的午餐」。