之前一个一个讲还是有些零散而且更新的速度也慢,所以我还是打算先整理一波全部的算法,再逐一展开介绍比较好,原文来自Jason Brownlee 的文章《A Tour of Machine Learning Algorithms》。
那么算法很多,如何做好分组有助于我们更好记住它们,作者给出了2条算法分组的方式:
- The first is a grouping of algorithms by the learning style.(通过算法的学习方式)
- The second is a grouping of algorithms by similarity in form or function (like grouping similar animals together).(通过算法的功能)
下面就会从这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,本地散点平滑估计)
2. Instance-based Algorithms(基于距离的算法)
基于距离学习的模型非常常见,这类的模型是对训练集数据进行建模并比较新数据与之的距离,而距离的衡量有很多,常见的是欧氏距离、曼哈顿距离等。
常见的算法包括:
- k-Nearest Neighbor (kNN)
- Learning Vector Quantization (LVQ,学习矢量量化)
- Self-Organizing Map (SOM,自组织映射)
- Locally Weighted Learning (LWL,局部加权学习)
3. Regularization Algorithms(正则化算法)
正则化是对另一种方法(通常是回归方法)的扩展,使基于其复杂性的模型受到惩罚,支持更简单的模型,这些模型在泛化能力方面也比较好。
常见的正则化算法包括:
- Ridge Regression(岭回归算法)
- Least Absolute Shrinkage and Selection Operator (LASSO算法,稀疏约束)
- Elastic Net(弹性网络)
- Least-Angle Regression (LARS,最小角回归算法)
4. Decision Tree Algorithms(决策树算法)
决策树方法构建基于数据中属性的实际值来建模的,决策树经常被训练用于分类和回归问题,决策树通常是快速和准确的,并且是机器学习中最受欢迎的。
常见的决策树算法包括:
- 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(条件决策树)
5. Bayesian Algorithms(贝叶斯算法)
基于贝叶斯定理的方式来构建的算法,常用语分类与回归问题。
常见的贝叶斯算法包括:
- Naive Bayes(朴素贝叶斯)
- Gaussian Naive Bayes(高斯朴素贝叶斯)
- Multinomial Naive Bayes(多项式朴素贝叶斯)
- Averaged One-Dependence Estimators (AODE)
- Bayesian Belief Network (BBN,贝叶斯定理网络)
- Bayesian Network (BN,贝叶斯网络)
6. Clustering Algorithms(聚类算法)
聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法,同时也是数据挖掘的一个重要算法。
聚类(Cluster)分析是由若干模式(Pattern)组成的,通常,模式是一个度量(Measurement)的向量,或者是多维空间中的一个点。
聚类分析以相似性为基础,在一个聚类中的模式之间比不在同一聚类中的模式之间具有更多的相似性。
常见的聚类算法包括:
- k-Means
- k-Medians
- Expectation Maximisation (EM,Expectation Maximization Algorithm,是一种迭代算法)
- Hierarchical Clustering(层次聚类)
7. Association Rule Learning Algorithms(关联规则学习算法)
关联规则学习方法提取的规则最能解释数据中变量之间的关系,这些规则可以在大型多维数据集中发现重要和商业有用的关联,而被组织利用。
最常见的算法包括:
- Apriori algorithm
- Eclat algorithm
8. Artificial Neural Network Algorithms(人工神经网络算法)
人工神经网络是受生物神经网络结构和/或功能启发的模型,它们是一类模式匹配,通常用于回归和分类问题,但实际上是一个巨大的子字段,包含数百种算法和各种类型的问题类型。
最常见的算法包括:
- Perceptron(感知器)
- Back-Propagation(反向传播法)
- Hopfield Network(霍普菲尔网络)
- Radial Basis Function Network (RBFN,径向基函数网络)
9. Deep Learning Algorithms(深度学习算法)
深度学习方法是利用大量廉价计算的人工神经网络的更新,它关心的是构建更大更复杂的神经网络,正如上面所提到的,许多方法都与半监督学习问题有关,在这些问题中,大型数据集包含的标签数据非常少。
最常见的算法包括:
- Deep Boltzmann Machine (DBM)
- Deep Belief Networks (DBN)
- Convolutional Neural Network (CNN)
- Stacked Auto-Encoders
10. Dimensionality Reduction Algorithms(降维算法)
像聚类方法一样,维数的减少有利于寻找到数据的关联关系,但在这种情况下,是不受监督的方式,或者用较少的信息来概括或描述数据。
这些方法中的许多可以用于分类和回归。
常见的算法包括:
- 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)
11. Ensemble Algorithms(集成算法)
集成方法是由多个较弱的模型而组成的模型,这些模型是独立训练的,它们的预测在某种程度上是结合在一起来进行总体预测的。
这类算法是把更多精力放到了弱学习器身上,以及如何将它们结合起来。这是一门非常强大的技术,因此非常受欢迎。
常见的算法包括:
- Boosting
- Bootstrapped Aggregation (Bagging)
- AdaBoost
- Stacked Generalization (blending)
- Gradient Boosting Machines (GBM)
- Gradient Boosted Regression Trees (GBRT)
- Random Forest
12. Other Algorithms(其他算法)
还有很多算法没有被覆盖到,大概还有下面的算法:
- 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