您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件开发专栏 > 大数据 > 正文

数据科学家须知的19个机器学习算法

发表于:2018-10-18 作者:陈峻编译 来源:51cto

那些数据科学家须知的19个机器学习算法

机器学习算法介绍

在机器学习算法的领域,我们一般采用两种方法来进行分类,它们是:

  • 第一种是根据学习的方式,进行算法分类。
  • 第二种是根据形式或功能的相似性,进行算法分类。

一般情况下,这两大类不分伯仲。此次,我们主要探究的是根据相似度分类的算法、及其各种不同的类型。

按学习方式进行分类的机器学习算法

一般而言,同一种算法会根据不同的互动体验,对一个问题采取不同的建模方式。而这并不会影响到我们对于输入数据的调用。同时,一些算法会经常出现在时下流行的机器学习、和人工智能领域的教科书中。

因此,面对不同的应用场景,人们首先需要考虑的是一个算法所适用的学习方式。在下文中,我们将探讨机器学习算法的几个主要学习方式,以及不同算法所适用的问题场景与用例。通过综合考虑各种输入数据所扮演的“角色”、和模型准备的不同流程,您将会根据自己的问题选择出最适合的一种算法,并最终得到最佳结果。

下面先让我们来看看三种不同的学习方式:

监督学习

在监督式学习下,输入数据被称为“训练数据”,它们都具有已知的标签或结果,例如“垃圾邮件”、“非垃圾邮件”、或某个时刻的股票价格等。监督式学习通过一个训练的过程,来建立一种预测模型。它们通过将预测结果与“训练数据”的实际结果相比较,来不断的修正预测结果。因此,该训练过程会持续下去,直至模型达到了预期的水平。

  • 常见应用场景包括:分类问题和回归问题。
  • 常见算法包括:逻辑回归(Logistic Regression)和反向传递神经网络(Back Propagation Neural Network)

无监督学习

在非监督式学习中,输入数据并不被标记,也没有某个已知的结果。我们必须通过推导输入数据的内在结构,来准备相应的模型。我们可以提取出一些通用的规则,同时也可以通过某个数学过程,来减少冗余。

  • 常见的应用场景包括:聚类、降维、和关联规则学习。
  • 常见算法包括:先验(Apriori)算法和K-均值(k-Means)算法。

半监督学习

在半监督式学习中,输入数据是被标记和未标记样本的混合物。它同样具有期望的预测目标。该模式必须通过学习不同的结构,来组织各种数据,从而做出预测。

  • 常见应用场景包括:分类问题和回归问题。
  • 常见算法包括:一些针对其他灵活的监督式学习算法的延伸,这些算法试图对未标识数据进行建模。

按相似性进行分类的算法

机器学习算法通常会按照功能的相似性进行分类,其中包括:基于(决策)树的方法、和神经网络的启发方法。我个人认为这是对机器学习算法最有效、最实用的分类方法。当然,也有些算法会横跨多个类别,例如:学习矢量量化(Learning Vector Quantization)。该算法是神经网络方法和基于实例方法的结合,常被用来描述回归与聚类的问题、以及算法的类型。此类算法的特点是不会重复地去调用相同的算法。

1.回归算法

回归算法关注的是对变量之间的关系进行建模。我们可以使用该模型,来对各种预测中产生的误差指标予以改善。

这些方法都是统计学方面的“主力军”,同时也是统计机器学习方面的“利器”。由于“回归”既可以指问题的类型、也可以指算法的问题,因此在指代上比较容易混淆。最流行的回归算法包括:

  • 普通最小二乘回归(Ordinary Least Square Regression,OLSR)
  • 线性回归(Linear Regression)
  • 逻辑回归(Logistic Regression)
  • 逐步式回归(Stepwise Regression)
  • 多元自适应回归样条(Multivariate Adaptive Regression Splines,MARS)
  • 本地散点平滑估计(Locally Estimated Scatterplot Smoothing,LOESS)

2.基于实例的算法

该模型使用各种实例的训练数据,来处理决策问题。其方法是构建出一个样本数据的数据库。它通过将新数据与样本数据进行比较,采用相似性的方法找到最佳的匹配、并进行预测。我们会存储不同实例的表现状态,并在实例之间使用相似性来进行衡量。因此,基于实例的算法也被称为“赢家通吃的学习”或“基于记忆的学习”。最流行的基于实例的算法包括:

  • k-近邻(k-Nearest Neighbor,kNN)
  • 学习矢量量化(Learning Vector Quantization,LVQ)
  • 自组织映射(Self-Organizing Map,SOM)
  • 局部加权学习(Locally Weighted Learning,LWL)

3.正则化算法

该方法是其他算法(通常指回归算法)的延伸,它采用的“惩罚”模型与其复杂度有关,即:模型越是简单、就越容易泛化(generalizing)。我将它在此单独列举出来的原因是:它不但广受欢迎、功能强大,而且只是对其他方法进行了简单修改。最流行的正则化算法包括:

  • 岭回归(Ridge Regression)
  • Least Absolute Shrinkage and Selection Operator,LASSO
  • 弹性网络(Elastic Net)
  • 最小角度回归(Least-Angle Regression,LARS)

4.决策树算法

决策树方法是基于数据属性的实际值,来构建的决策模型。树状的结构会不断分叉,直到根据给定的记录作出了预测抉择。决策树会对分类和回归问题的数据进行训练。由于决策树具有速度快、结果准的特性,因此它成为最受欢迎的机器学习算法之一。最流行的决策树算法包括:

  • 分类与回归树(Classification and Regression Tree,CART)
  • Iterative Dichotomiser 3,ID3
  • C4.5和C5.0
  • 卡方自动交互检测(Chi-squared Automatic Interaction Detection,CHAID)
  • 决策树桩(单层决策树,Decision Stump)
  • M5
  • 条件决策树(Conditional Decision Trees)

5.贝叶斯算法

此类算法适用于那些贝叶斯定理的问题,例如分类与回归。最流行的贝叶斯算法包括:

  • 朴素贝叶斯(Naive Bayes)
  • 高斯朴素贝叶斯(Gaussian Naive Bayes)
  • 多项式朴素贝叶斯(Multinomial Naive Bayes)
  • Averaged One-Dependence Estimators,AODE
  • 贝叶斯信念网络(Bayesian Belief Network,BBN)
  • 贝叶斯网络(Bayesian Network,BN)

6.聚类算法

聚类跟回归一样,既可以用来描述问题的类型,又可以指代方法的类型。此方法采用基于中心点(centroid-based)或分层级(hierarchal)等建模方法,而所有的方法都与数据固有的结构的使用有关。其目标是将数据按照它们之间的最大共性进行分组。最流行的聚类算法包括:

  • K-均值(k-Means)
  • K-中位数(k-Medians)
  • 期望最大化(Expectation Maximisation,EM)
  • 分层聚类(Hierarchical Clustering)

7.关联规则学习算法

关联规则的学习方法旨在提取各种规则,即:通过观察,最好地描述出数据变量之间的关系。这些规则能够从大型多维数据集里,发现可以被组织所利用到的重要的、且实用的各种关联。最流行的关联规则学习算法包括:

  • 先验算法(Apriori algorithm)
  • Eclat算法

8.人工神经网络算法

该算法是由生物神经网络结构所启发的模型。它们是一类用于解决回归和分类等问题的模式匹配。由于它结合了数以百计的算法和变量,因此它会包含一个极其庞大的子集。最流行的人工神经网络算法包括:

  • 感知(Perceptron)
  • 反向传播(Back-Propagation)
  • Hopfield网络
  • 径向基函数网络(Radial Basis Function Network,RBFN)

9.深度学习算法

深度学习算法是人工神经网络的升级版,它充分利用了廉价的计算力。它们涉及到搭建规模更为庞大、结构更为复杂的神经网络。最流行的深度学习算法包括:

  • 深度玻尔兹曼机(Deep Boltzmann Machine,DBM)
  • 深度信念网络(Deep Belief Networks,DBN)
  • 卷积神经网络(Convolutional Neural Network,CNN)
  • 栈式自动编码器(Stacked Auto-Encoder)

10.降维算法

与聚类方法类似,降维算法寻找数据中的固有结构。一般情况下,它对于可视化的三维数据比较实用。我们可以在监督学习方法中使用它,以实现分类和回归。最流行的降维算法包括:

  • 主成分分析(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.模型融合算法

该算法是由多个经过训练的弱模型所组成。它将单独的预测以某种方式整合成为一个更好的。可见,模型融合算法是一类非常强大、且备受欢迎的技术。最流行的模型融合算法包括:

  • Boosting
  • Bootstrapped Aggregation (Bagging)
  • AdaBoost
  • 堆叠泛化(混合)Stacked Generalization (blending)
  • Gradient Boosting Machines (GBM)
  • Gradient Boosted Regression Trees (GBRT)
  • 随机森林(Random Forest)

常见的机器学习算法一览

1.朴素贝叶斯分类器算法

一般情况下,我们很难对某个网页、文档、或电子邮件进行准确的分类,特别是那些含有冗长的文字信息、且需要手动分拣的内容。而这恰好是朴素贝叶斯分类器算法的用武之地。而且,其分类器具有为某个元素分配相似度值的功能。

例如,垃圾邮件过滤就是朴素贝叶斯算法的一个普遍的应用。此处的垃圾邮件过滤器就充当了分类器的作用,给所有的邮件分配“垃圾邮件”或“非垃圾邮件”的标签。大体说来,它是相似度类型机器学习算法中最为流行的一种。其工作基本原理就是基于贝叶斯定理,对各种单词予以简单分类,实现对内容的主观分析。

2.K-均值聚类算法

K-均值是一种使用无监督机器学习的聚类分析算法。同时,它属于一种非确定性的迭代方法。该算法对于给定数据集里的预设数量类别(如k)进行操作。因此,K-均值算法的输出是在聚类中,从输入数据分离出的k个划分簇。

3.支持向量机算法

该算法是一种使用监督机器学习的算法,可用于分类和回归分析。SVM(支持向量机,https://data-flair.training/blogs/svm-support-vector-machine-tutorial/)能够对任何新的数据集进行分类。其工作原理是:通过将训练数据集分成不同的类别,以发现某个线性特征,并由多个线性构造出一些超平面。因此,SVM需要最大化各种类别之间的距离,即:标识出边缘的最大化,以增加看不见数据的概率。SVM一般分为两类:

  • 线性SVM – 通过某个超平面,将训练数据线性分隔出类别。
  • 非线性SVM – 无法通过某个超平面,对训练数据进行分隔。

4.先验算法

该算法是一种无监督式的机器学习算法。我们使用它从给定的数据集中产生关联规则。这里的关联规则是指:“如果A项发生,则B项也会发生”的一定概率,通常以IF_THEN的形式产生。

例如:如果某人买了一个iPad,那么他也会去购买一个iPad外壳来保护它。因此,该算法的基本工作原理是:如果某项经常发生,那么该项的所有子集也会频繁发生。反之,如果某项只是偶尔发生,那么其所有超集也极少会发生。

5.线性回归算法

该算法能够通过两个变量之间的关系,展示一个变量(自变量)是如何影响另一个变量(因变量)的,即它们之间的依赖关系。纵然自变量不断变化,因变量却时常有相似的预测因子。

6.决策树算法

我们通常用一个图形来表示决策树,即:通过使用分支的方法,来说明某个决策的所有可能结果。在决策树中,每一个分支节点都代表对于某个属性的测试性结果。同时,叶子节点则代表特定类别的标签,即:计算了所有属性之后,所作出的决策。此外,我们可通过从根到叶子节点的路径来表示某一种分类。

7.随机森林算法

这是转向(go-to)类型的机器学习算法。我们使用一种bagging的方法,来创建一组带有数据的随机子集的决策树。我们需要通过随机森林算法,针对某个模型数据集上的随机样本进行多次训练,综合所有决策树的输出结果,并对每一个决策树的结果进行轮询投票(polling),以实现良好的最终预测效果。

8.逻辑回归算法

此类算法属于一种广义的线性回归,它将逻辑函数应用到了某些特征的线性组合之中,通过各种预测变量,来预测出已分类的因变量结果,同时也描述出自变量的权重概率。

结论

综上所述,我们讨论了机器学习算法、及其不同的分类,其中包括:回归算法、基于实例的算法、正则化算法、决策树算法、贝叶斯算法、聚类算法、关联规则学习算法、人工神经网络算法、深度学习算法、降维算法、模型融合算法、监督学习、无监督学习、半监督学习、朴素贝叶斯分类器算法、K-均值聚类算法、支持向量机算法、先验算法、线性回归和逻辑回归。相信我们上述图文并茂的讲解方式一定能让您有所收获。

原文标题:Top Machine Learning Algorithms You Should Know to Become a Data Scientist ,作者:Rinu Gour