十大机器学习算法

387 阅读10分钟

十大机器学习算法


在机器学习中,没有一种机器学习算法最适合每一个待解决的问题,它与预测建模特别相关。

有许多因素在当中发挥作用,例如数据集的大小和结构。因此,应该针对待解决的问题尝试许多不同的算法,同时使用数据的“测试集”来评估性能并择优选用。

但是,有一个共同的原则是用于预测建模的所有监督式机器学习算法的基础。

机器学习算法被描述为学习目标函数(f),该函数最好地将输入变量(X)映射到输出变量(Y):Y = f(X)

我们希望(Y)对给定输入变量(X)的新示例进行预测。我们不知道函数(f)是什么样子的,也不知道它的形式。我们将直接使用它,我们不需要使用机器学习算法从数据中学习它。

最常见的机器学习类型是学习映射Y = f(X),以对新XY进行预测。这称为预测建模或预测分析,我们的目标是做出最准确的预测。

以下是我们应该了解的顶级机器学习算法:


  • 线性回归
  • 逻辑回归
  • 线性判别分析 (LDA)
  • 分类和回归树
  • 朴素贝叶斯
  • K-最近邻 (KNN)
  • 学习矢量量化 (LVQ)
  • 支持向量机 (SVM)
  • 随机森林
  • Boosting
  • AdaBoost

1.线性回归

线性回归是机器学习中最知名的算法之一。

预测建模主要关注最小化模型的错误或做出最准确的预测,但以牺牲可解释性为代价。

线性回归的表示是一个方程,它通过查找称为系数(B)的输入变量的特定权重来描述最符合输入变量 (x)和输出变量(y)之间关系的线。

image.png

例如:y = B₀ + B₁ * x

即在给定输入x的情况下预测y,线性回归学习算法的目标是找到系数B₀B₁的值。

可以使用不同的技术从数据中学习线性回归模型,例如普通最小二乘法和梯度下降优化的线性代数解。

2.逻辑回归

逻辑回归是是二元分类问题的首选方法。

Logistic 回归类似于线性回归,因为目标是找到对每个输入变量进行加权的系数值。与线性回归不同,输出的预测是使用称为 logistic 函数的非线性函数进行转换的。

Logistic 函数看起来像一个大 S,会将任何值转换为 0 到 1 的范围。我们可以将规则应用于逻辑函数的输出,以将值捕捉到 0 和 1(例如,如果小于 0.5 则输出 1)并预测类值。

image.png

由于模型的学习方式,逻辑回归所做的预测也可以用作属于类 0 或类 1 的给定数据实例的概率。对于需要为预测提供更多基本原理的问题非常有用。

与线性回归一样,当删除与输出变量无关的属性以及彼此相似相关的属性时,逻辑回归会更好。这是一个可以有效地解决二元分类问题的快速学习模型。

3.线性判别分析 (LDA)

逻辑回归是一种分类算法,传统上仅限于两类分类问题。如果有两个以上的类,则线性判别分析算法是首选的线性分类技术。

LDA的表示非常简单。它由数据的统计属性组成,为每个类计算。对于单个输入变量,这包括:

  1. 每个类的平均值。
  2. 跨所有类计算的方差。

image.png

通过计算每个类的判别值并对具有最大值的类进行预测来进行预测。该技术会假定数据具有高斯分布,因此需要事先从数据中删除异常值。这是一种用于对预测建模问题进行分类的简单而强大的方法。

4.分类和回归树

决策树是预测建模机器学习的重要算法类型。

决策树模型的表示形式是二叉树。这是来自算法和数据结构的二叉树,没有什么太花哨的。每个节点表示单个输入变量(x)和该变量上的一个分割点。

image.png

树的叶节点包含用于进行预测的输出变量(y)。通过遍历树的拆分直到到达叶节点并在该叶节点处输出类值来进行预测。

树学习速度快,预测速度非常快。通常对于广泛的问题也是准确的,并且不需要为数据做任何特殊的准备。

5.朴素贝叶斯

朴素贝叶斯是一种简单但功能强大的预测建模算法。

该模型由两种类型的概率组成,可以直接训练数据中计算出每个类的概率和给定每个x值的每个类的条件概率。计算完成后,概率模型可用于使用贝叶斯定理对新数据进行预测。当数据是实值时,通常假设高斯分布,以便轻松估计这些概率。

image.png

朴素贝叶斯被称为朴素,是因为它假设每个输入变量都是独立的。对于真实数据来说,这是一个不切实际但强有力的假设,但是,该技术在各种复杂问题上都非常有效。

6.K-最近邻 (KNN)

KNN算法非常简单且有效。KNN 的模型表示形式是整个训练数据集。

通过在整个训练集中搜索 K 个最相似的实例并汇总这些 K 个实例的输出变量,可以对新数据点进行预测。对于回归问题,可能是平均输出变量,对于分类问题,可能是最常见的类值。

诀窍在于如何确定数据实例之间的相似性。如果属性都具有相同的比例,则可以根据每个输入变量之间的差异直接计算该数字。

image.png

KNN可能需要大量的内存或空间来存储所有数据,但只有在需要预测时才执行计算。还可以在一段时间内更新和管理训练实例,以保持预测的准确性。

7.学习矢量量化 (LVQ)

K-最近邻的缺点是需要坚持使用整个训练数据集。学习矢量量化算法(LVQ)是一种人工神经网络算法,允许选择挂载训练实例的数量,并准确了解这些实例的外观。

image.png

LVQ 的表示形式是码本矢量的集合。这些是在开始时随机选择的,并经过调整,以在学习算法的多次迭代中最好地总结训练数据集。学习后,码本矢量可用于进行预测,就像K-最近邻一样。最相似的邻居(最匹配的码本矢量)是通过计算每个码本矢量和新数据实例之间的距离找到的。然后返回最佳匹配单位的类值作为预测。如果将数据重新缩放以具有相同的范围,则可以获得最佳结果。

如果 KNN 在数据集上提供了良好的结果,则可以尝试使用 LVQ 来减少存储整个训练数据集的内存要求。

8.支持向量机 (SVM)

支持向量机是最流行和最受关注的机器学习算法之一。

超平面是分割输入变量空间的线。在 SVM 中,选择超平面以按类(类 0 或类 1)最好地分隔输入变量空间中的点。在二维空间中,可以将其可视化为一条线,假设所有输入点都可以被这条线完全分开。SVM 学习算法查找导致超平面对类进行最佳分离的系数。

image.png

超平面和最近数据点之间的距离称为边距。可以分隔两个类的最佳或最佳超平面是具有最大边距的线。只有这些点与定义超平面和分类器的构造相关。这些点称为支持向量。它们支持或定义超平面。在实践中,优化算法用于查找最大化边际的系数值。

9.随机森林

随机森林是最流行和最强大的机器学习算法之一。它是一种称为Bootstrap Aggregation或Bagging的集成机器学习算法。

引导是一种强大的统计方法,用于从数据样本中估计数量。如均值。需要对数据进行大量采样,计算平均值,然后对所有平均值求平均值,以便更好地估计真实平均值。

在Bagging中,使用相同的方法,但用于估计整个统计模型,最常见的是决策树。采集训练数据的多个样本,然后为每个数据样本构建模型。当需要对新数据进行预测时,每个模型都会进行预测,并对预测求平均值,以便更好地估计真实输出值。

image.png

随机森林是对这种方法的一种调整,其中创建了决策树,以便通过引入随机性来进行次优分割,而不是选择最佳分割点。

因此,为每个数据样本创建的模型与其他方法相比更加不同,但在其独特和不同的方式上仍然准确。结合它们的预测可以更好地估计真实的基础输出值。

如果使用具有高方差的算法(如决策树)获得良好的结果,则通常可以通过对该算法进行Bagging来获得更好的结果。

10.Boosting 和 AdaBoost

Boosting是一种集成技术,它试图从许多弱分类器创建强分类器。这是通过从训练数据构建模型,然后创建第二个模型来尝试纠正第一个模型中的错误来完成的。添加模型,直到完全预测训练集或添加最大数量的模型。

AdaBoost是第一个真正成功的为二元分类开发的增强算法。现代Boosting方法建立在AdaBoost的基础上。

AdaBoost 与短决策树一起使用。创建第一个树后,每个训练实例上的树的性能用于权衡创建的下一个树应该关注每个训练实例的程度。难以预测的训练数据被赋予更多的权重,而易于预测的实例被赋予较少的权重。模型依次按顺序创建,每个模型更新训练实例上的权重,这些权重会影响序列中下一个树执行的学习。构建完所有树后,对新数据进行预测,并且每棵树的性能由其在训练数据上的准确程度进行加权。

由于算法非常注重纠正错误,因此删除异常值的干净数据非常重要。

END

当面对各种各样的机器学习算法时,应该使用哪种算法?问题的答案取决于许多因素,包括:

  • 数据的大小,质量和性质;
  • 可用的计算时间;
  • 任务的紧迫性;
  • 你想用数据做什么。

即使是经验丰富的数据科学家也无法在尝试不同的算法之前分辨出哪种算法性能最佳。虽然还有许多其他机器学习算法,但这些是最流行的算法。作为机器学习的新手,这些就是一个很好的学习起点。