当前位置: 首页 > 科技观察

【干货】手机端机器学习入门,从了解这十大经典算法开始

时间:2023-03-12 07:52:29 科技观察

在机器学习领域,“天下没有免费的午餐”是不变的定理。简而言之,没有一种算法是完美的并且可以完美解决任何问题。认识到这一点对于解决监督学习问题(例如预测建模问题)尤为重要。我们不能总是说神经网络就比决策树好,反之亦然。影响算法性能的因素很多,例如数据集的大小和结构。因此,针对你自己的问题,尝试多种不同的算法,并使用测试数据集来评估每种算法的性能,以选择效果最好的一种。当然,你之前尝试的算法必须适合你自己的问题,这是你要选择正确的机器学习任务的地方。例如,当你需要打扫房子时,你可以使用吸尘器、扫帚或拖把,但绝对不能用铲子在房子里挖洞。▌重要原则话虽如此,所有用于预测建模的监督机器学习算法都有一个共同的原则:机器学习算法的本质是找到一个目标函数(f)成为输入变量(X)到输出的最佳映射变量(Y):Y=f(X)这是最常见的学习任务,给定任何新的输入变量(X),我们可以预测输出变量(Y)的值。因为我们不知道目标函数(f)的形式或形状,所以我们需要机器来找出它。否则,我们可以直接使用目标函数进行预测,而不是使用机器学习算法来学习数据。最常见的机器学习类型是找到最佳映射Y=f(X)并使用它来预测对应于新X的Y值。这个过程称为预测建模或预测分析,目标是产生最准确的预测。对于渴望了解机器学习基本概念的初学者,我们特意整理了数据科学家最常用的十大机器学习算法,让大家快速上手。▌1-线性回归线性回归可能是统计和机器学习中最著名和最容易理解的算法。预测建模的主要关注点是如何最小化模型的误差,或者如何根据可解释性成本做出最准确的预测。我们将从包括统计学在内的多个不同领域借用、重用和窃取算法,并将它们用于这些目的。线性回归表示的是一个描述直线的方程,通过输入变量的特定权重系数(B)找到输入变量(x)和输出变量(y)之间最合适的映射关系。线性回归示例:y=B0+B1*x给定输入x,我们可以预测y的值。线性回归学习算法的目标是找到系数B0和B1的值。有不同的技术可以为您的数据找到线性回归模型,例如对普通最小二乘和梯度下降优化问题使用线性代数解决方案。线性回归已经存在了200多年,并得到了广泛的研究。使用此算法的一些技巧是尽可能多地删除非常相似的相关变量以及数据中的噪声。这是一种快速、简单且有用的算法。▌2-LogisticRegression逻辑回归是机器学习从统计学领域借用的另一种技术,用于解决二元分类问题(具有两个类值的问题)。逻辑回归类似于线性回归,因为它的目标是为每个输入变量找到加权系数值。与线性回归不同,逻辑回归将输出值预测为非线性函数,也称为逻辑函数。逻辑回归函数的图形看起来像一个大sigmoid,并将任何值转换为0到1区间。这种形式非常有用,因为我们可以使用规则将逻辑函数的值转换为0和1(例如,如果函数值小于0.5,则输出1)来预测类别。逻辑回归是基于模型学习的方式,逻辑回归的输出值也可以用来预测给定数据实例属于类别0和类别1的概率。当你需要更多证据证明时,这会非常有用你的预测。与线性回归一样,逻辑回归在您删除与输出变量不相关或非常相似(相关)的属性时效果更好。它是一种易于使用、快速且有效的二元分类问题模型。▌3-线性判别分析一般来说,逻辑回归仅限于二元分类问题。但是如果有两个以上的分类类别,线性判别分析就成为你首选的线性分类算法。线性判别分析的表达式非常简单。它由数据的统计属性组成,并计算每个类别的属性值。对于单个输入变量,它包括:每个类别的均值。所有类别的方差。线性判别分析线性判别分析计算每个类别的差异值,并预测具有最高值的类别。此方法假设数据服从高斯分布(钟形曲线),因此最好在预测之前从数据中移除异常值。它是一种用于分类预测问题的简单而强大的方法。▌4-分类和回归树决策树是预测建模的重要机器学习算法。决策树模型的表示是二叉树,从算法和数据结构上看都是二叉树,没有什么特别之处。树中的每个节点代表一个输入变量(x)和基于该变量的分割点(假设该变量是数字)。决策树叶节点包含用于预测的输出变量(y)。预测是通过遍历树的分裂点直到到达每个叶节点,并输出该叶节点的分类值开始的。决策树算法可以快速学习和快速预测。决策树可以对各种各样的问题做出准确的预测,而无需对数据进行任何特殊的预处理。▌5-朴素贝叶斯朴素贝叶斯是一种简单但功能强大的预测建模算法。该模型由两种概率组成,这两种概率都可以直接从训练数据中计算出来:1)每个类别的概率;2)对于给定的x值,每个类的条件概率。计算后,概率模型可用于使用贝叶斯定理对新数据进行预测。当您的数据是实值时,通常会假定高斯分布(钟形曲线),以便您可以轻松计算这些数据的概率。朴素贝叶斯朴素贝叶斯假设每个输入变量都是独立的,因此称为“朴素”。这是一个强有力的假设,对于真实数据来说有些不切实际,但该方法在广泛的复杂问题上效果很好。▌6-K-近邻算法K-近邻算法非常简单有效。它的模型代表了整个训练数据集,这看起来很简单吧?对于给定的训练数据,通过在整个数据集中搜索K个最相似的实例(邻居),聚合这K个实例的输出变量可以预测新的数据点。对于回归问题,它可能是输出变量的平均值;对于分类问题,它可能是众数(或最常见的)类别值。使用K-NearestNeighbors算法的技巧是如何确定数据实例之间的相似性。最简单的,如果你的属性在欧几里德距离上是相同的尺度(比如都是英寸),那么根据每个输入变量之间的差异,你可以直接计算它的数值来确定相似性。K最近邻算法可能需要大量内存或存储空间来存储所有数据,但计算(或学习)仅在进行预测时执行。您还可以随时更新和管理您的训练实例以保持预测准确性。距离或接近度的概念在非常高的维度(大量输入变量)中可能会失败,因为输入变量的数量对算法性能有很大的负面影响。这就是维度的诅咒。这要求您仅使用那些与预测输出变量最相关的输入变量。▌7-学习向量量化K近邻算法的一个缺点是你需要使用整个训练数据集。作为一种人工神经网络,学习向量量化算法(简称LVQ)允许你选择训练样例的数量,并且可以准确地学习到这些样例应该具有的特征。学习矢量量化学习矢量量化算法表示码本矢量的集合。这些向量在初始化时随机选择,并通过学习算法的多次迭代优化为最能概括训练数据集的集合。学习后,可以像K-NearestNeighbors算法一样预测码本向量。通过计算每个码本向量与新数据实例之间的距离找到最相似的邻居(***匹配码本向量),然后返回***匹配单元的类值或(回归情况下的实际值)作为预言。如果您可以将数据重新缩放到相同的区间内(例如介于0和1之间),则可以获得最佳的预测结果。如果K-NearestNeighbors已经对您的数据集做出了很好的预测,请尝试学习矢量量化以减少整个训练数据集的内存存储需求。▌8-支持向量机支持向量机可能是最新和最广泛讨论的机器学习算法之一。超平面是输入变量空间中的一条分界线。在支持向量机中,超平面可以按类(0类或1类)划分输入变量空间***。在二维空间中,超平面可以看作是一条线,我们假设所有的输入点都可以被这条线完全分开。支持向量机的目标是找到一个分离系数,使超平面能够最好地分割不同类别的数据。SVM超平面与最近数据点之间的距离称为间隔。将两个类分开的边距最大的超平面称为最大超平面。超平面的确定只与这些点的构造和分类器有关。这些点称为支持向量,它们支持并定义超平面。在实践中,可以使用优化算法来找到使边距最大化的系数。支持向量机可能是您应该尝试的最强大的“开箱即用”分类器之一。▌9-bagging算法和随机森林随机森林是最新最大的机器学习算法之一。它是一种机器学习集成算法,称为BootstrapAggregation或Bagging。Bootstrap是一种强大的统计方法,用于从数据样本中估计数量。换句话说,您需要取大量数据样本,计算均值,然后计算所有均值的平均值,才能更好地估计整体样本的真实均值。Bagging算法也以相同的方式使用,但用于估计整个统计模型的最常用方法是决策树。从训练数据中抽取多个样本,然后对每个数据样本进行建模。在对新数据进行预测时,每个模型都会进行预测并对每个预测进行平均,以获得对真实输出值的更好估计。RandomForest随机森林是对bagging算法的一种调整。它不是选择最佳分割点来创建决策树,而是引入随机性来获得次优分割点。因此,为每个数据样本创建的模型将与其他样本不同,但仍以其独特且不同的方式准确预测。结合所有模型的预测可以更好地估计潜在的真实输出。如果您可以使用具有更高方差的算法(例如决策树)获得更好的结果,那么您通常可以使用装袋算法获得更好的结果。▌10-Boosting和AdaBoost算法Boosting是一种集成预测技术,它从多个弱分类器构建一个强分类器。它根据训练数据构建模型,然后通过纠正先前模型的错误来创建第二个模型。以此类推,添加模型直到可以完美预测训练数据集,或者达到可以添加的模型数量上限。在为二进制分类开发的增强算法中,AdaBoost是第一个成功的算法。它是理解提升算法的最佳起点。现代提升方法建立在AdaBoost之上,最典型的例子是随机梯度加速器。通常,AdaBoost算法适用于决策树。在创建第一棵决策树后,决策树在每个训练实例上的性能用于衡量下一个决策树应该分配给该实例的注意力程度。难以预测的训练数据被赋予更大的权重,而易于预测的数据被赋予较小的权重。模型是按顺序创建的,每次更新训练实例的权重,都会影响序列中下一棵决策树的学习性能。当所有的决策树都完成后,就可以预测新的输入数据了,每棵决策树的性能将取决于它在训练数据上的准确率。由于模型的注意力集中在纠正之前算法的错误上,因此需要保证数据干净无异常。▌最佳建议初学者经常被琳琅满目的机器学习算法所困扰,并提出诸如“我应该使用哪种算法?”之类的问题。这个问题的答案取决于许多因素,包括:(1)数据的大小、质量和性质;(2)可用计算时间;(三)任务的紧急程度;(4)你想用数据做什么。即使是经验丰富的数据科学家,在尝试不同的算法之前也无法回答哪种算法性能最好。机器学习还有许多其他算法,但这些是最好的算法。如果您不熟悉机器学习,这是一个很好的起点。原文链接:https://towardsdatascience.com/a-tour-of-the-top-10-algorithms-for-machine-learning-newbies-dde4edffae11