「友盟+」數據視野:10大機器學習算法,看懂你就是數據科學家

【友盟+】數據視野系列

原作者 | Muktabh Mayank, ParallelDots.

原文鏈接| https://www.kdnuggets.com/2018/04/10-machine-learning-algorithms-data-scientist.html

想成為數據科學家?你得是個博聞強識,又對新鮮事物保持好奇心的人。正因為如此,數據科學家會掌握幾乎所有的常見算法,並精通其中一門,這樣可以快速適應新領域的問題。

今天我們就來聊聊,每一位數據科技家都應該瞭解的10大機器學習算法。下面是關於普遍機器學習算法和快速資源的風暴之旅,準好了嗎?燒腦挑戰開始:

1. 主成分分析(PCA)/奇異值分解(SVD)

PCA是一種非監督學習,用來理解由向量組成的數據集的全局特性的方法。這裡分析了數據點的協方差模型,用來了解哪些維度(大部分)/數據點(有時)更重要,即在它們自身之間具有高方差,但與其他變量時協方差較低。

這種思考模型主要用於考量具有最高特徵值的特徵向量。此外,SVD本質上也是一種計算有序成分的方法,但你不需要通過獲取數據點的協方差矩陣來實現它。

「友盟+」數據視野:10大機器學習算法,看懂你就是數據科學家

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

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

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

2.1 最小二乘法和多項式擬合

還記得你在大學裡學的數值分析編碼嗎?通過擬合直線和曲線得到一個方程。現在,你可以使用它們來適配機器學習中的曲線,用於非常小的低維數據集。對於大數據或多維度的數據集,你可能會需要過度擬合,所以不用費心。普通最小二乘法(OLS)具有封閉形式的解決方案,因此你不需要使用複雜的優化技術。

「友盟+」數據視野:10大機器學習算法,看懂你就是數據科學家

很明顯,你可以使用這種算法擬合簡單曲線/迴歸。

Libraries:

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

Introductory Tutorial:

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

2.2 約束性線性迴歸

最小二乘法可能會被數據中的離群點、假維度和噪聲干擾。因此,我們需要用約束來減少數據集上擬合的線的方差。正確的方法是擬合一個權重可控的線性迴歸模型。模型可以用L1正則(LASSO)或L2正則(Ridge Regression)或二者混合(elastic迴歸)。經過正則處理後對均方損失進行優化。

「友盟+」數據視野:10大機器學習算法,看懂你就是數據科學家

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

Introductory Tutorial(s):https://www.youtube.com/watch?v=5asL5Eq2x0A

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

3. K-均值聚類

這是所有人都喜歡的非監督學習聚類算法。給定一組矢量形式的數據點,我們可以基於它們之間的距離生成數據點群。它是一種期望最大化的算法,反覆地移動群組的中心,然後聚集每個群組中心點。此算法所採用的輸入是生成群組的數量,並且它將嘗試彙集群組的迭代次數。

「友盟+」數據視野:10大機器學習算法,看懂你就是數據科學家

從名稱中就可以看出,你可以使用這種算法在數據集中創建K集群。

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

Introductory Tutorial(s):https://www.youtube.com/watch?v=hDmNF9JG3lo

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

4. 邏輯迴歸

邏輯迴歸是一種約束線性迴歸,它的結果進行了非線性變換(常用的是sigmoid函數,或者tanh也可以),因此把輸出限制成了+/-類的輸出(在sigmoid中是1和0)。

交叉熵損失函數(Cross-Entropy Loss)用梯度下降法(Gradient Descent)優化。對初學者來說,邏輯迴歸用於分類,而不是迴歸。你也可以把邏輯迴歸看作一層神經網絡。邏輯迴歸通過使用梯度下降法或者L-BFGS算法優化。NLP自然語言處理者們通常把它稱之為最大熵分類器。

「友盟+」數據視野:10大機器學習算法,看懂你就是數據科學家

使用LR來訓練非常簡單,卻是十分強有力的分類器。

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

Introductory Tutorial(s):https://www.youtube.com/watch?v=-la3q9d7AKQ

5.SVM(支持向量機)

SVM(支持向量機)是線性模型,類似線性/邏輯迴歸。不同之處在於它們具有不同的基於邊際損失函數(支持向量的推導是我所看到過的最美的數理成果之一,和特徵值的計算可以媲美)。你可以使用諸如B-FGS甚至SGD等優化方法來優化損失函數。

「友盟+」數據視野:10大機器學習算法,看懂你就是數據科學家

SVMs的另一個創新是,在特徵工程中kernel使用。如果你有很好的領域洞察力,你可以用更好的kernel來代替舊的RBF kernel,並從中受益。

SVMs獨一無二的特性就是可以學習一個類別的分類器

SVMs可以用來訓練分類器(甚至迴歸函數)。

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

Introductory Tutorial(s):https://www.youtube.com/watch?v=eHsErlPJWUU

6. 前饋神經網絡

這些基本上是多層邏輯迴歸分類器。許多層權重由非線性(SigMOID,TANH,Relu+SULTMax和cool new SELU)分隔。它另一個比較知名的名字是多層感知器。前饋神經網絡作為自動編碼器,可用於分類和非監督特徵學習。

「友盟+」數據視野:10大機器學習算法,看懂你就是數據科學家

「友盟+」數據視野:10大機器學習算法,看懂你就是數據科學家

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

Libraries:http://scikit-learn.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

Introductory Tutorial(s):

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

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

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

7. 卷積神經網絡(Convnets)

當今,世界上幾乎所有基於視覺的機器學習成果,都已經通過卷積神經網絡實現。它們可以用於圖像分類、目標檢測甚至圖像分割

這是Yann Lecun在上世紀80年代末90年代初的發明,其特徵在於卷積層充當分層特徵提取器。你也可以在文本中使用它們(甚至是圖形)。

「友盟+」數據視野:10大機器學習算法,看懂你就是數據科學家

convnets用於最先進的圖像和文本分類、目標檢測、圖像分割。

Libraries:

https://developer.nvidia.com/digits

https://github.com/kuangliu/torchcv

https://github.com/chainer/chainercv

https://keras.io/applications/

Introductory Tutorial(s):http://cs231n.github.io/

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

8. 遞歸神經網絡(RNNs)

RNN通過在聚合狀態下遞歸的使用同樣的權重來對一個序列建模。前提是這個序列在0..t..T時間點上有輸入,並且在時間t有從RNN的t-1步輸出的隱含層。

現在純的RNN已經很少使用了,取而代之的是代表序列建模最前沿的,與它對應的LSTMs和GRUs。

「友盟+」數據視野:10大機器學習算法,看懂你就是數據科學家

RNN(如果有緊密連接和非線性,現在f通常是LSTMs和GRUs的)。在純的RNN中,LSTM單元取代了緊密連接層。

「友盟+」數據視野:10大機器學習算法,看懂你就是數據科學家

使用RNNs去完成序列建模的任務,如文本分類、機器翻譯、語言建模。

Library:

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

https://github.com/wabyking/TextClassificationBenchmark

http://opennmt.net/

Introductory Tutorial(s):

http://cs224d.stanford.edu/

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

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

9. 條件隨機場(CRFs)

CRFS可能是概率圖形模型家族(PGMs)中最常用的模型。它們被用於像RNNs這樣的序列建模,也可以與RNNs結合使用。它是神經機器翻譯系統進入CRFs之前最先進的技術,並且在許多序列中用小的數據集標記任務。

目前,CRFS仍然比RNNs這樣需要大量數據量支撐的算法更有優勢。它們也可用於其他結構化預測任務,如圖像分割等。CRF對序列中的每一個元素(例如一個句子)進行建模,使得其序列中某個組件的標籤相互影響,而不是所有的標籤彼此獨立。

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

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

Introductory Tutorial(s):http://blog.echen.me/2012/01/03/introduction-to-conditional-random-fields/

10. 決策樹

假如,我得到一份關於各種水果數據的Excel表格,並需要告知哪些是蘋果時,會拋出這麼幾個問題:

「友盟+」數據視野:10大機器學習算法,看懂你就是數據科學家

·第一個問題:“哪些水果是紅色+圓形的?”

並用“是”和“否”來區分所有水果。

不過,所有的紅色+圓形水果可能不是蘋果,所有的蘋果都不會只是紅色+圓形的。

·第二個問題:在所有的紅色+圓形水果中“哪些有紅色or黃色的特徵?”

同時我也會問,在所有非紅色的圓形水果中“哪些是綠色+圓的。”

基於這些問題,我可以準確地分辨出哪些是蘋果。

這一連串的問題就是決策樹。

但是,這是一個基於我們直覺的決策樹。直覺並不能在高維和複雜的數據上工作。我們必須通過查看標記數據來自動提出這一連串的問題。這就是基於決策樹的機器學習技術所要做的。

早期的版本如CART樹,曾經被用於處理簡單的數據,但隨著數據集越來越大,權衡方差與偏差需要用更好的算法來解決。如今正在使用的兩種常用決策樹算法是隨機森林(在屬性的隨機子集上建立不同的分類器,並將它們組合成輸出)和提升樹(它不停地訓練上層,用於糾正下層的錯誤)

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

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

Introductory Tutorial:

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

TD算法(值得擁有)

如果你還想知道上述任何一種算法,是如何做到像Deepmind Go那樣擊敗世界冠軍,很遺憾它們做不到。

在這之前我們討論的所有10種算法都是模式識別,而不是策略學習。要通過學習策略解決一個多步驟的問題,比如贏得國際象棋遊戲或玩雅達利遊戲機,我們需要反覆訓練並從獎懲制度中學習。

這部分機器學習技術我們稱之為深度強化學習。在這一領域的許多成功案例是融合了ConventLSTM

的感知能力產生的結果,這一些列算法稱之為時間差異學習

這裡麵包括Q-Learning, SARSA和一些其它變型。這些算法在Bellman’s equations貝爾曼方程中非常智能,它可以通過從環境中獲得的獎勵訓練,從而獲取損失函數。

這些算法大多用於自動玩遊戲,以及其他與語言生成和目標檢測有關的應用。

相關資料

·Top 20 Deep Learning Papers, 2018 Edition

·Hierarchical Classification – a useful approach for predicting thousands of possible categories

·The 10 Deep Learning Methods AI Practitioners Need to Apply

關於【友盟+】:【友盟+】全球領先的第三方全域數據服務商。擁有實時更新的全域數據資源、7億真實活躍消費者畫像體系、強大的數據技術和領先的算法能力。在此之上,構建了以數據智能平臺為核心,涵蓋互聯網運營數據服務、營銷數據服務、新零售數據服務、金融及手機行業大數據解決方案的產品體系,幫助企業激發數據智能的潛力,驅動品牌/業務持續增長。

歡迎友好轉載,轉載時請註明出處,文章截取或修改以及授請發郵件至:[email protected],感謝您的關注!



分享到:


相關文章: