分享最適合新手入門的10種機器學習算法

2020-11-26 電子發燒友

編者按:Medium博主James Le近日在網絡上分享了他認為的最適合新手的機器學習算法,並授權論智進行編譯。以下是我們對原文的編譯,如有錯誤還請指出。

在機器學習界,有這樣一個「沒有免費午餐」的定理。簡單地說,該理論認為,沒有一種算法能解決所有問題,尤其對監督學習而言。

例如,你不能認為神經網絡總比決策樹要好,或決策樹永遠優於神經網絡。這其中還有許多因素需要考慮,比如你的數據量大小和數據結構。

這樣就導致我們在面對一個問題時需要嘗試不同的算法,同時還要用測試的數據集來評估算法的性能,選出最合適的那一種。

當然,你所選的算法必須適合你的問題,就像當我們需要清理房子的時候,可以使用吸塵器、掃把或拖把,但不會用鏟子來挖地。

首要原則

然而,在為監督式機器學習創建預測模型之前,要記得一條最重要的原則:

機器學習算法可以看做學習一種目標函數(f),該函數是輸入變量(X)到輸出變量(Y)的完美映射:Y=f(X)

這是一個通用的學習任務,我們希望用新輸入的變量(X)能輸出預測變量(Y)。我們不知道函數(f)是什麼樣子的,或者什麼形式的。如果我們知道的話就直接使用了,不需要再用機器學習算法從大量的數據中學習它。

最常見的機器學習類型是學習映射Y=f(X),用它來預測Y的值。這被稱為預測建模或預測分析,我們的目標是做出最準確的預測。

對於想了解機器學習基礎知識的新手,以下是數據科學家最常用的10種機器學習算法。

1.線性回歸

線性回歸也許是數據科學和機器學習中最知名、最好理解的算法了吧。

預測建模主要關注的是,以可解釋性為基礎,將模型的誤差降到最小並儘量作出最準確的預測。我們將借鑑、多次使用甚至「竊取」包括數據統計在內的多個不同領域的算法,從而達到這一目的。

線性回歸用方程表示,通過找到作為輸入變量的係數(B)的特定權重來描述輸入變量(x)和輸出變量(y)之間的一條線。

線性回歸

例如:y=B0 + B1*x

給定x的值,我們將預測y的值。同時線性回歸學習算法的目標是找到係數B0和B1的值。

想從數據中建立線性回歸模型,可以用不同的方法。例如用於最小二乘和梯度下降優化的線性代數。

線性回歸已經存在了200多年,並被廣泛研究。通常人們會去除非常相似或相關的變量,並從數據中去除噪聲。對於新手來說,這是一個簡單易上手的技術。

2.邏輯回歸

邏輯回歸是機器學習從統計領域借鑑的另一個技術,這是二元分類問題的首選算法。

邏輯回歸與線性回歸類似的一點是,目標都是找出每個輸入變量加權的係數值。不同的是,輸出的預測結果需要用非線性的邏輯函數進行變換。

邏輯函數看起來像一個大寫的S,它可以將任何值轉化成一個0到1的數值。因此,我們可以將這一規則應用於邏輯函數的輸出,將值限定在0到1之間(例如,IF less than 0.5 then output 1),這樣就可以預測一個組值。

邏輯回歸

根據模型學習的方法,邏輯回歸生成的預測也可以用作0到1之間的給定數據的概率。這對於需要給出更多原理做出預測的問題很有用。

像線性回歸一樣,邏輯回歸在刪除與輸出變量無關的屬性以及非常相似的屬性之後,表現得效果更好。對於二元分類問題,這一模型很容易學習,並且效率也很高。

3.線性判別分析(LDA)

線性回歸通常只適用於二元分類問題。如果類別超過兩個,你可能就需要線性判別分析算法來解決分類問題了。

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

每一類別的平均值; 計算所有類別的差異

線性判別分析

通過計算每個類別的識別值(discriminate value)並對具有最大值的類別進行預測,從而做出最終的預測,該技術假定數據的分布遵循高斯分布(鐘形曲線),因此在開始分析之前,需要移除數據中的異常值。對於分類預測建模問題來說,這是一種簡單而強大的方法。

4.分類與回歸樹

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

決策樹的模型是二叉樹,這是利用算法和數據結構構建的二叉樹,每個節點代表一個輸入變量(x)和該變量上的一個分裂點(假定變量是數字)。

決策樹

樹葉的節點包含用於進行預測的輸出變量(y)。預測是從樹叉開始,直到到達樹葉節點並輸出該節點的組值。

決策樹學習速度快,作出預測的速度也快。它們能解決許多領域的問題,所以無需對數據進行預處理。

5.樸素貝葉斯

樸素貝葉斯雖然簡潔,但對預測建模來說是一種非常強大的算法。

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

樸素貝葉斯之所以被稱為樸素,是因為它假定每個輸入的變量都是獨立的。這個假設對於真實的數據是不實際的,但是,這種技術在大範圍複雜的問題上非常有效。

6.K-近鄰算法

KNN算法也很簡單有效。模型就是用整個訓練數據集表示的,非常簡單吧!

通過在整個數據集中搜索K個最相似的樣本(鄰居),將它們匯總後輸出變量來預測新的數據點。對於回歸問題,這可能是平均輸出變量;對分類問題,這可能是類值的眾數(最常見的值)。

重點在於如何確定數據樣本之間的相似性。如果你的數據規模相同(例如都以英寸為單位),最簡單的方法就是使用歐幾裡得距離,如果是數字,你可以直接根據每個輸入變量之間的差異進行計算。

K-近鄰算法

KNN可能需要大量內存或空間來存儲所有的數據,但是只有在需要預測時才會工作(或學習)。您也可以隨時更新和管理訓練樣本,以保證預測的準確性。

距離或緊密性可能會在有大量的輸入變量時崩潰,這會導致算法性能下降,這被稱為維度的詛咒。所以建議只使用那些與預測輸出變量最相關的輸入變量。

7.學習向量量化(learning vector quantization)

K-近鄰算法的缺點之一是你需要利用整個數據集進行訓練,而學習向量量化算法(LVQ)是一種人工神經網絡算法,你可以選擇訓練樣本,並學習這些樣本應該是什麼樣的。

LVQ

LVQ是由向量表的集合表示,這些在開始時是隨機選擇的,在學習過程中數次迭代後對訓練數據集做出最佳總結。在學習之後,這些向量表可以用來做類似K-緊鄰算法一樣的預測。通過計算每個向量編碼表和新數據樣本之間的距離來找到最近鄰居,然後返回最佳匹配單元的類值(或在回歸情況下的實際值)作為預測。如果你重新調整數據使其具有相同的範圍(如0到1之間),則可以獲得最佳結果。

如果您發現KNN能在你的數據集上表現良好,可以嘗試使用LVQ來減少存儲整個數據集的內存要求。

8.支持向量機

支持向量機(SVM)也許是最受歡迎的機器學習算法之一。

超平面是分割輸入變量空間的線。在SVM中,超平面能以最佳比例將輸入變量空間的點以它們的類別分開。在二維空間中,你可以將其視為一條線,假設輸入的所有點都可以被這條線完全分開。SVM學習算法可以找到能夠被超平面完美分割類別的係數。

SVM

超平面和最近數據點之間的距離被稱為間隔(margin)。能夠將兩類分開的最佳或最優的超平面往往是有最大間隔的線,只有這些點與超平面的定義和分類器的構造有關,這些點就是支持向量。它們支持或定義了超平面,在實踐中,可以使用優化算法來找到最大化間隔的係數的值。

9.Bagging和隨機森林

隨機森林是目前最流行、最強大的機器學習算法之一,它是一種由Bootstrap或Bagging集成的機器學習算法。

Bootstrap是從數據樣本中估算數量的強大的統計方法,就像一種平均值。你需要從你的數據中抽取大量樣本,計算平均值,然後再計算所有平均值的平均值,從而更好地估計真實平均值。

在Bagging中,可以用上述相同的方法估計整個數據模型,最常見的是決策樹。選取訓練數據中的多個樣本,然後構建模型。當你需要預測新數據時,每個模型都會做出預測,取平均值後以便更好地估計真實輸出值。

隨機森林是對以上方法的調整,在隨機森林中,決策樹是這樣創建的,不選擇最優分割點,而是通過引入隨機性選擇次優分割點。因此,針對每個數據樣本創建的模型與其它方式相比會有所不同,但仍然非常精確,結合預測的值可以更好地估計真實的潛在輸出價值。

如果較大方差的算法(如決策樹)能獲得較好結果,那麼通常可以通過bagging獲得更好的結果。

10.Boosting和AdaBoost

Boosting是一種集成技術,它試圖從一些弱分類器中創建一個強分類器。通過從訓練數據中構建模型,然後創建第二個模型來嘗試糾正第一個模型的錯誤,直到模型能完美預測訓練數據集或已經添加了大量模型後,才會停止創建模型。

AdaBoost是為二元分類問題開發的第一個真正成功的boosting算法,這可以幫助我們更好地理解boosting。現在大多boosting方法都建立在AdaBoost上,最出名的就是隨機梯度上升。

AdaBoost與短決策樹一起使用,在第一棵樹創建之後,要使用每個訓練樣本上的樹的性能衡量下一棵樹應該對每個訓練樣本分配多少注意力。難以預測的訓練數據被分配的權重高,易於預測的樣本權重則少。依次創建模型後,每個模型都會在訓練樣本上更新權重。所有樹在建立之後,將會對新數據進行預測,每棵樹的性能由它們在訓練數據上的表現進行權衡。

由於大量的注意力都放在了糾正算法的錯誤上,所以清除異常數據是非常重要的。

結語

初學者在面對各種各樣機器學習算法時最常問的問題是:「我該使用那種算法?」回答這一問題要考慮許多因素,包括數據的尺寸、質量和性質、可用的計算時間、任務的緊迫性以及你想用數據做什麼。

即使是一位經驗豐富的數據科學家,他也無法憑空判斷哪種算法表現得最好,一定是要嘗試之後才能下結論。除了上述10種算法外,還有其他很多機器學習算法,如果你是新手的話,這篇文章可以作為你的入門教程。

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 入門| 機器學習新手必看10大算法
    原標題:入門 | 機器學習新手必看10大算法 選自TowardsDataScience 作者:James Le 參與:程耀彤、路雪 本文介紹了機器學習新手需要了解的 10 大算法,包括線性回歸、Logistic 回歸、樸素貝葉斯、K 近鄰算法等。
  • 新手必看的十種機器學習算法
    然而,在眾多的機器學習算法中,哪些是又上手快捷又功能強大、適合新手學習的呢?Towards Data Science 上一篇文章就介紹了十種新手必看的機器學習算法,雷鋒網 AI 科技評論全文編譯如下。如果早就知道,我們就可以直接使用它,而不需要再通過機器學習算法從數據中進行學習了。最常見的機器學習就是學習 Y=f(X) 的映射,針對新的 X 預測 Y。這叫做預測建模或預測分析。我們的目標就是讓預測更加精確。針對希望對機器學習有個基本了解的新人來說,下面將介紹數據科學家們最常使用的 10 種機器學習算法。1.
  • 新手必備!十大機器學習算法之旅已啟程
    因此,你應該為你的問題嘗試許多不同的算法,同時使用數據的「測試集」來評估性能並選擇勝出者。  當然,你嘗試的算法必須適合你的問題,這就是選擇正確的機器學習任務的地方。打一個比方,如果你需要清理你的房子,你可以使用真空吸塵器、掃帚或拖把,但是你不會用一個鏟子來挖掘。
  • Python機器學習10:機器學習中的六種分類算法及實現(上)
    在機器學習中,可以使用多種算法模型解決同一個問題,那麼如何從中選擇出最佳的算法模型呢?當然,這個問題沒有一種固定的答案,需要根據不同的問題,嘗試使用多種機器學習方法,比較各種算法模型在該問題上的效果,最終才能決定究竟選擇哪一種模型。
  • 盤點:十大機器學習算法及其應用
    毫無疑問,過去兩年中,機器學習和人工智慧的普及度得到了大幅提升。如果你想學習機器算法,要從何下手呢?以我為例,我是在哥本哈根留學期間,學習AI課程入門的。我們用的教科書是一本AI經典:《Peter Norvig’s Artificial Intelligence?—?A Modern Approach》。
  • 人工智慧研學社 · 入門組 | 《終極算法》研習第二期
    如果你對人工智慧缺乏系統的了解,機器之心向你推薦 Pedro Domingos 的著作《終極算法》(The Master Algorithm)。同時,以這本書為載體,機器之心「人工智慧研學社· 入門組」也已經完成了一半的學習內容。在後半部書中,作者開始對人工智慧不同流派的相關理論模型進行詳細討論,如果你對機器學習算法的技術細節及其背後的哲學感興趣,這也是一個開始學習的極好時機。
  • 機器學習十大算法都是何方神聖?
    跟我們生活息息相關的最常見機器學習算法包括電影推薦算法、圖書推薦算法。這些算法都是基於你的電影觀看記錄或圖書購買記錄來給你做推薦的。James Le在KDnuggets上發布了一篇文章,介紹了他是如何入門機器學習的。此外,他在其中摸索出十大常用的機器學習算法,並逐一進行介紹。雷鋒網編譯如下,未經許可不得轉載。如果你想學機器學習,那怎麼入門呢?
  • 想快速入門NLP?我們測評了15門最火課程,幫你找到最適合的
    大數據文摘出品來源:airev編譯:DD、Andy數年前,當小編剛踏足NLP領域時,還沒有太多相關課程,找學習資料就頗費功夫;如今,當網上充斥著各種良莠不齊公開課時,從中挑選一門適合自己的又成了另一種頗費功夫,特別對於選擇困難綜合症患者。
  • 機器學習入門必讀:6種簡單實用算法及學習曲線、思維導圖
    作者 | 盧譽聲來源 | 大數據DT(ID:hzdashuju)大部分的機器學習算法主要用來解決兩類問題——分類問題和回歸問題。在本文當中,我們介紹一些簡單但經典實用的傳統機器學習算法,讓大家對機器學習算法有一個基本的感性認識。有的人說機器學習入門並不難,有的人會覺得機器學習難以理解。那麼該如何去學習機器學習這種技術與方法呢?
  • 【技術必備】解讀 2016 年十大機器學習算法及其應用
    【新智元導讀】 機器學習領域都有哪些常用算法?本文帶來盤點。 毫無疑問,過去兩年中,機器學習和人工智慧的普及度得到了大幅提升。 如果你想學習機器算法,要從何下手呢?這篇文章,我想分享一些我所學到的、最常見的機器學習算法。 我從這個課程中學到了很多,並決定繼續學習這一專業內容。不久前,我在舊金山聽了幾個關於深度學習、神經網絡、數據架構方面的技術演講,包括在一個機器學習大會上和很多領域知名專家一起。最重要的是,我六月份註冊了Udacity 的機器學習入門的在線課程,近期已經完成了。
  • 盤點| 機器學習入門算法:從線性模型到神經網絡
    原標題:盤點 | 機器學習入門算法:從線性模型到神經網絡 選自Dataconomy 機器之心編譯 參與:王宇欣、吳攀、蔣思源幾十年來,機器學習實際上已經變成了一門獨立的領域。由於現代計算能力的進步,我們最近才能夠真正大規模地利用機器學習。而實際上機器學習是如何工作的呢?答案很簡單:算法(algorithm)。 機器學習是人工智慧(artificial intelligence)的一種,其本質上講,就是計算機可以在無需編程的情況下自己學習概念(concept)。
  • 想了解機器學習?你需要知道的十個基礎算法
    由於大數據是目前科技行業最熱門的趨勢,基於大量的數據機器學習在提前預測和做出建議方面有巨大的潛力。一些有關機器學習常見的例子有:Netflix基於你以前看過的電影再給你做出影片的推薦,或者亞馬遜根據你以前買過的書籍再給你進行圖書推薦。如果想了解更多有關機器學習的知識,要從哪裡開始呢?作者第一次入門是在哥本哈根海外交流時選了一門有關人工智慧的課程。
  • 地下蟻國新手入門經驗分享 新手怎麼玩?
    導 讀 地下蟻國新手怎麼玩?新手入門地下蟻國還是有一定難度的,接下來就給大家帶來了玩家「丨�酒趁年�A丨」的地下蟻國新手入門經驗分享,小夥伴們快來看看吧。
  • 95後哈佛小哥撰寫《從零開始的機器學習》,入門必備,書籍資源已開放
    機器之心報導作者:蛋醬、小舟機器學習怎麼入門最簡單?今年剛剛從哈佛大學統計專業畢業的 Danny Friedman 寫了一本「轉專業學生專用教材」,無基礎也可輕鬆入門,資源現已全部開放。
  • 機器學習十大算法都是何方神聖?看完你就懂了
    大數據原本在工業界中就已經炙手可熱,而基於大數據的機器學習則更加流行,因為其通過對數據的計算,可以實現數據預測、為公司提供決策依據。跟我們生活息息相關的最常見機器學習算法包括電影推薦算法、圖書推薦算法。這些算法都是基於你的電影觀看記錄或圖書購買記錄來給你做推薦的。James Le 在 KDnuggets 上發布了一篇文章,介紹了他是如何入門機器學習的。
  • 95後哈佛小哥撰寫從零開始的機器學習入門必備,書籍資源已開放
    機器之心報導作者:蛋醬、小舟機器學習怎麼入門最簡單?今年剛剛從哈佛大學統計專業畢業的 Danny Friedman 寫了一本「轉專業學生專用教材」,無基礎也可輕鬆入門,資源現已全部開放。說起機器學習入門書,大概有成百上千種選擇。這些書籍大多是由具備豐富研究經驗的學者撰寫的,涵蓋各種主題。俗話說「開卷有益」,但對於轉專業的初學者來說,這本新書或許更適合入門:近日,一位畢業於哈佛大學的小哥根據自己的機器學習入門經歷,撰寫了一本《從零開始的機器學習》。
  • 算法應用|機器學習python應用,簡單機器學習項目實踐
    可以說這並不是一個正式的項目,只是用來做一個簡單的展示,用於給初次接觸機器學習的讀者快速了解機器學習的過程和結果。1 機器學習中的Hello World頂目學習編程時,往往我們的第一句代碼就是print(「Hello World」),而接下來的這個數據集,可以說得上是機器學習中的Hello World頂目,入門學習機器學習的過程中最常見的一個數據集。
  • 史上最全十大機器學習算法,入門必看!
    1介紹關於機器學習算法的研究已經獲得了巨大的成功,哈佛商業評論甚至將數據科學家稱為二十一世紀最具誘惑力的工作。機器學習算法是在沒有人為幹涉的情況下,從大量的數據和歷史經驗中學習數據的結構並提升對某一目標的估計的算法。
  • 算法工程師路線圖(經驗濃縮,純乾貨!)
    而網際網路公司的算法工程師崗位中這個算法則是機器學習算法,說的通俗點,就是人工智慧領域中的算法,它是關於如何讓機器自動學習和挖掘數據中的規律,並使用算法和模型對未來進行預測。目前來說這也是網際網路行業中最熱門的一個崗位,開出的薪酬也普遍高於開發崗。今天我就來分享下算法工程師的學習路徑,並推薦一些我認為特別有價值的學習資料和學習方法。
  • 六種熱帶觀賞魚,繁殖能力超強,漂亮好養觀賞性高,適合新手入門
    一般新手初學養魚,大多都是從小型魚開始入手,因為飼養小型魚不需要太大的魚缸,對設備的要求也相對較低,而且大多數小型魚身上有非常漂亮的顏色,價格也比較平實,可以單獨飼養,也非常合適草缸造景。下面給大家分類認識一下市面上比較常見的小型熱帶魚,並作簡單的介紹,幫助你們快點認識它們。對於初期養魚的人來說,最重要的就是兩個字:耐心!