本文介绍了10种常用的机器学习算法,包括线性回归、逻辑回归、线性判别分析、朴素贝叶斯、KNN、随机森林等。1.线性回归在统计和机器领域在学习中,线性回归可能是最著名和最容易理解的算法之一。预测建模主要关注最小化模型误差或尽可能做出最准确的预测,但要以可解释性为代价。我们将从许多其他领域(包括统计学)借用和重用算法来实现这些目标。线性回归模型表示为为输入变量找到特定权重(即系数B)的方程式,该方程式又描述了一条最适合输入变量(x)和输出变量(y)之间关系的直线。线性回归示例:y=B0+B1*x我们将给定一个输入值x来预测y,线性回归学习算法的目的是找到系数B0和B1的值。我们可以使用不同的技术从数据中学习线性回归模型,例如普通最小二乘的线性代数解和梯度下降优化。线性回归已有大约200年的历史,并得到了广泛的研究。使用此类技术时有一些好的经验法则:我们可以删除非常相似(相关)的变量并从数据中删除尽可能多的噪声。线性回归是一种简单的技术,速度快,是适合初学者尝试的经典算法。2.逻辑回归逻辑回归是机器学习从统计学领域借用的另一种技术。它是二元分类问题的最佳方法。与线性回归一样,逻辑回归的目的是为每个输入变量找到权重系数值。但不同的是,Logistic回归的输出预测结果是通过一个叫做“logistic函数”的非线性函数进行变换的。逻辑函数的形状像一个大“S”,它将任何值转换为区间0-1。这很有用,因为我们可以对逻辑函数的输出应用一个规则来捕获0-1区间内的值(例如,将阈值设置为0.5,如果函数值小于0.5,则输出值将是1),并预测类别的值。逻辑回归由于模型的学习方式,逻辑回归的预测也可以用作给定数据实例属于0类或1类的概率。这对于需要更多理论依据来预测结果的问题很有用。与线性回归类似,当删除与输出变量无关且彼此非常相似(相关)的属性时,逻辑回归效果更好。该模型学习速度快,对二元分类问题非常有效。3、线性判别分析逻辑回归是一种传统的分类算法,其使用场景仅限于二分类问题。如果您有两个以上的类别,那么线性判别分析算法(LDA)是最好的线性分类技术。LDA的表示非常简单。它包含为每个类计算的统计属性。对于单个输入变量,这些属性包括:每个类别的均值。所有类别的方差。线性判别分析预测结果是通过计算每个类的判别值,将该类预测为判别值最高的类。该技术假设数据服从高斯分布(钟形曲线),因此最好事先从数据中移除异常值。LDA是一种简单而有效的分类预测建模方法。4.分类和回归树决策树是机器学习预测建模算法中的一类重要类。决策树可以表示为二叉树。这个二叉树在算法设计和数据结构上都和二叉树一样,没有什么特别之处。每个节点代表一个输入变量(x)和基于该变量的分支点(假设该变量是数字)。决策树决策树的叶子包含一个用于进行预测的输出变量(y)。预测结果是在树的每条分支路径上行走,直到到达一个叶子节点,输出叶子节点的类别值。决策树学得很快,做出预测也很快。它们在大量问题上往往是准确的,并且不需要对数据进行任何特殊的预处理准备。5.朴素贝叶斯朴素贝叶斯是一种简单但功能强大的预测建模算法。该模型包含两类可以直接从训练数据计算的概率:1)数据属于每个类的概率,以及2)数据属于每个类的条件概率,给定x的每个值。一旦计算出这两个概率,就可以使用贝叶斯定理通过概率模型对新数据进行预测。当您的数据是实值时,通常假设数据服从高斯分布(钟形曲线),以便您可以轻松估计这些概率。贝叶斯定理朴素贝叶斯之所以被称为“朴素”,是因为它假设每个输入变量都是相互独立的。这是一个强有力的假设,对于真实数据来说是不现实的。但是,该算法在处理大量复杂问题时非常有效。6.K最近邻算法K最近邻(KNN)算法非常简单有效。KNN的模型表示是整个训练数据集。很简单,对吧?对新数据点的预测是通过在整个训练集中搜索与该数据点最相似的K个实例(最近的邻居)并对这K个实例的输出变量求和来进行的。对于回归问题,预测结果可能是输出变量的均值;对于分类问题,预测结果可能是大多数(或最常见)类的值。关键是如何判断数据实例之间的相似性。如果您的数据特征具有相同的比例(例如,全部以英寸为单位),那么最简单的测量技术是使用欧几里得距离,您可以直接根据输入变量之间的差异计算出该距离。K-NearestNeighborsKNN可能需要大量内存或空间来存储所有数据,但仅在需要预测时才实时执行计算(或学习)。您还可以随时间更新和管理训练实例以保持预测准确性。使用距离或接近度的度量可能会在非常高的维度(具有许多输入变量)中崩溃,这会对算法在您的问题上的性能产生负面影响。这就是所谓的维数灾难。这告诉我们应该只使用那些与预测输出变量最相关的输入变量。7.学习向量量化KNN算法的一个缺点是你需要处理整个训练数据集。学习矢量量化算法(LVQ)允许选择所需数量的训练示例并准确学习这些示例。学习向量量化LVQ的表示是一组码本向量。它们一开始是随机选择的,经过学习算法的多次迭代,最终优化总结出训练数据集。通过学习,码本向量可用于执行像K最近邻算法一样的预测。通过计算每个码本向量与新数据实例之间的距离,可以找到最相似的邻居(最佳匹配码本向量)。然后将最佳匹配单元的类别值(分类)或真实值(回归)作为预测结果返回。如果将数据重新缩放到相同的范围内(例如,介于0和1之间),则可以获得最佳预测结果。如果你发现KNN可以在你的数据集上得到很好的预测结果,那么不妨试试LVQ技术,它可以减少对内存空间的需求,不需要像KNN那样存储整个训练数据集。8.支持向量机支持向量机(SVM)可能是目前最先进、讨论最多的机器学习算法之一。超平面是划分输入变量空间的“直线”。支持向量机选择一个超平面,该超平面按类别(类别0或类别1)完美地分割输入变量空间中的点。在二维空间中,你可以把他想象成一条直线,假设所有的输入点都可以被这条直线完全分割。SVM学习算法旨在通过超平面找到最终得到最佳类分割的系数。SVM超平面与最近数据点之间的距离称为间隔。能够分离两个类的最佳超平面是具有最佳分离的直线。只有这些点与超平面的定义和分类器的构造有关,这些点称为支持向量,它们支持或定义超平面。在实践中,使用优化算法来找到使区间最大化的系数值。支持向量机可能是开箱即用的最大分类器之一,值得在您自己的数据集上尝试。9.BaggingandRandomForest随机森林是最大和最大的机器学习算法之一,它是一种集成机器学习算法。bootstrap是一种强大的统计方法,用于从数据样本中估计数量,例如平均值。您需要在数据中抽取大量样本,计算均值,然后对每个样本计算出的均值进行平均,才能更好地估计所有数据的真实均值。装袋使用相同的方法。但最常见的做法是使用决策树,而不是估计整个统计模型。Bagging从训练数据中获取多个样本,并为每个数据样本构建模型。当您需要对新数据进行预测时,每个模型都会产生一个预测,而bagging会对所有模型的预测进行平均,以获得对真实输出的更好估计。RandomForestRandomForest是这种创建决策树的方法的改进,因此不是选择最佳分割点,而是通过引入随机性来进行次优分割。因此,为每个数据样本创建的模型比其他方式更独特,但准确性仍然很高。结合他们的预测结果可以更好地估计真实输出值。如果您使用具有高方差的算法(例如决策树)获得了良好的结果,则通常可以通过对该算法执行装袋来获得更好的结果。10.Boosting和AdaBoostBoosting是一种集成技术,它试图从大量弱分类器中创建一个单一的强分类器。要实现Boosting方法,首先需要使用训练数据建立模型,然后创建第二个模型(它试图纠正第一个模型的错误)。直到最好的模型能够对训练集做出准确的预测或者添加的模型数量达到上限时,我们才会停止添加新的模型。AdaBoost是为二元分类问题开发的第一个真正成功的Boosting算法。是人们了解Boosting的最佳起点。目前的Boosting方法是基于AdaBoost,其中最著名的是StochasticGradientBoostingMachine。AdaBoostAdaBoost使用浅层决策树。创建第一棵树后,使用该树在每个训练实例上的表现来衡量下一棵树应该给每个训练实例多少权重。增加难以预测的训练数据权重,同时降低易于预测的实例权重。模型按顺序创建,一个接一个,每个模型更新训练实例权重,影响序列中下一棵树的学习。在构建完所有的树之后,我们可以对新数据进行预测,根据每棵树在训练数据上的准确程度来衡量每棵树的性能。由于算法投入了大量精力来纠正错误,因此在数据清理过程中删除数据中的异常值非常重要。原文链接:https://medium.com/m/global-identity?redirectUrl=https%3A%2F%2Fblog.goodaudience.com%2Ftop-10-machine-learning-algorithms-2a9a3e1bdaff《心》的原译,微信公众号《机器之心(id:almosthuman2014)》】点此查看作者更多好文
