【友盟+】數據視野系列
原作者 | Muktabh Mayank, ParallelDots.
原文鏈接| https://www.kdnuggets.com/2018/04/10-machine-learning-algorithms-data-scientist.html
想成為數據科學家?你得是個博聞強識,又對新鮮事物保持好奇心的人。正因為如此,數據科學家會掌握幾乎所有的常見算法,並精通其中一門,這樣可以快速適應新領域的問題。
今天我們就來聊聊,每一位數據科技家都應該瞭解的10大機器學習算法。下面是關於普遍機器學習算法和快速資源的風暴之旅,準好了嗎?燒腦挑戰開始:
1. 主成分分析(PCA)/奇異值分解(SVD)
PCA是一種非監督學習,用來理解由向量組成的數據集的全局特性的方法。這裡分析了數據點的協方差模型,用來了解哪些維度(大部分)/數據點(有時)更重要,即在它們自身之間具有高方差,但與其他變量時協方差較低。
這種思考模型主要用於考量具有最高特徵值的特徵向量。此外,SVD本質上也是一種計算有序成分的方法,但你不需要通過獲取數據點的協方差矩陣來實現它。
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)具有封閉形式的解決方案,因此你不需要使用複雜的優化技術。
很明顯,你可以使用這種算法擬合簡單曲線/迴歸。
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迴歸)。經過正則處理後對均方損失進行優化。
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-均值聚類
這是所有人都喜歡的非監督學習聚類算法。給定一組矢量形式的數據點,我們可以基於它們之間的距離生成數據點群。它是一種期望最大化的算法,反覆地移動群組的中心,然後聚集每個群組中心點。此算法所採用的輸入是生成群組的數量,並且它將嘗試彙集群組的迭代次數。
從名稱中就可以看出,你可以使用這種算法在數據集中創建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自然語言處理者們通常把它稱之為最大熵分類器。
使用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等優化方法來優化損失函數。
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)分隔。它另一個比較知名的名字是多層感知器。前饋神經網絡作為自動編碼器,可用於分類和非監督特徵學習。
前饋神經網絡作為自動編碼器,可用於訓練分類器或提取特徵。
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年代初的發明,其特徵在於卷積層充當分層特徵提取器。你也可以在文本中使用它們(甚至是圖形)。
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。
RNN(如果有緊密連接和非線性,現在f通常是LSTMs和GRUs的)。在純的RNN中,LSTM單元取代了緊密連接層。
使用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表格,並需要告知哪些是蘋果時,會拋出這麼幾個問題:
·第一個問題:“哪些水果是紅色+圓形的?”
並用“是”和“否”來區分所有水果。
不過,所有的紅色+圓形水果可能不是蘋果,所有的蘋果都不會只是紅色+圓形的。
·第二個問題:在所有的紅色+圓形水果中“哪些有紅色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種算法都是模式識別,而不是策略學習。要通過學習策略解決一個多步驟的問題,比如贏得國際象棋遊戲或玩雅達利遊戲機,我們需要反覆訓練並從獎懲制度中學習。
這部分機器學習技術我們稱之為深度強化學習。在這一領域的許多成功案例是融合了Convent或LSTM 的感知能力產生的結果,這一些列算法稱之為時間差異學習。
這裡麵包括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],感謝您的關注!
閱讀更多 友盟 的文章