收藏:機器學習27張速查表、13種演算法和4種學習方法
編輯:私募工場,轉載請註明出處
機器學習的演算法很多。很多時候困惑人們都是,很多演算法是一類演算法,而有些演算法又是從其他演算法中延伸出來的。這裡,我們從兩個方面來給大家介紹,第一個方面是學習的方式,第二個方面是演算法的分類。
一、4大主要學習方式
1.監督式學習
在監督式學習下,輸入資料被稱為“訓練資料”,每組訓練資料有一個明確的標識或結果,如對防垃圾郵件系統中“垃圾郵件”“非垃圾郵件”,對手寫數字識別中的“1“,”2“,”3“,”4“等。
在建立預測模型的時候,監督式學習建立一個學習過程,將預測結果與“訓練資料”的實際結果進行比較,不斷的調整預測模型,直到模型的預測結果達到一個預期的準確率。
監督式學習的常見應用場景如分類問題和迴歸問題。常見演算法有邏輯迴歸(Logistic Regression)和反向傳遞神經網路(Back Propagation Neural Network)。
2.強化學習
在這種學習模式下,輸入資料作為對模型的反饋,不像監督模型那樣,輸入資料僅僅是作為一個檢查模型對錯的方式,在強化學習下,輸入資料直接反饋到模型,模型必須對此立刻作出調整。
常見的應用場景包括動態系統以及機器人控制等。常見演算法包括Q-Learning以及時間差學習(Temporal difference learning)。
3. 非監督式學習
在非監督式學習中,資料並不被特別標識,學習模型是為了推斷出資料的一些內在結構。常見的應用場景包括關聯規則的學習以及聚類等。常見演算法包括Apriori演算法以及k-Means演算法。
4.半監督式學習
在此學習方式下,輸入資料部分被標識,部分沒有被標識,這種學習模型可以用來進行預測,但是模型首先需要學習資料的內在結構以便合理的組織資料來進行預測。
應用場景包括分類和迴歸,演算法包括一些對常用監督式學習演算法的延伸,這些演算法首先試圖對未標識資料進行建模,在此基礎上再對標識的資料進行預測。如圖論推理演算法(Graph Inference)或者拉普拉斯支援向量機(Laplacian SVM.)等。
二、13種常用演算法
根據演算法的功能和形式的類似性,我們可以把演算法分類,比如說基於樹的演算法,基於神經網路的演算法等等。當然,機器學習的範圍非常龐大,有些演算法很難明確歸類到某一類。
1.迴歸演算法
迴歸演算法是試圖採用對誤差的衡量來探索變數之間的關係的一類演算法。迴歸演算法是統計機器學習的利器。在機器學習領域,人們說起迴歸,有時候是指一類問題,有時候是指一類演算法,這一點常常會使初學者有所困惑。
常見的迴歸演算法包括:最小二乘法(Ordinary Least Square),邏輯迴歸(Logistic Regression),逐步式迴歸(Stepwise Regression),多元自適應迴歸樣條(Multivariate Adaptive Regression Splines)以及本地散點平滑估計(Locally Estimated Scatterplot Smoothing)。
2. 正則化方法
正則化方法是其他演算法(通常是迴歸演算法)的延伸,根據演算法的複雜度對演算法進行調整。正則化方法通常對簡單模型予以獎勵而對複雜演算法予以懲罰。
常見的演算法包括:Ridge Regression, Least Absolute Shrinkage and Selection Operator(LASSO),以及彈性網路(Elastic Net)。
3.決策樹學習
決策樹演算法根據資料的屬性採用樹狀結構建立決策模型, 決策樹模型常常用來解決分類和迴歸問題。
常見的演算法包括:分類及迴歸樹(Classification And Regression Tree, CART), ID3 (Iterative Dichotomiser 3), C4.5, Chi-squared Automatic Interaction Detection(CHAID), Decision Stump, 隨機森林(Random Forest), 多元自適應迴歸樣條(MARS)以及梯度推進機(Gradient Boosting Machine, GBM)
4.基於例項的演算法
基於例項的演算法常常用來對決策問題建立模型,這樣的模型常常先選取一批樣本資料,然後根據某些近似性把新資料與樣本資料進行比較。通過這種方式來尋找最佳的匹配。因此,基於例項的演算法常常也被稱為“贏家通吃”學習或者“基於記憶的學習”。
常見的演算法包括 k-Nearest Neighbor(KNN), 學習向量量化(Learning Vector Quantization, LVQ),以及自組織對映演算法(Self-Organizing Map , SOM)。
5.貝葉斯方法
貝葉斯方法演算法是基於貝葉斯定理的一類演算法,主要用來解決分類和迴歸問題。
常見演算法包括:樸素貝葉斯演算法,平均單依賴估計(Averaged One-Dependence Estimators, AODE),以及Bayesian Belief Network(BBN)。
6.聚類演算法
聚類,就像迴歸一樣,有時候人們描述的是一類問題,有時候描述的是一類演算法。聚類演算法通常按照中心點或者分層的方式對輸入資料進行歸併。所以的聚類演算法都試圖找到資料的內在結構,以便按照最大的共同點將資料進行歸類。
常見的聚類演算法包括 k-Means演算法以及期望最大化演算法(Expectation Maximization, EM)。
7.降低維度演算法
像聚類演算法一樣,降低維度演算法試圖分析資料的內在結構,不過降低維度演算法是以非監督學習的方式試圖利用較少的資訊來歸納或者解釋資料。這類演算法可以用於高維資料的視覺化或者用來簡化資料以便監督式學習使用。
常見的演算法包括:主成份分析(Principle Component Analysis, PCA),偏最小二乘迴歸(Partial Least Square Regression,PLS), Sammon對映,多維尺度(Multi-Dimensional Scaling, MDS), 投影追蹤(Projection Pursuit)等。
8.關聯規則學習
關聯規則學習通過尋找最能夠解釋資料變數之間關係的規則,來找出大量多後設資料集中有用的關聯規則。
常見演算法包括 Apriori演算法和Eclat演算法等。
9.遺傳演算法(genetic algorithm)
遺傳演算法模擬生物繁殖的突變、交換和達爾文的自然選擇(在每一生態環境中適者生存)。
它把問題可能的解編碼為一個向量,稱為個體,向量的每一個元素稱為基因,並利用目標函式(相應於自然選擇標準)對群體(個體的集合)中的每一個個體進行評價,根據評價值(適應度)對個體進行選擇、交換、變異等遺傳操作,從而得到新的群體。
遺傳演算法適用於非常複雜和困難的環境,比如,帶有大量噪聲和無關資料、事物不斷更新、問題目標不能明顯和精確地定義,以及通過很長的執行過程才能確定當前行為的價值等。
10.人工神經網路
人工神經網路演算法模擬生物神經網路,是一類模式匹配演算法。通常用於解決分類和迴歸問題。人工神經網路是機器學習的一個龐大的分支,有幾百種不同的演算法。
(其中深度學習就是其中的一類演算法,我們會單獨討論),重要的人工神經網路演算法包括:感知器神經網路(Perceptron Neural Network), 反向傳遞(Back Propagation), Hopfield網路,自組織對映(Self-Organizing Map, SOM)。
11.深度學習
深度學習演算法是對人工神經網路的發展。 在近期贏得了很多關注, 特別是百度也開始發力深度學習後, 更是在國內引起了很多關注。 在計算能力變得日益廉價的今天,深度學習試圖建立大得多也複雜得多的神經網路。很多深度學習的演算法是半監督式學習演算法,用來處理存在少量未標識資料的大資料集。
常見的深度學習演算法包括:受限波爾茲曼機(Restricted Boltzmann Machine, RBN), Deep Belief Networks(DBN),卷積網路(Convolutional Network), 堆疊式自動編碼器(Stacked Auto-encoders)。
12.基於核的演算法
基於核的演算法中最著名的莫過於支援向量機(SVM)了。 基於核的演算法把輸入資料對映到一個高階的向量空間, 在這些高階向量空間裡, 有些分類或者回歸問題能夠更容易的解決。
常見的基於核的演算法包括:支援向量機(Support Vector Machine, SVM), 徑向基函式(Radial Basis Function ,RBF), 以及線性判別分析(Linear Discriminate Analysis ,LDA)等。
13.整合演算法
整合演算法用一些相對較弱的學習模型獨立地就同樣的樣本進行訓練,然後把結果整合起來進行整體預測。整合演算法的主要難點在於究竟整合哪些獨立的較弱的學習模型以及如何把學習結果整合起來。這是一類非常強大的演算法,同時也非常流行。
常見的演算法包括:Boosting, Bootstrapped Aggregation(Bagging), AdaBoost,堆疊泛化(Stacked Generalization, Blending),梯度推進機(Gradient Boosting Machine, GBM),隨機森林(Random Forest),GBDT(Gradient Boosting Decision Tree)。
機器學習(Machine Learning)有不少有用的流程圖和機器學習演算法表。 這裡只包括所發現的最全面的速查表。
三、27張機器學習速查表
神經網路架構(NeuralNetwork Architectures)
來源:http://www.asimovinstitute.org/neural-network-zoo/
Microsoft Azure演算法流程圖(Microsoft AzureAlgorithm Flowchart)
來源:https://docs.microsoft.com/en-us/azure/machine-learning/machine-learning-algorithm-cheat-sheet
SAS演算法流程圖(SAS Algorithm Flowchart)
來源:http://blogs.sas.com/content/subconsciousmusings/2017/04/12/machine-learning-algorithm-use/
演算法總結(AlgorithmSummary)
來源:http://machinelearningmastery.com/a-tour-of-machine-learning-algorithms/
來源: http://thinkbigdata.in/best-known-machine-learning-algorithms-infographic/
演算法優缺點(AlgorithmPro/Con)
來源:https://blog.dataiku.com/machine-learning-explained-algorithms-are-your-friend
Python
當然Python有很多線上資源。 對於本節只包括所遇到的最好的速查表。
演算法(Algorithms)
來源:https://www.analyticsvidhya.com/blog/2015/09/full-cheatsheet-machine-learning-algorithms/
Python基礎(Python Basics)
來源:http://datasciencefree.com/python.pdf
來源:https://www.datacamp.com/community/tutorials/python-data-science-cheat-sheet-basics#gs.0x1rxEA
Numpy
來源:https://www.dataquest.io/blog/numpy-cheat-sheet/
來源:http://datasciencefree.com/numpy.pdf
來源:https://www.datacamp.com/community/blog/python-numpy-cheat-sheet#gs.Nw3V6CE
來源:https://github.com/donnemartin/data-science-ipython-notebooks/blob/master/numpy/numpy.ipynb
Pandas
來源:http://datasciencefree.com/pandas.pdf
來源:https://www.datacamp.com/community/blog/python-pandas-cheat-sheet#gs.S4P4T=U
來源:https://github.com/donnemartin/data-science-ipython-notebooks/blob/master/pandas/pandas.ipynb
Matplotlib
來源:https://www.datacamp.com/community/blog/python-matplotlib-cheat-sheet
來源:https://github.com/donnemartin/data-science-ipython-notebooks/blob/master/matplotlib/matplotlib.ipynb
Scikit Learn
來源:http://peekaboo-vision.blogspot.de/2013/01/machine-learning-cheat-sheet-for-scikit.html
來源:http://peekaboo-vision.blogspot.de/2013/01/machine-learning-cheat-sheet-for-scikit.html
來源:https://github.com/rcompton/ml_cheat_sheet/blob/master/supervised_learning.ipynb
Tensorflow
來源:https://github.com/aymericdamien/TensorFlow-Examples/blob/master/notebooks/1_Introduction/basic_operations.ipynb
Pytorch
來源:https://github.com/bfortuner/pytorch-cheatsheet
數學(Math)
如果你真的想了解機器學習,那麼需要對統計(特別是概率)、線性代數和微積分的理解打下堅實的基礎。在本科期間我輔修數學,但是我肯定需要複習這些知識。 這些速查表提供了大多數需要了解最常見的機器學習演算法背後的數學。
概率(Probability)
來源:http://www.wzchen.com/s/probability_cheatsheet.pdf
線性代數(Linear Algebra)
來源:https://minireference.com/static/tutorials/linear_algebra_in_4_pages.pdf
統計學(Statistics)
來源:http://web.mit.edu/~csvoss/Public/usabo/stats_handout.pdf
微積分(Calculus)
來源:http://tutorial.math.lamar.edu/getfile.aspx?file=B,41,N
點選下方“閱讀原文”下載【科技頭條】↓↓↓相關文章
- 火爆 GitHub 的 16 張機器學習速查表,值得收藏!Github機器學習
- 13 種機器學習演算法概述(附 Python、R 程式碼)機器學習演算法Python
- 機器學習13種演算法的優缺點,你都知道哪些?機器學習演算法
- 學習和使用技術的4種層次
- 值得收藏的27個機器學習的小抄機器學習
- 【機器學習】新手必看的十種機器學習演算法機器學習演算法
- 13種Gemini 1.5和GPT-4o使用案例GPT
- 《機器學習導論》和《統計機器學習》學習資料:張志華教授機器學習
- 0基礎如何學習Python?4種方法告訴你!Python
- 機器學習沒有捷徑,根據機器學習演算法地圖學習是最有效的一種方式!機器學習演算法地圖
- 資源 | 值得收藏的 27 個機器學習的小抄機器學習
- 「資料科學家」必備的10種機器學習演算法資料科學機器學習演算法
- 25種Java機器學習工具和庫Java機器學習
- C#去除字串空格的幾種方法收藏C#字串
- 在機器學習領域,主要的學習方式是哪幾種?機器學習
- CTF學習(7):Misc(N種方法解決)
- 學會這10種機器學習演算法,你才算入門(附教程)機器學習演算法
- 資料科學家應該掌握的12種機器學習演算法資料科學機器學習演算法
- JS陣列學習之清空全部元素的4種方法(程式碼詳解)JS陣列
- mac防止休眠的4種方法Mac
- 演算法(第4版)練習題1.1.27的三種解法演算法
- 幾種機器學習演算法的偏差以及防範機器學習演算法
- 收藏!AI 最全乾貨超級大列表,100+ 張速查表全了!AI
- php實現4種排序演算法PHP排序演算法
- 10 種機器學習演算法的要點(附 Python 和 R 程式碼)機器學習演算法Python
- 交流學習SAP ERP的各種問題和方法,如何快速入行?
- 【建議收藏】五種方法教你python字串連線!Python字串
- 機器學習演算法學習筆記機器學習演算法筆記
- JavaScript建立物件4種方法詳解JavaScript物件
- gpt4free 兩種部署方法GPT
- 成為資料科學家應該知道的10種機器學習演算法資料科學機器學習演算法
- 各種學習資料
- 學習Google在解決問題方面的4種思想Go
- windows主機和ubuntu互傳檔案的4種方法WindowsUbuntu
- 學習和使用技術的四種層次
- 【譯文】偽標籤學習導論 - 一種半監督學習方法
- 13、資料,學習和建模
- js的13種繼承JS繼承