[譯] 資料科學領域十大必知機器學習演算法

JohnJiangLA發表於2019-02-25

資料科學領域十大必知機器學習演算法

[譯] 資料科學領域十大必知機器學習演算法

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

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

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

[譯] 資料科學領域十大必知機器學習演算法

這類演算法通過將資料降維來解決高維資料分析難題。

工具庫:

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

scikit-learn.org/stable/modu…

入門教程:

arxiv.org/pdf/1404.11…

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

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

[譯] 資料科學領域十大必知機器學習演算法

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

工具庫:

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前端後端區塊鏈產品設計人工智慧等領域,想要檢視更多優質譯文請持續關注 掘金翻譯計劃官方微博知乎專欄

相關文章