成爲數據科學家應該知道的10種機器學習算法

瞭解爲了成爲數據科學家而應該瞭解的十種機器學習算法。

機器學習從業者有不一樣的個性。雖然其中一些是「我是X專家,X能夠訓練任何類型的數據」,其中X =某種算法,其餘人是「正確的工具用於正確的工做」的人。他們中的不少人還訂閱了「各行各業的高手」的策略,他們擁有一個深厚的專業領域,而且對機器學習的不一樣領域略有了解。也就是說,沒有人能夠否定這樣一個事實:做爲實踐數據科學家,咱們必須瞭解一些常見機器學習算法的基礎知識,這將有助於咱們處理咱們遇到的新域問題。這是常見機器學習算法的旋風之旅,以及有關它們的快速資源,能夠幫助你開始使用它們。

Principal Component Analysis (PCA)/SVD

PCA是一種無監督的方法,用於理解由向量組成的數據集的全局屬性。此處分析協方差數據點矩陣,以瞭解哪些維度(大多數)/數據點(有時)更重要(即,它們之間的差別很大,但與其餘維度的協方差很小)。考慮矩陣的頂級PC的一種方法是考慮具備最高特徵值的特徵向量。SVD本質上也是一種計算有序份量的方法,可是你不須要獲得點的協方差矩陣來獲得它。
該算法經過獲取降維數據點來幫助人們克服維數的困擾。

Libraries

入門教程

最小二乘法和多項式擬合

還記得你在大學裏的數值分析課程,你曾經習慣用線條和曲線擬合獲得方程式嗎?對於維度較小的很是小的數據集,你可使用它們在機器學習中擬合曲線。(對於具備多個維度的大型數據或數據集,你可能最終會過分擬合,所以請不要打擾。)OLS具備封閉式的解決方案,所以你無需使用複雜的優化技術。
很明顯,使用此算法來擬合簡單的曲線/迴歸。

Libraries

入門教程

約束線性迴歸

最小二乘法可能會與數據中的異常值,虛假場和噪聲混淆。所以,咱們須要約束來減小咱們在數據集上擬合的線的方差。正確的方法是擬合線性迴歸模型,以確保權重不會出錯。模型能夠具備L1範數(LASSO)或L2(嶺迴歸)或二者(彈性迴歸)。平均平方損失獲得優化。
使用這些算法來擬合帶有約束的迴歸線,並避免從模型中過分擬合和掩蓋噪聲維度。

Libraries

入門教程

K-Means聚類

每一個人都喜歡無監督的聚類算法。給定一組矢量形式的數據點,咱們能夠根據它們之間的距離製做點集。它是一種指望最大化算法,它迭代地移動集羣的中心,而後逐個移動每一個集羣中心的點。算法所採用的輸入是要生成的簇的數量以及它將嘗試聚合簇的迭代次數。

從名稱中能夠明顯看出,你可使用此算法在數據集中建立K個羣集。

Libraries

入門教程

Logistic迴歸

Logistic迴歸是受約束的線性迴歸,在應用權重後具備非線性(主要使用Sigmoid函數或者你也可使用tanh)應用,所以將輸出限制爲接近+/-類(在sigmoid的狀況下爲1和0)。使用Gradient Descent優化交叉熵損失函數。初學者須知:Logistic迴歸用於分類,而不是迴歸。你還能夠將Logistic迴歸視爲單層神經網絡。使用梯度降低或L-BFGS等優化方法訓練Logistic迴歸。NLP人員一般會將其命名爲Maximum Entropy Classifier。
這就是Sigmoid的樣子:
使用LR來訓練簡單但很是強大的分類器。

Libraries

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html

入門教程

SVM(支持向量機)

SVM是線性模型,如線性/邏輯迴歸,不一樣之處在於它們具備不一樣的基於邊緣的損失函數(支持向量的推導是我在特徵值計算中看到的最美麗的數學結果之一)。你可使用L-BFGS甚至SGD等優化方法優化損耗函數。
SVM的另外一項創新是將數據內核用於特徵設計。若是你有很好的領域洞察力,你能夠用更智能的RBF內核替換舊的RBF內核並獲利。
SVM能夠作的一件獨特事情是學習一個類分類器。
SVM可用於訓練分類器(甚至是迴歸量)。

Library

入門教程

注意:基於SGD的Logistic迴歸和SVM訓練均可以在 SKLearn中找到,我常用它,由於它讓我能夠用通用接口檢查LR和SVM。你還可使用小批量在> RAM大小的數據集上訓練它。

前饋神經網絡

這些基本上是多層Logistic迴歸分類器。許多層的權重由非線性分開(sigmoid,tanh,relu + softmax和cool new selu)。另外一個流行的名字是Multi-Layered Perceptrons。FFNN可用做自動編碼器的分類和無監督特徵學習。
多層感知器
FFNN做爲自動編碼器
FFNN可用於訓練分類器或提取特徵做爲自動編碼器。

Libraries

入門教程

卷積神經網絡(Convnets)

使用卷積神經網絡幾乎能夠實現當今世界上任何最早進的基於視覺的機器學習結果。它們可用於圖像分類,物體檢測甚至圖像分割。在80年代末期至90年代初由Yann Lecun發明的Convnets具備卷積層,可做爲層次特徵提取器。你也能夠在文本中使用它們(甚至是圖形)。
使用convnets進行最早進的圖像和文本分類,對象檢測,圖像分割。

Libraries

入門教程

遞歸神經網絡(RNN)

RNN經過在時間t遞歸地在聚合器狀態上應用相同的權重集而且在時間t輸入來給模型序列建模(給定序列有輸入時間0..t..T,在每一個時間t具備隱藏狀態這是從RNN的t-1步輸出的。純粹的RNN如今不多使用,但其對應物如LSTM和GRU在大多數序列建模任務中都是最早進的。
RNN(若是存在密集鏈接的單元和非線性,則如今f一般是LSTM或GRU)。LSTM單元用於代替純RNN中的普通密集層。
將RNN用於任何序列建模任務,尤爲是文本分類,機器翻譯和語言建模。

Library:

github.com/tensorflow/…(谷歌的許多很酷的NLP研究論文都在這裏)

入門教程

條件隨機場(CRF)

CRF多是機率圖形模型(PGM)系列中最經常使用的模型。它們用於像RNN同樣的序列建模,也能夠與RNN結合使用。在神經機器翻譯系統出現以前CRF是最早進的,而且在許多序列標記任務中使用小數據集,它們仍然比須要更大量數據的RNN更好地學習。它們還能夠用於其餘結構化預測任務,如圖像分割等.CRF對序列的每一個元素(好比句子)進行建模,使得鄰居影響序列中組件的標籤,而不是全部標籤彼此獨立。
使用CRF標記序列(在文本,圖像,時間序列,DNA等中)。

Library:

入門教程

決策樹

假設我給了一張Excel表格,上面有關於各類水果的數據,我必須說出蘋果的外觀。我要作的是問一個問題「哪些水果是紅色和圓形的?」並將全部回答是和否的水果分開。如今,全部紅色和圓形水果可能不是蘋果,全部蘋果都不會是紅色和圓形的。因此我會問一個問題「哪些水果上有紅色或黃色的暗示?「在紅色和圓形的水果上,會問」哪些水果是綠色和圓形的?「不是紅色和圓形的水果。基於這些問題,我能夠準確地說出蘋果。這一系列問題就是決策樹。可是,這是一個基於個人直覺的決策樹。直覺不能用於高維和複雜數據。咱們必須經過查看標記數據自動提出級聯問題。這就是基於機器學習的決策樹所作的事情。像CART樹這樣的早期版本曾經用於簡單數據,但隨着數據集愈來愈大,誤差 - 方差權衡須要用更好的算法來解決。如今使用的兩種常見的決策樹算法是隨機森林(在隨機的屬性子集上構建不一樣的分類器並將它們組合用於輸出)和Boosting Trees(將樹木級聯培訓在其餘樹上,糾正下面的錯誤)他們)。
決策樹可用於對數據點進行分類(甚至迴歸)。

Library

入門教程

TD算法

若是你仍然想知道上述任何方法如何解決像DeepMind那樣擊敗Go世界冠軍的任務,他們都不能。在此以前咱們討論的全部10種算法都是模式識別,而不是策略學習者。要學習解決多步問題的策略,例如贏得國際象棋或玩Atari控制檯,咱們須要讓世界上沒有代理人,並從其面臨的獎勵/懲罰中學習。這種類型的機器學習稱爲強化學習。最近在該領域取得的成功不少(並不是所有)是將Convnet或LSTM的感知能力與稱爲時間差別學習的一組算法相結合的結果。這些包括Q-Learning,SARSA和其餘一些變體。
這些算法主要用於自動播放遊戲,也用於語言生成和對象檢測中的其餘應用。

Library

入門教程

這些是你能夠學習成爲數據科學家的十種機器學習算法。
你還能夠 在此處閱讀有關機器學習庫的 信息
更多文章歡迎訪問: http://www.apexyun.com
公衆號:銀河系1號
聯繫郵箱:public@space-explore.com
(未經贊成,請勿轉載)  
相關文章
相關標籤/搜索