想要成爲數據科學家?知道這11種機器學習算法嗎?

機器學習從業者都有不一樣的個性,雖然其中一些人會說「我是X方面的專家,X能夠訓練任何類型的數據」,其中X是某種算法。可是,咱們不得不認可的是在現實生活當中,不存在一個X能夠訓練任何類型的數據。某些算法落實到某些行業中是適合的,但到了那個行業就變得不適合了。html

在數據科學界存在一個共識:做爲數據科學家,咱們必須儘量多的瞭解通用的及其學習算法。這樣咱們才能在面臨不一樣行業的問題時有更多的解決方案。本文對通用的機器學習算法進行了簡要的闡述,並提供了關於他們的相關資源,從而幫助你可以快速掌握其中的奧妙。python

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

PCA是一種無監督的方法,用於理解由矢量組成的數據集的全局屬性。在這裏咱們着重分析數據點的協方差矩陣,以瞭解哪些維度/數據點更重要(即它們之間具備高度的協變性,但與其餘變量之間的協變性較低)。考慮矩陣頂級主成分(PC)的一種方式是考慮具備最高特徵值的特徵向量。奇異值分解(SVD)本質上也是一種計算有序組件的方法,但你不須要得到點的協方差矩陣就能夠獲得它。git

clipboard.png

這種算法經過得到維度縮小的數據點來幫助人們克服維度的詛咒github

庫地址:算法

https://docs.scipy.org/doc/sc...網絡

http://scikit-learn.org/stabl...app

入門教程:dom

https://arxiv.org/pdf/1404.11...機器學習

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

還記得在大學裏的數值分析課程嗎?你可使用它們來擬合機器學習中的具備低維度的小型數據集的曲線。(而對於具備多維的大數據或數據集,你可能最終會過分擬合。)OLS有一個封閉式的解決方案,所以你無需使用複雜的優化技術。ide

clipboard.png

上圖很明顯,使用這種算法能夠擬合簡單的曲線/迴歸

庫地址:

https://docs.scipy.org/doc/nu... https://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.polyfit html的

入門教程:

https://lagunita.stanford.edu...

3.約束線性迴歸

最小二乘法可能會與異常值,假字段和數據中的噪聲混淆。所以,咱們須要約束來減小數據集上擬合產生的線方差。作到這一點的方法是擬合線性迴歸模型,以確保權重不會有誤。模型能夠有L1範數(LASSO)或L2(Ridge Regression)或二者兼具。經過這種方法就可使均方損失獲得優化。

clipboard.png

使用這個算法來擬合具備約束條件的迴歸線,能夠避免過分擬合和掩蓋模型中的噪音維度。

庫地址:

http://scikit-learn.org/stabl...

入門教程:

https://www.youtube.com/watch...

https://www.youtube.com/watch...

4.K均值聚類

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

clipboard.png

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

庫地址:

http://scikit-learn.org/stabl...

入門教程

https://www.youtube.com/watch...

https://www.datascience.com/b...

5.Logistic迴歸

Logistic迴歸是線性迴歸,在擁有權重後帶有非線性(主要使用sigmoid函數,或者使用tanh函數)應用,所以把輸出限制接近+/-類(對於sigmoid,爲1和0)。交叉熵損失函數使用梯度降低進行優化。初學者注意:Logistic迴歸是用於分類的,而不是迴歸。你也能夠將Logistic迴歸看做單層神經網絡。使用梯度降低或L-BFGS等優化方法對Logistic迴歸進行訓練。從事NLP的人常常會以最大熵分類器的名稱來使用它。

這是一個Sigmoid的樣子:

clipboard.png

庫地址:

http://scikit-learn.org/stabl...

入門教程

https://www.youtube.com/watch...

6.支持向量機(SVM)

支持向量機是線性/邏輯迴歸的線性模型,區別在於它們具備不一樣的基於邊界的損失函數(支持向量的推導是我觀察到的與特徵值計算在一塊兒的最美妙的數學結果之一)。你可使用L-BFGS甚至SGD等優化方法優化損失函數。

clipboard.png

SVM的另外一個創新是向數據工程師提供數據內核。若是你具備良好的洞察力,你能夠用更聰明的RBF內核替換舊的RBF內核。

SVM能夠作到的事情是學習一個類分類器。

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

庫地址:

http://scikit-learn.org/stabl...

入門教程

https://www.youtube.com/watch...

注意:基於SGD的Logistic迴歸和SVM的訓練能夠在我常用的SKLearn中找到,由於它可讓我用一個通用接口來檢查LR和SVM。

7.前饋神經網絡(FFNN)

這能夠算的上是多層Logistic迴歸分類器。許多權重層被非線性(S形,tanh,relu + softmax和selu)分開了。它另一個的名字是多層感知器。FFNN可用於自動編碼器的分類和無監督特徵學習。

clipboard.png

多層感知器

clipboard.png

FFNN做爲自動編碼器

可使用FFNN做爲自動編碼器訓練分類器或用來特徵提取。

庫地址:

http://scikit-learn.org/stabl...

http://scikit-learn.org/stabl...

https://github.com/keras-team...

入門教程

http://www.deeplearningbook.o...

http://www.deeplearningbook.o...

http://www.deeplearningbook.o...

8.卷積神經網絡(Convnets)

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

clipboard.png

庫地址:

https://developer.nvidia.com/...

https://github.com/kuangliu/t...

https://github.com/chainer/ch...

https://keras.io/applications/

入門教程

http://cs231n.github.io/

https://adeshpande3.github.io...

9.遞歸神經網絡(RNNS)

RNN模型序列經過在時間t遞歸地對彙集器狀態施加相同的權重集,而且在時間t輸入(給定序列在時間t處具備輸入,而且在每一個時間t具備隱藏狀態,這是從RNN的t-1步輸出的)。如今不多使用純RNN,可是像LSTM和GRU這樣的同類模型在大多數序列建模任務中是最早進的。

clipboard.png

RNN(若是存在密集鏈接的單元和非線性,則如今的f一般是LSTM或GRU)。LSTM單元用於替代純RNN中的簡單緻密層。

clipboard.png

將RNN用於時間序列建模任務,特別是文本分類,機器翻譯和語言建模。

庫地址:

https://github.com/tensorflow...(來自Google的許多不錯的NLP研究論文都在這裏!)

https://github.com/wabyking/T...

http://opennmt.net/

入門教程:

http://cs224d.stanford.edu/

http://www.wildml.com/categor...

http://colah.github.io/posts/...

10.條件隨機字段(CRFS)

CRF多是機率圖形模型(PGM)系列中最經常使用的模型。它們用於像RNN同樣的序列建模,也能夠與RNN結合使用。在神經機器翻譯系統進入CRF以前,它們是最早進的技術,而且在許多具備小數據集的序列標記任務中,他們仍然表現的比RNN更好。它們也能夠用於其餘結構化預測任務,如圖像分割等。CRF對序列中的每一個元素(好比句子)進行建模,使得近鄰影響序列中某個組件的標籤,而不是全部標籤都彼此獨立。

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

庫地址:

https://sklearn-crfsuite.read...

入門教程

http://blog.echen.me/2012/01/...

https://www.youtube.com/watch...

11.決策樹

比方說,我給了一張有關各類水果數據的Excel工做表,我必須標註這是蘋果,那是其餘類型的水果。那麼,若是我要提出一個問題是「哪些水果是紅色的,那些事圓形的?」而且將全部回答用「是」和「否」來表示。如今,全部的紅色的和圓形的水果可能不是蘋果,全部的蘋果也都不會是紅色和圓形的。因此我會問一個問題:「哪些水果有紅色或黃色的提示?「紅色且爲圓形的水果,並會問「哪些水果是綠色且圓形的?而不是紅色和圓形水果?基於這些問題,我能夠等到準確的答案——蘋果。這個問題的解決方式就是使用決策樹。可是,這是基於個人直覺的決策樹。直覺不能處理高維和複雜的數據。咱們必須經過查看標記數據自動提出問題的級聯,這就是基於機器學習的決策樹所作的。像CART樹這樣的早期版本只能用於簡單的數據,可是對於愈來愈大的數據集,誤差-方差的權衡須要經過更好的算法來解決。如今使用的兩種常見決策樹算法是隨機森林(在其屬性的隨機子集上構建不一樣的分類器並將它們組合以用於輸出)和加強樹(Boosting Trees)(在其餘樹的基礎上對樹的級聯進行訓練,糾正它們下面的樹的錯誤)。

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

圖書館

http://scikit-learn.org/stabl...

http://scikit-learn.org/stabl...

http://xgboost.readthedocs.io...

https://catboost.yandex/

入門教程

http://xgboost.readthedocs.io...

https://arxiv.org/abs/1511.05741

https://arxiv.org/abs/1407.7502

http://education.parrotpredic...

以上是你能夠學習成爲數據科學家的十種機器學習算法。

文章標題《10 Machine Learning Algorithms You Should Know to Become a Data Scientist》

做者:Shashank Gupta

詳細內容請查看原文

相關文章
相關標籤/搜索