10大機器學習算法,看懂你就是數據科學家

2021-01-09 網際網路數據資訊網

想成為數據科學家?你得是個博聞強識,又對新鮮事物保持好奇心的人。正因為如此,數據科學家會掌握幾乎所有的常見算法,並精通其中一門,這樣可以快速適應新領域的問題。

今天我們就來聊聊,每一位數據科技家都應該了解的10大機器學習算法。下面是關於普遍機器學習算法和快速資源的風暴之旅,準好了嗎?燒腦挑戰開始:

1. 主成分分析(PCA)/奇異值分解(SVD)

PCA是一種非監督學習,用來理解由向量組成的數據集的全局特性的方法。這裡分析了數據點的協方差模型,用來了解哪些維度(大部分)/數據點(有時)更重要,即在它們自身之間具有高方差,但與其他變量時協方差較低。

這種思考模型主要用於考量具有最高特徵值的特徵向量。此外,SVD本質上也是一種計算有序成分的方法,但你不需要通過獲取數據點的協方差矩陣來實現它。

這種算法通過獲取已縮減維度的數據點,有助於解決多維度產生的衝擊。

Libraries:https://docs.scipy.org/doc/scipy/reference/generated/scipy.linalg.svd.html

http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html
Introductory Tutorial:https://arxiv.org/pdf/1404.1100.pdf

2.1 最小二乘法和多項式擬合

還記得你在大學裡學的數值分析編碼嗎?通過擬合直線和曲線得到一個方程。現在,你可以使用它們來適配機器學習中的曲線,用於非常小的低維數據集。對於大數據或多維度的數據集,你可能會需要過度擬合,所以不用費心。普通最小二乘法(OLS)具有封閉形式的解決方案,因此你不需要使用複雜的優化技術。

很明顯,你可以使用這種算法擬合簡單曲線/回歸。

Libraries:

https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.lstsq.htmlhttps://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.polyfit.html

Introductory Tutorial:

https://lagunita.stanford.edu/c4x/HumanitiesScience/StatLearning/asset/linear_regression.pdf

2.2 約束性線性回歸

最小二乘法可能會被數據中的離群點、假維度和噪聲幹擾。因此,我們需要用約束來減少數據集上擬合的線的方差。正確的方法是擬合一個權重可控的線性回歸模型。模型可以用L1正則(LASSO)或L2正則(Ridge Regression)或二者混合(elastic回歸)。經過正則處理後對均方損失進行優化。

使用這些算法擬合具有約束性的回歸線,避免從模型中過度擬合和掩藏幹擾維度。

Libraries:http://scikit-learn.org/stable/modules/linear_model.html
Introductory Tutorial(s):https://www.youtube.com/watch?v=5asL5Eq2x0A

https://www.youtube.com/watch?v=jbwSCwoT51M

3. K-均值聚類

這是所有人都喜歡的非監督學習聚類算法。給定一組矢量形式的數據點,我們可以基於它們之間的距離生成數據點群。它是一種期望最大化的算法,反覆地移動群組的中心,然後聚集每個群組中心點。此算法所採用的輸入是生成群組的數量,並且它將嘗試匯集群組的迭代次數。

從名稱中就可以看出,你可以使用這種算法在數據集中創建K集群。

Library:http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html
Introductory Tutorial(s):https://www.youtube.com/watch?v=hDmNF9JG3lo

https://www.datascience.com/blog/k-means-clustering

4. 邏輯回歸

邏輯回歸是一種約束線性回歸,它的結果進行了非線性變換(常用的是sigmoid函數,或者tanh也可以),因此把輸出限制成了+/-類的輸出(在sigmoid中是1和0)。

交叉熵損失函數(Cross-Entropy Loss)用梯度下降法(Gradient Descent)優化。對初學者來說,邏輯回歸用於分類,而不是回歸。你也可以把邏輯回歸看作一層神經網絡。邏輯回歸通過使用梯度下降法或者L-BFGS算法優化。NLP自然語言處理者們通常把它稱之為最大熵分類器。

使用LR來訓練非常簡單,卻是十分強有力的分類器。

Library:http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html
Introductory Tutorial(s):https://www.youtube.com/watch?v=-la3q9d7AKQ

5.SVM(支持向量機)

SVM(支持向量機)是線性模型,類似線性/邏輯回歸。不同之處在於它們具有不同的基於邊際損失函數(支持向量的推導是我所看到過的最美的數理成果之一,和特徵值的計算可以媲美)。你可以使用諸如B-FGS甚至SGD等優化方法來優化損失函數。

SVMs的另一個創新是,在特徵工程中kernel使用。如果你有很好的領域洞察力,你可以用更好的kernel來代替舊的RBF kernel,並從中受益。

SVMs獨一無二的特性就是可以學習一個類別的分類器

SVMs可以用來訓練分類器(甚至回歸函數)。

Library:http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html
Introductory Tutorial(s):https://www.youtube.com/watch?v=eHsErlPJWUU

6. 前饋神經網絡

這些基本上是多層邏輯回歸分類器。許多層權重由非線性(SigMOID,TANH,Relu+SULTMax和cool new SELU)分隔。它另一個比較知名的名字是多層感知器。前饋神經網絡作為自動編碼器,可用於分類和非監督特徵學習。

前饋神經網絡作為自動編碼器,可用於訓練分類器或提取特徵。

Libraries:http://scikit-learn.org/stable/modules/generated/sklearn.neural_network.MLPClassifier.html#sklearn.neural_network.MLPClassifier

http://scikit-learn.org/stable/modules/generated/sklearn.neural_network.MLPRegressor.html

https://github.com/keras-team/keras/blob/master/examples/reuters_mlp_relu_vs_selu.py
Introductory Tutorial(s):
http://www.deeplearningbook.org/contents/mlp.html

http://www.deeplearningbook.org/contents/autoencoders.html

http://www.deeplearningbook.org/contents/representation.html

7. 卷積神經網絡(Convnets)

當今,世界上幾乎所有基於視覺的機器學習成果,都已經通過卷積神經網絡實現。它們可以用於圖像分類、目標檢測甚至圖像分割。

這是Yann Lecun在上世紀80年代末90年代初的發明,其特徵在於卷積層充當分層特徵提取器。你也可以在文本中使用它們(甚至是圖形)。

convnets用於最先進的圖像和文本分類、目標檢測、圖像分割。

Libraries:
https://developer.nvidia.com/digits

https://github.com/kuangliu/torchcv

https://github.com/chainer/chainercv

https://keras.io/applications/
Introductory Tutorial(s):http://cs231n.github.io/

https://adeshpande3.github.io/A-Beginner%27s-Guide-To-Understanding-Convolutional-Neural-Networks/

8. 遞歸神經網絡(RNNs)

RNN通過在聚合狀態下,遞歸的使用同樣的權重,來對一個序列建模。前提是這個序列在0..t..T時間點上有輸入,並且在時間t有從RNN的t-1步輸出的隱含層。

現在純的RNN已經很少使用了,取而代之的是代表序列建模最前沿的,與它對應的LSTMs和GRUs。

RNN(如果有緊密連接和非線性,現在f通常是LSTMs和GRUs的)。在純的RNN中,LSTM單元取代了緊密連接層。

使用RNNs去完成序列建模的任務,如文本分類、機器翻譯、語言建模。

Library:
https://github.com/tensorflow/models (Many cool NLP research papers from Google are here)

https://github.com/wabyking/TextClassificationBenchmark

http://opennmt.net/
Introductory Tutorial(s):
http://cs224d.stanford.edu/

http://www.wildml.com/category/neural-networks/recurrent-neural-networks/

http://colah.github.io/posts/2015-08-Understanding-LSTMs/

9. 條件隨機場(CRFs)

CRFS可能是概率圖形模型家族(PGMs)中最常用的模型。它們被用於像RNNs這樣的序列建模,也可以與RNNs結合使用。它是神經機器翻譯系統進入CRFs之前最先進的技術,並且在許多序列中用小的數據集標記任務。

目前,CRFS仍然比RNNs這樣需要大量數據量支撐的算法更有優勢。它們也可用於其他結構化預測任務,如圖像分割等。CRF對序列中的每一個元素(例如一個句子)進行建模,使得其序列中某個組件的標籤相互影響,而不是所有的標籤彼此獨立。

使用CRFs標記序列(文本、圖像、時間序列、DNA等)。

Library:https://sklearn-crfsuite.readthedocs.io/en/latest/
Introductory Tutorial(s):http://blog.echen.me/2012/01/03/introduction-to-conditional-random-fields/

10. 決策樹

假如,我得到一份關於各種水果數據的Excel表格,並需要告知哪些是蘋果時,會拋出這麼幾個問題:

並用「是」和「否」來區分所有水果。

不過,所有的紅色+圓形水果可能不是蘋果,所有的蘋果都不會只是紅色+圓形的。

第二個問題:在所有的紅色+圓形水果中「哪些有紅色or黃色的特徵?」

同時我也會問,在所有非紅色的圓形水果中「哪些是綠色+圓的。」

基於這些問題,我可以準確地分辨出哪些是蘋果。

這一連串的問題就是決策樹。

但是,這是一個基於我們直覺的決策樹。直覺並不能在高維和複雜的數據上工作。我們必須通過查看標記數據來自動提出這一連串的問題。這就是基於決策樹的機器學習技術所要做的。

早期的版本如CART樹,曾經被用於處理簡單的數據,但隨著數據集越來越大,權衡方差與偏差需要用更好的算法來解決。如今正在使用的兩種常用決策樹算法是隨機森林(在屬性的隨機子集上建立不同的分類器,並將它們組合成輸出)和提升樹(它不停地訓練上層,用於糾正下層的錯誤)

決策樹可以用來對數據點進行分類(甚至回歸)。

Librarieshttp://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html

http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingClassifier.html

http://xgboost.readthedocs.io/en/latest/

https://catboost.yandex/

Introductory Tutorial:

http://xgboost.readthedocs.io/en/latest/model.html

https://arxiv.org/abs/1511.05741

https://arxiv.org/abs/1407.7502

http://education.parrotprediction.teachable.com/p/practical-xgboost-in-python

TD算法(值得擁有)

如果你還想知道上述任何一種算法,是如何做到像Deepmind Go那樣擊敗世界冠軍,很遺憾它們做不到。

在這之前我們討論的所有10種算法都是模式識別,而不是策略學習。要通過學習策略解決一個多步驟的問題,比如贏得西洋棋遊戲或玩雅達利遊戲機,我們需要反覆訓練並從獎懲制度中學習。

這部分機器學習技術我們稱之為深度強化學習。在這一領域的許多成功案例是融合了Convent或LSTM的感知能力產生的結果,這一些列算法稱之為時間差異學習。

這裡面包括Q-Learning, SARSA和一些其它變型。這些算法在Bellman’s equations貝爾曼方程中非常智能,它可以通過從環境中獲得的獎勵訓練,從而獲取損失函數。

這些算法大多用於自動玩遊戲,以及其他與語言生成和目標檢測有關的應用。

相關資料

Top 20 Deep Learning Papers, 2018 EditionHierarchical Classification – a useful approach for predicting thousands of possible categoriesThe 10 Deep Learning Methods AI Practitioners Need to Apply

本文由【友盟+】編譯  原作者 | Muktabh Mayank, ParallelDots.

 

相關焦點

  • 入門| 機器學習新手必看10大算法
    原標題:入門 | 機器學習新手必看10大算法 選自TowardsDataScience 作者:James Le 參與:程耀彤、路雪 本文介紹了機器學習新手需要了解的 10 大算法,包括線性回歸、Logistic 回歸、樸素貝葉斯、K 近鄰算法等。
  • 數據科學家應該知道的頂級機器學習算法
    按學習風格分組的機器學習算法算法可以用多種方式對問題進行建模,因為它涉及與體驗的交互。但是,無論我們要如何調用輸入數據都沒有關係。而且,算法在機器學習和人工智慧中很流行教科書。也就是說,首先要考慮一種算法可以適應的學習方式。通常,機器學習算法只能具有幾種主要的學習方式。而且,我們還將通過它們。另外,我們很少有適合他們的算法和問題類型的例子。
  • 分享最適合新手入門的10種機器學習算法
    如果我們知道的話就直接使用了,不需要再用機器學習算法從大量的數據中學習它。 最常見的機器學習類型是學習映射Y=f(X),用它來預測Y的值。這被稱為預測建模或預測分析,我們的目標是做出最準確的預測。 對於想了解機器學習基礎知識的新手,以下是數據科學家最常用的10種機器學習算法。
  • 新手必看的十種機器學習算法
    例如,你不能說神經網絡就一定比決策樹好,反之亦然。要判斷算法優劣,數據集的大小和結構等眾多因素都至關重要。所以,你應該針對你的問題嘗試不同的算法。然後使用保留的測試集對性能進行評估,選出較好的算法。當然,算法必須適合於你的問題。就比如說,如果你想清掃你的房子,你需要吸塵器,掃帚,拖把。而不是拿起鏟子去開始挖地。
  • 機器學習、深度學習算法原理與案例實踐暨Python大數據綜合應用...
    原標題:機器學習、深度學習算法原理與案例實踐暨Python大數據綜合應用高級研修班通信和信息技術創新人才培養工程項目辦公室 通人辦〔2018〕 第5號 機器學習、深度學習算法原理與案例實踐暨Python
  • 小白學數據小抄放送 Python,R,大數據,機器學習
    我們這一期小白學數據專欄篩選了28份小抄,根據覆蓋面、清晰度和內容實用性,分別涵蓋了機器學習、數據科學、概率、SQL和大數據的領域。裡面包括了你所需要的工具、流程、各種包和語言。 第一部分 數據科學專場:Python小抄表 小白:我們先來回顧一下之前聊過的Python。
  • Python機器學習10:機器學習中的六種分類算法及實現(上)
    在機器學習中,可以使用多種算法模型解決同一個問題,那麼如何從中選擇出最佳的算法模型呢?當然,這個問題沒有一種固定的答案,需要根據不同的問題,嘗試使用多種機器學習方法,比較各種算法模型在該問題上的效果,最終才能決定究竟選擇哪一種模型。
  • 機器學習在生物大數據應用的一個例子
    也是在幾天前,有一家生物大數據的創業公司出現在媒體和公眾的視線中——Deep Genomics。這個公司是幹嘛的呢?簡單來說就是:利用機器學習的方法,預測基因組上的變化會對人體的特徵/疾病/表型產生怎樣的影響。這就是本文要說的,機器學習在生物大數據上應用的一個例子。那麼它是如何實現的呢?可以概括為兩步:(1)確定與某個特徵/疾病/表型相關的基因易感位點。
  • 流行的機器學習算法總結,幫助你開啟機器學習算法學習之旅
    AI的ML領域是為實現非常精確的目標而創建的,它引入了多種算法,從而可以更順暢地進行數據處理和決策。什麼是機器學習算法?機器學習算法是任何模型背後的大腦,可讓機器學習並使其更智能。這些算法的工作方式是,為它們提供第一批數據,並且隨著時間的流逝和算法的準確性的提高,額外的數據也被引入到算法中。
  • 每個數據科學家都應該知道的10種機器學習方法
    作者 | CDA數據分析師 10 machine learning methods that every data scientist should know機器學習是研究和工業中的熱門話題,新方法一直在發展。該領域的速度和複雜性使得即使對於專家而言也難以跟上新技術 - 並且對於初學者而言可能是壓倒性的難度。
  • 機器學習十大算法都是何方神聖?看完你就懂了
    按:機器學習與人工智慧變得越來越熱。大數據原本在工業界中就已經炙手可熱,而基於大數據的機器學習則更加流行,因為其通過對數據的計算,可以實現數據預測、為公司提供決策依據。跟我們生活息息相關的最常見機器學習算法包括電影推薦算法、圖書推薦算法。這些算法都是基於你的電影觀看記錄或圖書購買記錄來給你做推薦的。James Le 在 KDnuggets 上發布了一篇文章,介紹了他是如何入門機器學習的。
  • 五分鐘了解機器學習十大算法
    本文為有志於成為數據科學家或對此感興趣的讀者們介紹最流行的機器學習算法。機器學習是該行業的一個創新且重要的領域。我們為機器學習程序選擇的算法類型,取決於我們想要實現的目標。現在,機器學習有很多算法。因此,如此多的算法,可能對於初學者來說,是相當不堪重負的。
  • 機器學習十大算法都是何方神聖?
    雷鋒網(公眾號:雷鋒網)按:機器學習與人工智慧變得越來越熱。大數據原本在工業界中就已經炙手可熱,而基於大數據的機器學習則更加流行,因為其通過對數據的計算,可以實現數據預測、為公司提供決策依據。
  • 十大機器學習算法之旅已啟程
    因此,你應該為你的問題嘗試許多不同的算法,同時使用數據的「測試集」來評估性能並選擇勝出者。  當然,你嘗試的算法必須適合你的問題,這就是選擇正確的機器學習任務的地方。打一個比方,如果你需要清理你的房子,你可以使用真空吸塵器、掃帚或拖把,但是你不會用一個鏟子來挖掘。
  • 小白學數據28張小抄放送 Python,R,大數據,機器學習
    我們這一期小白學數據專欄篩選了28份小抄,根據覆蓋面、清晰度和內容實用性,分別涵蓋了機器學習、數據科學、概率、SQL和大數據的領域。裡面包括了你所需要的工具、流程、各種包和語言。 數據科學專場:Python小抄表 小白:我們先來回顧一下之前聊過的Python。幫我們這樣的小白介紹一下有什麼Python方面的小抄吧?
  • 算法工程師和數據科學家處理大規模的交易數據
    你可以閱讀原文本文將科學技術和實際現實的各種交叉融合,通過自動駕駛服務平臺搭建一個可以持續運行、人性化和智能化的服務,包括uber無人駕駛汽車。從構思到實施一個優質、易用、可拓展的服務平臺,需要足夠的資料庫。要實現低成本、高可靠性、更快速度和更好用的訓練集,還需要強大的算力系統。計算機視覺,機器學習和深度學習是計算機科學中最重要的研究領域之一。
  • 機器學習算法基礎(使用Python代碼)
    對於我這樣的人來說,這段時期真的是讓人興奮和著迷的,因為隨著技術的發展,各種工具和技術都實現了飛躍化,現在歡迎人類來到數據科學的世界!今天,作為一名數據科學家,我可以用每小時幾美元的成本,用複雜算法構建數據處理機器。但是實現這並不容易!因為我需要面臨度過無數個黑暗的日日夜夜。
  • 一本100頁的機器學習書籍近日大受好評
    一本100頁的機器學習書籍近日大受好評 李倩 發表於 2018-11-20 09:27:37 這是一本只有100頁,任何只要有基礎數學知識的人都能看懂的機器學習書籍。
  • 機器學習算法一覽(附python和R代碼)
    大數據文摘「機器學習」專欄成立啦! 對我來說,如今最令我激動的就是計算技術和工具的普及,從而帶來了計算的春天。作為一名數據科學家,我可以建造一個數據處理系統來進行複雜的算法運算,這樣每小時能賺幾美金。可是學習這些算法卻花了我無數個日日夜夜。 那麼誰能從這篇文章裡收益最多呢?
  • 盤點:十大機器學習算法及其應用
    毫無疑問,過去兩年中,機器學習和人工智慧的普及度得到了大幅提升。如果你想學習機器算法,要從何下手呢?以我為例,我是在哥本哈根留學期間,學習AI課程入門的。我們用的教科書是一本AI經典:《Peter Norvig’s Artificial Intelligence?—?A Modern Approach》。