十大机器学习算法简介

十大机器学习算法简介

1. 线性回归(Linear Regression)

线性回归(Linear Regression)可能是统计和机器学习中最著名和最容易理解的算法之一。

预测建模主要关注的是最小化模型的误差,或尽可能做出最准确的预测,而牺牲了可解释性。我们将借用、重用和窃取许多不同领域的算法,包括统计数据,并将它们用于这些目的。

线性回归的表示是一个方程,它通过为称为系数(B)的输入变量寻找特定权重,来描述一条最适合输入变量(x)和输出变量(y)之间关系的直线,如下图所示。
Linear Regression
例如:y = B0 + B1 * x

我们将在给定输入x的情况下预测y线性回归学习算法的目标是找到系数B0和B1的值。

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

线性回归已有200多年的历史,并得到了广泛的研究。使用此技术时,一些好的经验规则是删除非常相似(相关)的变量,并尽可能从数据中删除噪声。这是一种快速、简单的方法,也是一种值得尝试的好算法。

2. 逻辑回归(Logistic Regression)

逻辑回归(Logistic Regression)是机器学习从统计学领域借用的另一种技术。它是二进制分类问题(具有两个类值的问题)的首选方法。

逻辑回归类似于线性回归,其目标是找到每个输入变量权重系数的值。与线性回归不同,输出的预测是使用一个称为逻辑函数的非线性函数来转换的。

logistic函数看起来像一个大S,它将把任何值转换成0到1的范围。这很有用,因为我们可以对logistic函数的输出应用一个规则,将值捕捉到0和1(例如,如果小于0.5,则输出1),并预测一个类值。
Logistic Regression

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

与线性回归类似,当删除与输出变量无关的属性以及彼此非常相似(相关)的属性时,逻辑回归的效果更好。该模型学习速度快,对二值分类问题有效。

3. 线性判断分析(Linear Discriminant Analysis)

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

LDA(Linear Discriminant Analysis)的表示非常直接。它包含为每个类计算的数据的统计属性。对于单个输入变量,这包括:

  • 每个类的平均值。
  • 计算所有类的方差。
    lda

预测是通过计算每个类的判别值,并对最大值的类进行预测。该技术假设数据具有高斯分布(钟形曲线),因此最好预先从数据中删除异常值。它是一种简单而有效的分类预测建模方法。

4. 分类和回归树(Classification and Regression Trees)

决策树(Decision Trees)是机器学习预测建模的一种重要算法。

决策树模型的表示形式为二叉树。这是来自算法和数据结构的二叉树,没什么特别的。每个节点表示一个输入变量(x)和该变量上的一个分歧点(假设该变量是数值型的)。
decision_trees

树的叶节点包含一个用于进行预测的输出变量(y)。通过遍历树的拆分,直到到达一个叶子节点,并在该叶子节点输出类值,就可以进行预测。

树学起来很快,预测起来也很快。它们对于广泛的问题通常是准确的,并且不需要为数据做任何特殊的准备。

5. 朴素贝叶斯(Naive Bayes)

朴素贝叶斯(Naive Bayes)是一种简单但功能惊人的预测建模算法。

该模型由两类概率组成,可以直接从你的训练数据中计算出来:1)每节课的概率;2)给定每个x值,每个类的条件概率。概率模型一旦计算出来,就可以利用贝叶斯定理对新数据进行预测。当你的数据是实值的时候,通常采用高斯分布(钟形曲线),这样你就可以很容易地估计这些概率。
naive_bayes

朴素贝叶斯之所以称为朴素贝叶斯,是因为它假定每个输入变量都是独立的。这是一个强烈的假设,对真实数据来说是不现实的,然而,该技术在许多复杂的问题上是非常有效的。

6. K最邻近算法(K-Nearest Neighbors)

KNN(K-Nearest Neighbors)算法简单有效。KNN的模型表示是整个训练数据集。很简单的对吧?

通过搜索整个训练集中K个最相似的实例(邻居)并总结这些K个实例的输出变量,可以预测一个新的数据点。对于回归问题,这可能是平均输出变量,对于分类问题,这可能是模式(或最常见的)类值。

诀窍在于如何确定数据实例之间的相似性。如果您的属性都具有相同的比例(例如,都以英寸为单位),那么最简单的技术就是使用欧式距离,您可以根据每个输入变量之间的差异直接计算这个数字。
knn

KNN可能需要大量内存或空间来存储所有数据,但只有在需要预测时才会及时执行计算(或学习)。您还可以随着时间的推移更新和管理您的培训实例,以保持预测的准确性。

距离或接近的概念可能在非常高的维度(许多输入变量)中被打破,这可能会对算法在您的问题上的性能产生负面影响。这就是所谓的维数诅咒。它建议只使用与预测输出变量最相关的输入变量。

7. 学习矢量量化(Learning Vector Quantization)

k近邻的一个缺点是,您需要保留整个训练数据集。学习向量量化算法(简称LVQ)是一种人工神经网络算法,它允许您选择保留多少训练实例,并准确地了解这些实例应该是什么样子的。

LVQ的表示是一组码本向量。它们在开始时是随机选择的,经过多次学习算法的迭代,最适合于总结训练数据集。通过学习,码本向量可以像k近邻一样进行预测。通过计算每个码本向量与新数据实例之间的距离,可以找到最相似的邻居(最佳匹配码本向量)。然后返回最佳匹配单元的类值或(回归情况下的实值)作为预测。如果将数据重新调整为具有相同的范围(例如0到1之间),就可以获得最佳结果。
LVQ
如果您发现KNN对您的数据集提供了良好的结果,请尝试使用LVQ来减少存储整个培训数据集的内存需求。

8. 支持向量机(Support Vector Machines)

支持向量机(Support Vector Machines)可能是最受欢迎和谈论的机器学习算法之一。

超平面是一条分割输入变量空间的线。在支持向量机中,选择一个超平面将输入变量空间中的点按类(0类或1类)进行最佳分离。在二维中,你可以把它想象成一条直线我们假设所有的输入点都可以被这条直线完全分开。支持向量机的学习算法通过超平面找到最优分类系数。
support_vector_machine
超平面与最近数据点之间的距离称为边距。能够将这两个类分开的最佳或最优超平面是具有最大边界的直线。只有这些点与超平面的定义和分类器的构造有关。这些点称为支持向量。它们支持或定义超平面。在实际应用中,采用了一种优化算法来寻找使边值最大化的系数值。

SVM可能是最强大的开箱即用分类器之一,值得在您的数据集上尝试。

9. 随机森林(Bagging and Random Forest)

随机森林(Bagging and Random Forest)是最流行和最强大的机器学习算法之一。它是一种集成机器学习算法,称为引导聚集或袋装。

bootstrap是一种强大的统计方法,用于从数据样本中估计数量。比如一个平均值。取大量数据样本,计算均值,然后取所有均值的平均值这样就能更好地估计真实均值。

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

随机森林是这种方法的一个改进,它创建决策树,这样就不用选择最优的分割点,而是通过引入随机性来进行次最优分割。

因此,为每个数据样本创建的模型比其他情况下的模型更加不同,但仍然以其独特和不同的方式准确。结合他们的预测,可以更好地估计真实的潜在产值。

如果您使用高方差的算法(如决策树)获得良好的结果,那么您通常可以通过打包该算法获得更好的结果。

10. 增强和自适应增强算法(Boosting and AdaBoost)

增强(Boosting)是一种集成技术,它试图从一些弱分类器创建一个强分类器。这是通过从训练数据构建一个模型,然后创建第二个模型,该模型试图纠正第一个模型中的错误。在完全预测训练集或添加最大数量的模型之前,将添加模型。

AdaBoost是第一个真正成功的用于二进制分类的增强算法。这是理解促进的最佳起点。现代增压方法建立在AdaBoost的基础上,最著名的是随机梯度增压机。
AdaBoost

AdaBoost用于短决策树。在创建第一个树之后,将使用树在每个训练实例上的性能来衡量创建的下一个树应该对每个训练实例关注多少。难以预测的训练数据权重更大,而易于预测的实例权重更小。模型是一个接一个依次创建的,每个模型都更新训练实例上的权重,这些实例会影响序列中的下一棵树执行的学习。在所有的树被建立之后,对新的数据进行预测,并且每棵树的性能都由它在训练数据上的准确性来加权。

由于算法在纠正错误上投入了如此多的精力,因此清除数据中的异常值是非常重要的。

原文请看此处:
TOP 10 Machine Learning Algorithms