在机器学习领域,有“天下没有免费的午餐”的说法。简而言之,这意味着没有一种算法可以对每个问题都有最好的效果。这个理论在Supervisedlearning中尤为重要。例如,你不能说神经网络总是比决策树好,反之亦然。模型性能受许多因素影响,例如数据集的大小和结构。因此,您应该针对您的问题尝试许多不同的算法,同时使用一组测试数据来评估性能并选择最佳算法。当然,你尝试的算法一定要适合你的问题,门道才是机器学习的主要任务。例如,如果你想打扫你的房子,你可能会使用吸尘器、扫帚或拖把,但你肯定不会拿起铲子开始挖洞。对于渴望了解机器学习基础知识的机器学习新手,这里是数据科学家使用的十大机器学习算法。我将介绍这十大算法的特点,以便您更好地理解和应用。来看看吧。01线性回归线性回归可能是统计和机器学习中最著名和最容易理解的算法之一。由于预测建模主要关注最小化模型的误差,或者以牺牲可解释性为代价做出最准确的预测。我们从许多不同领域借用、重用和窃取算法,其中涉及一些统计知识。线性回归由一个方程表示,该方程通过找到输入变量的特定权重(B)来描述输入变量(x)和输出变量(y)之间的线性关系。线性回归示例:y=B0+B1*x给定输入x,我们将预测y。线性回归学习算法的目标是找到系数B0和B1的值。可以使用不同的技术从数据中学习线性回归模型,例如用于普通最小二乘和梯度下降优化的线性代数解决方案。线性回归已经存在了200多年,并得到了广泛的研究。使用此技术时的一些经验法则是删除非常相似(相关)的变量并尽可能从数据中删除噪声。这是一种快速简便的技术,也是一个很好的初始算法。02逻辑回归逻辑回归是机器学习从统计学领域借用的另一种技术。这是二元分类问题(具有两个类别值的问题)的专用方法。逻辑回归与线性回归的相似之处在于两者的目标都是为每个输入变量找到权重值。与线性回归不同,输出预测值使用称为逻辑函数的非线性函数进行变换。logistic函数看起来像一个大S,将任何值转换到0到1的范围内。这很有用,因为我们可以将相应的规则应用于logistic函数的输出,将值分类为0和1(例如,输出如果IF小于0.5,则为1)并预测类别值。LogisticRegression由于模型独特的学习方法,逻辑回归做出的预测也可以用来计算属于类别0或类别1的概率。这对于需要给出大量基本原理的问题很有用。与线性回归一样,当您删除与输出变量无关的属性以及彼此非常相似(相关)的属性时,逻辑回归确实表现更好。这是一个可以快速学习并有效处理二元分类问题的模型。03线性判别分析传统的逻辑回归局限于二元分类问题。如果您有两个以上的类别,则线性判别分析(LDA)是首选的线性分类技术。LDA的表示非常简单。它包含数据的统计属性,根据每个类别进行计算。对于单个输入变量,这包括:每个类的平均值。跨所有类别计算的方差。线性判别分析LDA的工作原理是计算每个类别的判别值,并对具有最大值的类别进行预测。该技术假设数据具有高斯分布(钟形曲线),因此最好先从数据中手动移除异常值。这是分类预测建模问题中一种简单而强大的方法。04分类与回归树决策树是机器学习的重要算法。决策树模型可以表示为二叉树。没错,就是算法和数据结构上的二叉树,没什么特别的。每个节点代表一个输入变量(x)和该变量的左右子节点(假设变量是数字)。决策树的叶节点包含用于进行预测的输出变量(y)。通过遍历树进行预测,到达某个叶节点时停止,并输出该叶节点的类值。决策树可以快速学习和快速预测。对于许多问题,它通常也能预测准确,而且您不需要对数据做任何特殊准备。05朴素贝叶斯朴素贝叶斯是一种简单但极其强大的预测建模算法。该模型由两种类型的概率组成,可以直接从您的训练数据中计算出来:1)每个类别的概率;2)给定每个x值的类的条件概率。计算后,概率模型可用于使用贝叶斯定理对新数据进行预测。当您的数据是数字时,通常会假设高斯分布(钟形曲线),以便可以轻松估计这些概率。贝叶斯定理朴素贝叶斯之所以被称为朴素,是因为它假设每个输入变量都是独立的。这是一个强有力的假设,对于真实数据来说是不切实际的,但该技术对于大规模的复杂问题仍然非常有效。06K最近邻KNN算法很简单也很有效。KNN的模型由整个训练数据集表示。是不是很简单?通过在整个训练集中搜索K个最相似的实例(邻居)并汇总这K个实例的输出变量来预测新的数据点。对于回归问题,新点可能是平均输出变量,对于分类问题,新点可能是多数类值。成功的诀窍是如何确定数据实例之间的相似性。如果你的属性都在同一个尺度上,最简单的方法是使用欧几里得距离,它可以直接从每个输入变量之间的差异计算出来。K-NearestNeighborsKNN可能需要大量内存或空间来存储所有数据,但仅在需要预测时才执行计算(或学习)。您还可以随时更新和管理您的训练集以保持预测准确性。距离或接近度的概念在高维环境(大量输入变量)中可能会失效,这会对算法产生负面影响。此类事件被称为维度灾难。这也意味着您应该只使用那些与预测输出变量最相关的输入变量。07学习向量量化K-NearestNeighbors的缺点是需要维护整个训练数据集。LearningVectorQuantization(或简称LVQ)是一种人工神经网络算法,可以让你挂上任意数量的训练样例并准确地学习它们。学习向量量化LVQ由一组码本向量表示。开始时随机选择向量,然后迭代多次以适应训练数据集。学习后,码本向量可以像K-NearestNeighbors一样用于预测。通过计算每个码本向量与新数据实例之间的距离找到最相似的邻居(最佳匹配),然后返回最佳匹配单元的类别值或回归情况下的实际值作为预测。如果您将数据限制在同一范围内(例如0到1之间),则会获得最佳结果。如果您发现KNN在您的数据集上给出了很好的结果,请尝试使用LVQ来减少存储整个训练数据集的内存需求。08支持向量机支持向量机可能是最流行和讨论最多的机器学习算法之一。超平面是一条划分输入变量空间的线。在SVM中,选择超平面将输入变量空间中的点按类别(0类或1类)分开。可以看成是二维空间中的一条线,所有的输入点都可以被这条线完全隔开。SVM学习算法就是寻找让超平面具有最佳类别分离的系数。SupportVectorMachine超平面与最近数据点之间的距离称为边界,边界最大的超平面是最佳选择。同时,只有这些相近的数据点才与超平面的定义和分类器的构造有关。这些点称为支持向量,它们支持或定义超平面。在实践中,我们将使用优化算法来找到最大化边界的系数值。SVM可能是最强大的开箱即用分类器之一,值得在您的数据集上尝试一下。09baggingandRandomForest随机森林是最流行和最强大的机器学习算法之一。它是一种集成机器学习算法,称为BootstrapAggregation或Bagging。Bootstrap是一种强大的统计方法,用于从数据样本中估计某个数量,例如平均值。它采用大量数据样本,计算平均值,然后对所有平均值进行平均,以获得对真实平均值的更准确估计。同样的方法也用于装袋,但最常用于决策树而不是估计整个统计模型。它对训练数据进行多重采样,然后为每个数据样本构建模型。当您需要对新数据进行预测时,每个模型都会进行预测并对预测进行平均,以获得对真实输出值的更好估计。RandomForest随机森林是对决策树的一种调整。与选择最佳分裂点相比,随机森林通过引入随机性来实现次优分裂。因此,为每个数据样本创建的模型之间的差异会更大,但其本身仍然是准确的。结合预测结果可以更好地估计出正确的潜在输出值。如果您使用像决策树这样的高方差算法获得了良好的结果,那么您将使用该算法获得更好的结果。10Boosting和AdaBoostBoosting是一种集成技术,可以从一些弱分类器中创建一个强分类器。它首先根据训练数据构建模型,然后创建第二个模型来尝试纠正第一个模型的错误。不断添加模型,直到训练集预测完美或者已经添加到上限。AdaBoost是第一个真正成功的为二元分类开发的Boosting算法,也是理解Boosting的最佳起点。基于AdaBoost最著名的算法是随机梯度提升。AdaBoostAdaBoost通常与短决策树一起使用。在创建第一棵树后,树上每个训练实例的性能决定了下一棵树需要对这个训练实例投入多少注意力。难以预测的训练数据被赋予更大的权重,而易于预测的实例被赋予更少的权重。模型是按顺序创建的,每个模型更新都会影响序列中下一棵树的学习。构建完所有树后,该算法会对新数据进行预测,并根据每棵树在训练数据上的准确程度来衡量每棵树的性能。由于该算法非常重视纠错,因此没有异常值的干净数据非常重要。初学者在面对各种各样的机器学习算法时会问的一个典型问题是“我应该使用哪种算法?”问题的答案取决于许多因素,包括:数据的大小、质量和性质;计算时间;任务的紧迫性;你想用数据做什么。即使是经验丰富的数据科学家,在尝试不同的算法之前,也无法知道哪种算法的性能最好。虽然还有许多其他机器学习算法,但这些算法是最受欢迎的。如果您不熟悉机器学习,这是一个很好的起点。
