[譯] 數據科學領域十大必知機器學習算法

數據科學領域十大必知機器學習算法

機器學習從業者們各有各自不一樣的信仰。有些信奉「一劍破萬法」(這裏「劍」就是一種算法,而萬法則是各類類型的數據),有些則認爲「合適的工具作對的事」。他們中許多人也贊同「樣樣瞭解,精通一門」,他們在一個領域擁有豐富的專業知識,對機器學習的不一樣領域也略知一二。儘管如此,不能否認的是做爲一名數據科學家,必需要對常見的機器學習算法瞭解一二,這將幫助咱們在解決新問題時提供思路。本教程帶你速覽常見機器學習算法和相關資源,以便快速上手。html

1. 主成分分析 (PCA)/SVD

PCA 是一種無監督方法,用於瞭解由向量構成數據集的全局屬性。這裏對數據點的協方差矩陣進行分析,以瞭解哪些維度(較多狀況下)或數據點(部分狀況下)更重要。好比,它們之間的方差較高,但與其餘維度的協方差較低。考慮那些具備最高特徵值的特徵向量,它們就有多是上層主成分(PC)。SVD 本質上也是一種計算有序成分的方法,可是不須要獲得數據點的協方差便可得到。前端

這類算法經過將數據降維來解決高維數據分析難題。python

工具庫:

docs.scipy.org/doc/scipy/r…android

scikit-learn.org/stable/modu…ios

入門教程:

arxiv.org/pdf/1404.11…git

2a. 最小二乘法與多項式擬合

還記的你在大學時一般用於將直線或曲線擬合到點上以求得方程式的數值分析方法嗎?能夠在較小的低維數據集上使用它們來擬合機器學習中的曲線。(對於大型數據或者多個維度的數據集,最終結果可能會出現嚴重的過擬合。所以沒必要多費苦心了。)最小二乘法(OLS)有閉合解,因此不須要使用複雜的優化技術。github

顯而易見,這個算法只能用於擬合簡單的曲線或迴歸。web

工具庫:

docs.scipy.org/doc/numpy/r…docs.scipy.org/doc/numpy-1…算法

入門教程:

lagunita.stanford.edu/c4x/Humanit…後端

2b. 約束線性迴歸

最小二乘法在處理數據中的離羣值、僞場和噪聲會產生混淆。所以,在擬合一個數據集是須要約束來減小數據行中的方差。正確的方法是使用線性迴歸模型對數據集進行擬合,這樣才能保證權重值不會出錯。模型能夠是 L1 規範(LASSO)或 L2(嶺迴歸)或二者兼備(elastic regression)。均方損失最優化。

這類算法擬合迴歸線時有約束,能夠避免過擬合,並下降模型中噪聲維度。

工具庫:

scikit-learn.org/stable/modu…

入門教程:

www.youtube.com/watch?v=5as…

www.youtube.com/watch?v=jbw…

3. K-means 聚類

這是你們最喜歡的無監督聚類算法。給定一組向量形式的數據點,能夠經過它們之間的距離將其分爲不一樣的羣類。這是一種最大指望(EM)算法,它不停的移動羣類的中心點,再根據羣類中心對數據點進行聚類。這個算法的輸入是須要生成的羣類個數和聚類過程的迭代次數。

顧名思義,可使用此算法使數據集分爲 K 個集羣。

工具庫:

scikit-learn.org/stable/modu…

入門教程:

www.youtube.com/watch?v=hDm…

www.datascience.com/blog/k-mean…

4. 邏輯迴歸

邏輯迴歸是一種約束線性迴歸,加權具備非線性應用(經常使用 sigmod 函數,你也可以使用 tanh),所以輸出被嚴格限定爲 +/- 類(在 sigmod 中即爲 1 和 0)。使用梯度降低對交叉熵損失函數進行優化。請初學者注意:邏輯迴歸用於分類,而不是迴歸。你也能夠將邏輯迴歸想成單層神經網絡。邏輯迴歸會採用梯度降低或 L-BFGS 等方法進行訓練。NLP 中它一般被稱做最大熵分類器。

Sigmod 函數圖像以下:

可使用LR來訓練簡單但很是健壯的分類器。

工具庫:

scikit-learn.org/stable/modu…

入門教程:

www.youtube.com/watch?v=-la…

5. SVM(支持向量機)

支持向量機是相似線性迴歸和邏輯迴歸的線性模型,它們之間的不一樣在於使用了不一樣的邊際損失函數(支持向量的推導是我見過使用特徵值計算的最優美的數學結果之一)。你可使用 L-BFGS 甚至 SGD 這樣的優化方法來優化損失函數。

SVM 的另外一創新之處在於數據到特徵工程中的核心使用。若是你有很好的數據透視能力,你能夠用更智能的核心替換原來還算不錯的 RBF 並從中受益。

SVM 的一個獨特之處是能夠學習一個分類器。

支持向量機能夠用來訓練分類器(甚至是迴歸器)。

工具庫:

scikit-learn.org/stable/modu…

入門教程:

www.youtube.com/watch?v=eHs…

注意:基於 SGD 的邏輯迴歸和 SVM 訓練都是來源於 SKLearn 的 scikit-learn.org/stable/modu…,我經常使用這個,由於能夠用公用接口同時檢測邏輯迴歸和 SVM。你也可使用小型批次利用 RAM 大小的數據集進行訓練。

6. 前饋神經網絡

這些本質上來講就是多層邏輯迴歸分類器。經過非線性函數(sigmod、tanh、relu + softmax 以及超酷的新玩意 selu)將各層的權重分割開。它也被成爲多層感知機。前饋神經網絡能夠做爲自編碼器在分類器或者非監督特徵學習中使用。

多層感知機

做爲自編碼器的前饋神經網絡

前饋神經網絡能夠用來訓練分類器或者做爲自編碼器提取特徵。

工具庫:

scikit-learn.org/stable/modu…

scikit-learn.org/stable/modu…

github.com/keras-team/…

入門教程:

www.deeplearningbook.org/contents/ml…

www.deeplearningbook.org/contents/au…

www.deeplearningbook.org/contents/re…

7. 卷積神經網絡(卷積網)

目前世界上幾乎全部最早進的基於視覺的機器學習成果都是經過卷積神經網絡實現的。它們能夠用於圖像分類、目標檢測甚至圖像分割。卷積網是由 Yann Lecun 在 80 年代末 90 年代初發明的,它以卷積層爲主要特徵,這些卷積層起到分層特徵提取的做用。能夠在文本(甚至圖表)中使用它們。

使用卷積網進行最新的圖像和文本分類,目標檢測,圖像分割。

工具庫:

developer.nvidia.com/digits

github.com/kuangliu/to…

github.com/chainer/cha…

keras.io/application…

入門教程:

cs231n.github.io/

adeshpande3.github.io/A-Beginner%…

8. 循環神經網絡 (RNN)

RNN 經過將同一權重集遞歸應用到 t 時的聚合器狀態和 t 時的輸入,來對序列數據進行建模。(給定一個在時間點 0..t..T 處輸入的序列,並在各個 t 處有一個由 RNN 中 t-1 步輸出的隱藏狀態)。純粹的 RNN 如今不多使用,但它的類似架構,好比 LSTM 和 GRAS,在大多數序列型建模任務中都是最早進的。

RNN(若是這是一個密集聯接單元並具備非線性,那麼如今 f 一般是 LSTM 或 GRU)。LSTM 單元一般用來代替 RNN 結構中的普通密集層。

使用 RNN 進行任何序列型建模任務,特別是文本分類、機器翻譯、語言建模。

工具庫:

github.com/tensorflow/… (Many cool NLP research papers from Google are here)

github.com/wabyking/Te…

opennmt.net/

入門教程:

cs224d.stanford.edu/

www.wildml.com/category/ne…

colah.github.io/posts/2015-…

9. 條件隨機場(CRF)

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

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

工具庫:

sklearn-crfsuite.readthedocs.io/en/latest/

入門教程:

blog.echen.me/2012/01/03/…

油管上 Hugo Larochelle 的 7 部系列演講:www.youtube.com/watch?v=GF3…

10. 決策樹

比方來講,我收到了一張 Excel 表格,上面有關於各類水果的數據,我必須說出哪些看起來像蘋果。我要作的就是問一個問題「哪一個水果是紅色且是圓形的?」,把全部回答「是」與「不是」的水果分爲兩個部分。如今紅色且是圓形的水果不必定是蘋果,全部蘋果不必定都是紅色且圓形的。因此我要問下一個問題,對於紅色且圓形的水果問:「哪一個水果有紅色或者黃色?」而對不紅且不圓的水果問:「哪些水果是綠色且圓形的?」。根據這些問題,能夠至關準確的說出哪些是蘋果。這一系列的問題就是決策樹。然而,這是一個我直觀描述的決策樹。直覺不能用於高維的複雜數據。咱們必須經過查看標記的數據自動提出一連串的問題。這就是基於機器學習的決策樹所作的工做。像 CART 樹這樣較早的版本曾經用於簡單的數據,可是隨着數據集愈來愈大,誤差和方差之間的權衡須要更好的算法來解決。目前經常使用的兩種決策樹算法是隨機森林算法(在屬性的子集上創建不一樣的分類器,並將它們組合在一塊兒進行輸出)和加強樹算法(在其餘樹之上訓練一系列樹,並糾正其子樹中的錯誤)。

決策樹能夠用來對數據點(甚至迴歸)進行分類。

工具庫:

scikit-learn.org/stable/modu…

scikit-learn.org/stable/modu…

xgboost.readthedocs.io/en/latest/

catboost.yandex/

入門教程:

xgboost.readthedocs.io/en/latest/m…

arxiv.org/abs/1511.05…

arxiv.org/abs/1407.75…

education.parrotprediction.teachable.com/p/practical…

更多算法(你應當學習)

若是你還在思考以上方法可否解決相似 DeepMind 擊敗世界圍棋冠軍同樣的任務,不要癡心妄想了。咱們上面討論的這 10 種算法都是模式識別,而不是策略學習。要學習解決多步驟問題(好比贏得棋類遊戲或玩 Atari 遊戲)的策略,咱們須要建立一個自由終端並讓其可以學習其面對的獎勵和懲罰。這一類的機器學習被稱做強化學習。最近該領域中的許多成果(並不是所有)都是在將卷積網或 LSTM 的感知能力與一組名爲即時差分學習的算法相結合而得出的成果。其中就包括 Q-learning、SARSA 和其餘一些變種。這些算法巧妙運用貝爾曼方程獲得一個可以讓終端由環境獎勵訓練的損失函數。

這些算法主要用於自動打遊戲 :D,也在言語生成和實體識別有必定應用。

工具庫:

github.com/keras-rl/ke…

github.com/tensorflow/…

入門教程:

獲取 Sutton 和 Barto 的免費圖書:web2.qatar.cmu.edu/~gdicaro/15…

查看 David Silver 的課程:www.youtube.com/watch?v=2pW…

這些就是成爲一個數據科學家你必學的 10 個機器學習算法。

能夠在這裏閱讀機器學習的相關工具庫。

但願你喜歡這篇文章,請登陸獲取免費 ParallelDots 帳號開始你的 AI 之路。你也能夠在這裏查看咱們 API 的樣例。

這裏查看原文。

若是發現譯文存在錯誤或其餘須要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改並 PR,也可得到相應獎勵積分。文章開頭的 本文永久連接 即爲本文在 GitHub 上的 MarkDown 連接。


掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 AndroidiOS前端後端區塊鏈產品設計人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃官方微博知乎專欄

相關文章
相關標籤/搜索