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

初学者如何选择合适的机器学习算法_0

时间:2023-03-13 21:22:11 科技观察

本文的主要目标读者是机器学习爱好者或数据科学初学者,以及对学习和应用机器学习算法解决实际问题感兴趣的读者。面对大量的机器学习算法,初学者通常会问自己一个典型的问题:“我应该使用哪种算法?”有很多因素会影响这个问题的答案,例如:可用数据的大小、质量和性质计算时间任务的紧急数据使用即使是经验丰富的数据科学家和机器学习算法开发人员,如果不测试不同的算法,也无法判断哪种算法表现最好算法。我们不提倡一步到位的方法,但我们确实希望根据一些明确定义的因素提供对算法选择的一些见解。1.机器学习算法备忘单机器学习算法备忘单可以帮助您从大量算法中选择解决您特定问题的算法,本文还将介绍如何使用备忘单。由于此备忘单针对的是数据科学和机器学习的初学者,因此我们在讨论这些算法时做了一些简化的假设。本文所有推荐算法均来自多位数据科学家、机器学习专家和开发人员的程序编译反馈和建议。我们将在一些尚未达成共识的问题上,着眼于求同存异。2.如何使用备忘单阅读备忘单上的路径和算法标签为“如果满足<路径标签>,则使用<算法>。”比如:如果要降维,那就用主成分分析。如果您需要获得快速的数值预测,请使用决策树或逻辑回归。如果您需要分层结果,请使用分层聚类。有时应用不止一个分支,有时找不到完美匹配。重要的是,这些路径是基于经验法则的建议,因此其中一些是不精确的。许多数据科学家表示,找到最佳算法的唯一可靠方法是尝试所有算法。3.机器学习算法的分类本章将概述最新的机器学习分类。如果您熟悉这些分类,可以直接跳到下面的“何时使用特定算法”部分。1.监督学习监督学习算法根据一组样本对进行预测。例如,过去的销售业绩可用于预测未来的价格走势。通过监督学习,我们有一组输入变量,包括标记的训练数据和一组我们希望预测的输出变量。我们可以使用一种算法来分析训练数据,以学习将输入映射到输出的函数。该算法通过概括训练数据以预测未知情况下的结果来推断预测未知新实例的函数。分类:当数据用于预测类别时,监督学习也可以处理分类任务。将图像标记为猫或狗时就是这种情况。当只有两个类标签时,这就是二分类;多于两个是多元分类。回归:当预测为连续值时,就是回归问题。预测:这是根据过去和现在的数据预测未来的过程,其最佳应用是趋势分析。一个典型的例子就是根据今年和上一年的销售业绩来预测下一年的销售业绩。2.半监督学习监督学习的主要挑战是标记数据昂贵且耗时。如果标签有限,您可以使用未标记的数据来改进监督学习。由于在这种情况下机器不是完全监督的,因此称为半监督。通过半监督学习,您可以使用仅包含少量标记数据的未标记实例来提高学习准确性。3.无监督学习在无监督学习中,机器使用完全未标记的数据,需要发现隐藏在数据之下的内部模式,例如簇结构、低维流形或稀疏树和图。聚类:将一组数据实例归为一类,使一个类(一个簇)中的实例与其他类中的实例更相似(根据一些指标),常用于将整个数据集划分为若干类.这种分析可以在每个类别中进行,从而帮助用户发现内部模式。降维:减少考虑的变量数量。在很多应用中,原始数据的特征维数非常高,有些特征是冗余的,与任务无关。降维将有助于发现真实的、潜在的关系。4.强化学习根据环境的反馈,强化学习分析和优化代理的行为。机器会尝试不同的策略来查看哪种行为会产生最好的回报,因此不会告诉代理它应该采取哪种行为。反复试验和延迟奖励是强化学习区别于其他技术的特征。4.选择算法时的注意事项选择算法时,应始终牢记以下几个方面:准确性、训练时间和易用性。许多用户优先考虑准确性,而新手则倾向于选择他们最了解的算法。一旦你有了数据集,首先要考虑的是如何得到结果,不管这些结果可能有多么奇怪。新手往往会选择容易实现、出结果快的算法。这种思路只适用于整个训练的第一步。一旦你得到一些结果并开始熟悉数据,你可能应该花更多的时间使用更复杂的算法来加强你对数据的理解,以改进结果。然而,即使在这一点上,达到最佳精度的标准算法也可能不是最合适的算法,因为算法通常需要仔细的参数调整和用户的大量训练才能达到最佳性能。5.选择特定算法的场景对特定算法的深入研究可以帮助您了解它们的能力以及它们的使用方式。以下更多细节可以为您选择特定算法提供进一步帮助,您可以将其与之前的备忘单一起阅读。1.线性回归和逻辑回归线性回归是一种对连续因变量y与一个或多个特征X之间的关系进行建模的方法。y和X之间的关系可以线性建模如下:当有训练样本时,参数向量β可以从训练样本中学习。如果因变量是不连续的和分类的,则可以使用sigmoid函数将线性回归转换为逻辑回归。逻辑回归是一种简单、快速且功能强大的分类算法。这里讨论二元情况,即因变量y只有两个值y∈(?1,1)(这很容易扩展到多类分类问题)。在逻辑回归中,我们使用不同的假设类别来尝试预测给定示例是否属于“1”或“-1”类别的概率。具体来说,我们将尝试学习以下形式的函数:并且,其中是sigmoid函数。当有训练样本{xi,yi}时,可以通过最大化给定数据集下β的对数似然值来学习参数向量β。2.线性SVM和核SVM核技术可用于将非线性可分函数映射为高维线性可分函数。支持向量机(SVM)训练算法找到由超平面的法向量w和偏置项b表示的分类器。这个超平面(边界)可以按照最大间隔来划分不同的类别。这个问题可以转化为条件优化问题:内核技巧用于将非线性可分函数映射到高维线性可分函数。核技巧可以用来将非线性可分函数映射到空间映射到高维线性可分空间。当因变量不是数字时,应首先尝试使用逻辑回归和支持向量机进行分类。这些模型易于实现,参数易于调整,性能也相当不错。所以这些模型非常适合初学者。3.树和集成树预测模型的决策树决策树、随机森林和梯度提升都是基于决策树的算法。决策树有很多变体,但它们都做同样的事情——将特征空间细分为基本具有相同标签的区域。决策树易于理解和实施。然而,它们往往会过度拟合数据并深入到树中。随机森林和梯度提升是两种流行的集成方法,它们使用树算法来获得良好的准确性,同时也克服了过度拟合的问题。4.神经网络和深度学习卷积神经网络架构神经网络由于具有并行化和分布式处理的能力而出现于20世纪80年代中期。但这一领域的研究一直受到反向传播训练算法效率低下的阻碍,反向传播训练算法广泛应用于神经网络参数的优化。支持向量机(SVM)和其他更简单的模型(可以通过解决凸优化问题轻松训练)正在机器学习领域逐渐取代神经网络。近年来,无监督预训练和分层贪婪训练等新的和改进的训练技术重新引起了人们对神经网络的兴趣。GPU和大规模并行处理(MPP)等计算能力的增强也促进了神经网络的复兴。神经网络研究的复兴为我们带来了具有数千层的模型。神经网络换句话说,浅层神经网络已经演变成深度学习神经网络。深度神经网络在监督学习领域取得了巨大的成功。当用于语音识别和图像识别时,深度学习的水平已经达到甚至超过了人类的水平。当应用于特征提取等无监督学习任务时,深度学习还可以在极少人工干预的情况下从原始图像和语音中提取特征。一个神经网络由三部分组成:输入层、隐藏层和输出层。当输出层是分类变量时,神经网络就可以解决分类问题。当输出层是连续变量时,可以使用网络进行回归。当输出层与输入层相同时,网络可用于提取内在特征。隐藏层的数量定义了模型的复杂性和建模能力。5.k-means/k-mode,Gaussianmixturemodel(GMM)聚类k均值聚类被定义为一种硬分配标准:它的样本只能分配给一个集群。然而,GMM可以为每个样本定义一个软分配。每个样本都有一个与每个簇相关联的概率。当给定簇数k时,这两种算法都简单且快速。6.DBSCANDBSCAN示意图当给定簇数k时,可以通过密度扩散连接样本,从而使用DBSCAN(density-basedspatialclustering)。7.层次聚类和层次划分可以使用树结构(树状图)可视化。它不需要集群的数量作为输入,并且可以使用不同的K在不同的粒度级别查看其分区(即集群可以细化/粗化)。PCA、SVD和LDA我们通常不希望将大量特征直接馈送到机器学习算法中,因为某些特征可能无关紧要或者“内在”维度可能少于特征数量。主成分分析(PCA)、奇异值分解(SingularValueDecomposition)和潜在狄利克雷分布(LDA)都可以用来进行降维。PCA是一种无监督的聚类方法,它将原始数据空间映射到低维空间,同时保留尽可能多的信息。PCA基本上是在寻找一个保留数据最大方差的子空间,该方差由数据协方差矩阵的主要特征向量定义。SVD和PCA有点相关-中央数据矩阵的SVD(特征与样本)可以提供主要的左奇异向量,这些向量定义了PCA找到的相同子空间。然而,SVD是一种更通用的技术,因为它也可以做PCA做不到的事情。例如,用户与电影矩阵的SVD可以提取用户资料和电影资料,然后可以将其用于推荐系统。此外,SVD还被广泛用作主题建模工具,在自然语言处理领域被称为潜在语义分析(LatentSemanticAnalysis)。自然语言处理领域的一项相关技术是LatentDirichletAllocation(LDA)。LDA是一种概率主题模型,它将文档分解为主题,其方式与高斯混合模型(GMM)将连续数据分解为高斯密度相同。与GMM不同,LDA对离散数据(文档中的单词)进行建模,并将其主题约束为使用Dirichlet分布先验分布。6.结论这是一个易于掌握的工作流程。当您尝试一个新问题时,关键信息是:定义问题。你想解决什么问题?从简单开始。熟悉您的数据和基准测试结果。然后尝试更复杂的东西。原文:http://blogs.sas.com/content/subconsciousmusings/2017/04/12/machine-learning-algorithm-use/【本文为专栏机器心原创翻译,微信♂》机器heart(id:almosthuman2014)》]点此阅读更多本作者好文