之前一個一個講還是有些零散而且更新的速度也慢,所以我還是打算先整理一波全部的算法,再逐一展開介紹比較好,原文來自Jason Brownlee 的文章《A Tour of Machine Learning Algorithms》。
那麼算法很多,如何做好分組有助於我們更好記住它們,作者給出了2條算法分組的方式:
下面就會從這2個角度來闡述一下機器學習的算法。
Algorithms Grouped by Learning Style
關於機器學習算法,有三種不同的學習方式:
1. Supervised Learning(監督學習)當輸入的數據集(我們稱之為訓練集)的數據有標籤,如好壞標籤,分類標籤等,那麼通過這些數據來建立的預測或者分類模型,屬於監督學習模型。
經典問題:classification and regression.(分類與回歸)
經典算法:Logistic Regression and the Back Propagation Neural Network.(邏輯回歸算法與BP神經網絡算法)
2. Unsupervised Learning(無監督學習)
與監督學習相反,訓練集中的數據並沒有標籤,這意味著你需要從這堆沒有標籤的數據中去提煉它們的特點規則等等,可能是通過數學推理過程來系統地減少冗餘,又或者是通過數據相似度來組織數據。
經典問題:clustering, dimensionality reduction and association rule learning.(聚類、降維、規則學習)
經典算法:the Apriori algorithm and k-Means.(這個專用名詞就不翻譯了)
3. Semi-Supervised Learning(半監督學習)
顧名思義,半監督學習意味著訓練數據有一部分有標籤,而一些沒有,一般而言,當訓練數據量過少時,監督學習得到的模型效果不能滿足需求,因此用半監督學習來增強效果。
經典問題:classification and regression.
經典算法:半監督SVM,高斯模型,KNN模型
Algorithms Grouped By Similarity
根據算法的功能相似性來區分算法也是一種很好的辦法,如基於樹結構的算法或者基於神經網絡的算法。所以我覺得從這個角度來了解這些算法會更加好。
即便這是一個很好的方式,但也絕非完美,仍會有一些算法不能簡單地被歸類,比如Learning Vector Quantization(LVQ,學習矢量量化算法),它既是神經網絡,也是基於距離的算法,所以下面的歸類也只是適用於大多數算法,但是常用的算法。
1. Regression Algorithms(回歸算法)回歸更多地關注自變量與因變量之間的關係,並通過對誤差的測算來建模,回歸算法是對於數學統計的一個很好應用,也被納入統計機器學習中。
常見的回歸算法包括:
Ordinary Least Squares Regression (OLSR,普通最小二乘回歸)
Linear Regression(線性回歸)
Logistic Regression(邏輯回歸)
Stepwise Regression(逐步回歸)
Multivariate Adaptive Regression Splines (MARS,多元自適應回歸)
Locally Estimated Scatterplot Smoothing (LOESS,本地散點平滑估計)
基於距離學習的模型非常常見,這類的模型是對訓練集數據進行建模並比較新數據與之的距離,而距離的衡量有很多,常見的是歐氏距離、曼哈頓距離等。
常見的算法包括:
k-Nearest Neighbor (kNN)
Learning Vector Quantization (LVQ,學習矢量量化)
Self-Organizing Map (SOM,自組織映射)
Locally Weighted Learning (LWL,局部加權學習)
正則化是對另一種方法(通常是回歸方法)的擴展,使基於其複雜性的模型受到懲罰,支持更簡單的模型,這些模型在泛化能力方面也比較好。
常見的正則化算法包括:
常見的決策樹算法包括:
Classification and Regression Tree (CART,分類回歸樹算法)
Iterative Dichotomiser 3 (ID3)
C4.5 and C5.0 (不同版本的區別)
Chi-squared Automatic Interaction Detection (CHAID)
Decision Stump(決策樹樁)
MD5(Message-Digest Algorithm,訊息摘要算法)
Conditional Decision Trees(條件決策樹)
基於貝葉斯定理的方式來構建的算法,常用語分類與回歸問題。
常見的貝葉斯算法包括:
Naive Bayes(樸素貝葉斯)
Gaussian Naive Bayes(高斯樸素貝葉斯)
Multinomial Naive Bayes(多項式樸素貝葉斯)
Averaged One-Dependence Estimators (AODE)
Bayesian Belief Network (BBN,貝葉斯定理網絡)
Bayesian Network (BN,貝葉斯網絡)
聚類(Cluster)分析是由若干模式(Pattern)組成的,通常,模式是一個度量(Measurement)的向量,或者是多維空間中的一個點。
聚類分析以相似性為基礎,在一個聚類中的模式之間比不在同一聚類中的模式之間具有更多的相似性。
常見的聚類算法包括:
最常見的算法包括:
Apriori algorithm
Eclat algorithm
最常見的算法包括:
最常見的算法包括:
Deep Boltzmann Machine (DBM)
Deep Belief Networks (DBN)
Convolutional Neural Network (CNN)
Stacked Auto-Encoders
這些方法中的許多可以用於分類和回歸。
常見的算法包括:
Principal Component Analysis (PCA)
Principal Component Regression (PCR)
Partial Least Squares Regression (PLSR)
Sammon Mapping
Multidimensional Scaling (MDS)
Projection Pursuit
Linear Discriminant Analysis (LDA)
Mixture Discriminant Analysis (MDA)
Quadratic Discriminant Analysis (QDA)
Flexible Discriminant Analysis (FDA)
這類算法是把更多精力放到了弱學習器身上,以及如何將它們結合起來。這是一門非常強大的技術,因此非常受歡迎。
常見的算法包括:
Boosting
Bootstrapped Aggregation (Bagging)
AdaBoost
Stacked Generalization (blending)
Gradient Boosting Machines (GBM)
Gradient Boosted Regression Trees (GBRT)
Random Forest
還有很多算法沒有被覆蓋到,大概還有下面的算法:
Feature selection algorithms(特徵選擇算法)
Algorithm accuracy evaluation(算法精度估計)
Performance measures(效果評估)
Computational intelligence (evolutionary algorithms, etc.)
Computer Vision (CV)
Natural Language Processing (NLP)
Recommender Systems
Reinforcement Learning
Graphical Models
And more…
Further Reading網絡上對這些算法有更加詳細的講解,需要大家自己動手去查了,這樣子才會更加了解這些算法內容,本文內容來自網絡,還有一些我覺得很有用的資料也在下面,大家可以抽時間去細細研究哈。
1)A Tour of Machine Learning Algorithms
https://machinelearningmastery.com/a-tour-of-machine-learning-algorithms/
2)機器學習該如何入門——張松陽的回答
https://www.zhihu.com/question/20691338/answer/53910077
Python愛好者社區歷史文章大合集:
Python愛好者社區歷史文章列表(每周append更新一次)
福利:文末掃碼立刻關注公眾號,「Python愛好者社區」,開始學習Python課程:
關注後在公眾號內回復「課程」即可獲取:
小編的Python入門視頻課程!!!
崔老師爬蟲實戰案例免費學習視頻。
丘老師數據科學入門指導免費學習視頻。
陳老師數據分析報告製作免費學習視頻。
玩轉大數據分析!Spark2.X+Python 精華實戰課程免費學習視頻。
丘老師Python網絡爬蟲實戰免費學習視頻。