十一種機器學習算法讓你擺脫“小白”稱號

從事機器學習的人往往都非常自信。其中一些人甚至會說“我是X方面的專家,X可以訓練任何類型的數據(X =某種算法)。其他一些則是適合工作人員工作的工具”。他們看起來似乎驕傲自大,但不可否認他們擁有深厚的專業知識,並且對機器學習的不同領域略都有所瞭解。也就是說:想成為一名數據科學家,我們必須瞭解一些常見機器學習算法的基礎知識,這將幫助我們解決我們遇到的問題。

十一種機器學習算法讓你擺脫“小白”稱號

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

PCA是一種無監督的方法,用於理解由矢量組成的數據集的全局屬性。分析數據點的協方差矩陣,以瞭解那些維度/數據點(有時)更重要。考慮頂級過程控制系統矩陣的一種方式是尋找具有最高特徵值的特徵向量。

SVD(奇異值分解)本質上是一種計算命令組件,但是你不需要得到協方差矩陣就可以計算。

十一種機器學習算法讓你擺脫“小白”稱號

該算法通過縮小數據點來幫助人們降低維度給人們帶來的難度。

相關內容:

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

http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html

入門教程:

https://arxiv.org/pdf/1404.1100.pdf

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

記住你的數值分析代碼,因為你可以用它來擬合線條和曲線來得到方程,或者使用它們對機器學習中的曲線進行擬合,以獲得低維度的小型的數據集。(需要注意的是,對於大量數據或多維數據集,你可能會過度擬合。) 還有,如果你在裡面使用了最小二乘法,那麼你不需要使用過於複雜的優化技術。

十一種機器學習算法讓你擺脫“小白”稱號

很明顯,這種算法非常適合簡單的曲線迴歸擬合

相關內容:

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

入門教程l:

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

3.約束線性迴歸

最小二乘法經常會與異常值,虛假域發生混淆。因此,我們需要約束線性迴歸來減少適合數據集的方差。擬合線性迴歸模型的目的是確保權重不會出現問題。具體內容參見下圖。(均方損失得到優化。)

十一種機器學習算法讓你擺脫“小白”稱號

通過這些算法我們可以避免過度擬合併屏蔽有問題的維度模型。

相關內容:

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

入門教程:

https://www.youtube.com/watch?v=5asL5Eq2x0A

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

4.K均值聚類

K-means算法是很典型的基於距離的聚類算法,採用距離作為相似性的評價指標,即認為兩個對象的距離越近,其相似度就越大。該算法認為簇是由距離靠近的對象組成的,因此把得到緊湊且獨立的簇作為最終目標。初始類聚類中心點的選取對聚類結果具有較大的影響。

十一種機器學習算法讓你擺脫“小白”稱號

從圖中可以看出,我們可以使用這個算法在數據集創建K聚類。

相關內容:

http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html

入門教程:

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

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

5.邏輯迴歸算法

邏輯迴歸是具有非線性約束的線性迴歸(大多使用Sigmoid函數,或者在加權後也可以使用tanh),因此輸出只能在0和1之間(對於Sigmoid函數,結果為1或0)。我們多通過梯度下降對交叉熵損失函數進行優化。需要對初學者強調的是:邏輯迴歸用於分類,而不是迴歸。你也可以把邏輯作單層神經網絡,使用梯度下降或L-BFGS等優化方法對邏輯迴歸進行訓練。 神經語言程序學的人們經常會用它對最大熵進行分類。

十一種機器學習算法讓你擺脫“小白”稱號

使用LR來訓練簡單但非常有用的分類器。

相關內容:

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

入門教程:

https:/www.youtube.com/watch?v=-la3q9d7AKQ

6.支持向量機(SVM)

支持向量機是線性模型,如線性/邏輯迴歸,區別在於它們具有不同的基於裕度的損失函數(支持向量的推導是作者在特徵值計算中看到的最漂亮的數學結果之一)。你可以使用諸如L-BFGS甚至SGD這樣的優化方法來優化損失函數。

十一種機器學習算法讓你擺脫“小白”稱號

SVM的另一個創新是向數據工程師提供數據內核。如果你有良好的洞察力,你可以用更智能的RBF內核替換它,並從中獲利。

SVM特徵之一是學習一個類分類器。

SVM可以用來訓練分類器(甚至是迴歸器)

相關內容:

http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html

入門教程:

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

7.前饋神經網絡

簡單的說,它是多層邏輯迴歸分類器。由非線性(sigmoid, tanh, relu + softmax and the cool new selu)分開的權重層。它另一個流行的名字是多層感知器。 前饋神經網絡可用於自動編碼器的分類和無監督特徵學習。

十一種機器學習算法讓你擺脫“小白”稱號

十一種機器學習算法讓你擺脫“小白”稱號

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

相關內容:

http://scikitlearn.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

入門教程:

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

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

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

8.卷積神經網絡(Convnet)

目前世界上幾乎所有基於視覺的機器學習結果都是使用卷積神經網絡實現的。它們可以用於圖像分類、目標檢測甚至圖像分割。需要補充的是,由Yann Lecun在80年代末90年代初發明的分層特徵提取器,你可以在文本(或圖表)中使用它。

十一種機器學習算法讓你擺脫“小白”稱號

利用卷積神經網絡進行圖像分類和文本分類、目標檢測、圖像分割。

相關內容:

https:/developer.nvidia.com/位

https:/github.com/kuangliu/torchcv

https:/github.com/chainer/chainercv

https:/keras.io/application/

入門教程:

http:/cs231n.github.io/

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

9.遞歸神經網絡(RNN)

遞歸神經網絡(RNN)通過遞歸將相同的權重集應用於聚合器狀態的時間t和輸入的時間t(給定序列在0.t.T時有輸入,並且在每一時刻t有一個隱藏狀態,這是RNN的第t-1步輸出)。現在很少只使用RNN,但LSTM和Grus這樣的RNN在大多數序列建模任務中仍受重視。

十一種機器學習算法讓你擺脫“小白”稱號

遞歸神經網絡(RNN)是兩種人工神經網絡的總稱。一種是時間遞歸神經網絡(recurrent neural network),另一種是結構遞歸神經網絡(recursive neural network)。時間遞歸神經網絡的神經元間連接構成有向圖,而結構遞歸神經網絡利用相似的神經網絡結構遞歸構造更為複雜的深度網絡。兩者訓練的算法不同,但屬於同一算法變體。

十一種機器學習算法讓你擺脫“小白”稱號

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

相關內容:

https:/github.com/TensorFlow/Model(來自谷歌的許多很棒的NLP研究論文都在這裡)

https://github.com/wabyking/TextClassificationBenchmark

http:/opennmt.net/

入門教程:

http:/cs224d.stanford.edu/

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

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

10.條件隨機字段(CRF)

CRF可能是Probabilitic Graphical Models(PGM)系列中最常用的模型。 它們應用於序列建模,也可以與RNN結合使用。 在神經機器翻譯系統進入CRF之前,它們是最先進的技術,並且在許多具有小數據集的序列標記任務中,它們比需要大量數據的RNN更實用。它們也可以用於其他結構化的預測任務,如圖像分割等。CRF對序列中的每個元素(比如句子)進行建模,使得能夠影響序列中某個組件的標籤,而不是令所有標籤相互獨立。

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

相關內容:

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

入門教程:

http://blog.echen.me/2012/01/03/introduction-to-conditional-random-fields/

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

11.決策樹

比方說,有一張記載了各種水果數據的Excel工作表,必須說出哪些看起來像蘋果。你需要做的是提出一個問題:“哪些水果是紅色和圓形的?”並且劃分所有“是”和“否”的回答。假設所有的紅色和圓形水果可能都不是蘋果。所以你需要再問一個問題:“哪種水果有紅色或黃色的提示?”紅色和圓形水果問:“哪些水果是綠色的和圓形的?”不是紅色和圓形水果。基於這些問題,你可以準確地分辨出哪些是蘋果。這一連串的問題就是決策樹。

但是,這是基於直覺的決策樹。直覺不能處理高維和複雜的數據。所以我們必須通過查看標記數據自動提出問題的級聯,這就是基於機器學習的決策樹。早期的CART樹曾用於簡單的數據,但是對於越來越大的數據集,偏差、方差權衡則需要用更好的算法來解決。現在使用的兩種常見的決策樹算法是隨機森林(其在屬性的隨機子集上構建不同的分類器並將它們組合以用於輸出)和增強樹(Boosting Trees)(它在樹的頂部訓練一層樹,糾正下面樹的的錯誤)。

決策樹可以用來分類數據點(甚至是迴歸)

相關內容:

http://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/

入門教程:

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

以上就是可以學習成為數據科學家的11種機器學習算法。希望能對你起到幫助。


分享到:


相關文章: