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

选择难度?全面讲解如何选择最合适的机器学习算法

时间:2023-03-19 11:23:19 科技观察

如果你是初学/中级数据科学家/分析师,想应用机器学习算法解决你关心的问题,那么这篇文章就是写的为你!编译|姜凡博、韩晓阳、钱天培初学者面对各种各样的机器学习算法,一个典型的问题是:我应该使用哪种算法?问题的答案取决于许多因素,包括:大小、质量和性质。可接受的计算时间。任务的紧迫性。你想用数据做什么。在尝试不同的算法之前,即使是经验丰富的数据科学家也无法判断哪种算法是最好的。我们在这里并不是提倡一种放之四海而皆准的方法,但我们希望根据一些明确的因素,就首先尝试哪些算法提供一些指导。1.机器学习算法备忘单此机器学习算法备忘单可帮助您从各种机器学习算法中进行选择,以找到适合您的特定问题的算法。本文详细介绍了如何使用此备忘单。由于此备忘单是为入门级数据科学家和分析师设计的,因此我们将在讨论算法时做出一些简化的假设。此处推荐的算法来自一些数据科学家、机器学习专家和开发人员的汇总反馈和经验指导。有几个问题我们还没有达成一致——对于这些我们试图突出共性并调和分歧。随着我们的库的增长以包含更完整的方法集,将添加其他算法。其次,如何使用备忘单将图上的路径和算法标签解释为“如果需要,则使用”。例如:如果需要,则使用。如果您需要<快速数值预测>,请使用<决策树>或<逻辑回归>。如果需要,请使用。有时有多个分支适用,有时没有。请务必记住,这些路径旨在作为经验法则建议,因此某些建议可能不准确。与我讨论过的几位数据科学家表示,找到最佳算法的唯一方法是尝试所有算法。3.机器学习算法的类型本节概述了广泛流行的机器学习类型。如果您已经熟悉这些算法并想继续学习特定算法,则可以跳过此部分并转到下面的“何时使用特定算法”。1.监督学习监督学习算法根据一组样本进行预测。例如,它可以使用历史售价来估计未来的售价。在监督学习中,输入变量由标记的训练数据和一些感兴趣的输出变量组成。通过算法分析训练数据是学习将输入映射到输出的函数的过程。该推理函数概括了训练数据,即预测未知情况下的结果,将新的未知输入映射到输出。分类:当数据用于预测分类变量时,监督学习也称为分类。为图片分配标签或指示符(如狗/猫)时就是这种情况。当只有两个标签时,称为二分类。当有两个以上的类时,称为多分类。回归:当预测连续值时,它是一个回归问题。预测:这是根据过去和现在的数据对未来做出预测的过程。最常用于分析趋势。一个常见的例子是根据今年和往年的销售额估算明年的销售额。2.半监督学习监督学习的挑战在于标记数据的过程既昂贵又耗时。如果标签有限,我们可以使用未标记的样本来增强监督学习。因为在这种情况下机器不是完全监督的,所以我们说它是半监督的。在半监督学习中,我们同时使用未标记数据和少量标记数据来提高学习精度。3.无监督学习(Unsupervisedlearning)在进行无监督学习时,机器得到的是完全没有标签的数据。该算法通常用于发现底层数据的内在模式,例如聚类结构、低维流形或稀疏树/图。聚类:将一组数据样本分组,使得相似的样本被分类到一个组(或一个簇)中(根据一些标准)。这通常用于将整个数据集分成几组,以便可以在每个组内执行分析,帮助用户找到它们的潜在模式。降维:减少需要考虑的变量数量。在很多应用中,原始数据具有非常高维的特征,有些特征是冗余的或者与任务无关。降维有助于找到真实的、潜在的关系。4.强化学习(Reinforcementlearning)基于环境反馈的强化学习,以达到分析和优化智能体行为的目的。机器不是被动地接受动作,而是尝试不同的场景来发现哪些动作产生最好的回报。反复试验和延迟奖励将强化学习与其他技术区分开来。4.选择算法时的注意事项选择算法时,一定要考虑这几个方面:准确性、训练时间和易用性。许多用户将准确性放在首位,而初学者则倾向于关注他们最了解的算法。当你得到一个数据集时,首先要考虑的是如何得到结果,而不管结果如何。初学者往往会选择易于实现且能快速得到结果的算法。只要您将其视为流程的第一步,这样做就没有错。获得一些结果并熟悉数据后,您可以花更多时间使用更复杂的算法来增强对数据的理解,从而进一步改进结果。即使在这个阶段,达到最佳精度的方法也可能不是最好的算法,因为算法通常需要仔细调整和大量训练才能达到最佳性能。5.何时使用特定算法仔细研究各个算法可以帮助您了解它们的作用以及如何使用它们。下面提供了更多细节,并给出了何时使用特定算法的提示,可以将其与备忘单进行比较。1.LinearRegressionandLogisticRegression线性回归LogisticRegression线性回归是一种对连续因变量y与一个或多个预测变量X之间的关系进行建模的方法。y和X之间的关系可以线性建模为y=βTX+ε,给定训练集{xi,yi}Ni=1,(译注:此处公式请查原文,复制到word时变形,后面部分数学符号和公式相同)参数向量β可以学习。如果因变量不是连续的而是分类的,则可以使用对数变换将线性回归转换为逻辑回归。逻辑回归是一种简单、快速且功能强大的分类算法。这里我们讨论二元分类的情况,其中因变量y只取二元值{yi∈(-1,1)}Ni=1(它可以很容易地扩展到多类分类问题)。在逻辑回归中,我们使用不同的假设类来尝试预测给定示例属于“1”类的概率,而不是它属于“-1”类的概率。具体来说,我们将尝试学习以下形式的函数:p(yi=1|xi)=σ(βTxi)和p(yi=-1|xi)=1-σ(βTxi)。这里σ(x)=1/(1+exp(-x))是一个sigmoid函数。给定训练示例{xi,yi}Ni=1,可以通过找到给定数据集的β的对数似然来获得参数向量β。SAS中的线性回归SAS中的逻辑回归2.线性SVM和内核SVM内核技巧用于将非线性可分离函数映射到更高维度的线性可分离函数。支持向量机(SVM)找到由法向量w和超平面的偏差b表示的分类器。这个超平面(边界)以尽可能大的边距分隔不同的类别。问题转化为约束优化问题:Kerneltricks用于将非线性可分函数映射到高维线性可分函数当类是线性不可分时,kerneltricks可用于将非线性可分空间映射到更高维度的线性可分空间。当大多数因变量是数字时,逻辑回归和SVM应该是分类的第一个尝试。这些模型易于实现,参数易于调整,性能也相当不错。所以这些模型适合初学者。3.树和集成树决策树、随机森林和梯度提升决策树都是基于决策树的算法。决策树有很多变体,但它们都做同样的事情——将特征空间细分为具有相同标签的区域。决策树易于理解和实施。但是,当分支非常耗尽时,可能会发生过度拟合。随机森林和梯度提升决策树是两种流行的使用树算法的方法,同时可以实现良好的准确性并克服过度拟合的问题。4.神经网络和深度学习20世纪80年代中期,神经网络因并行和分布式处理能力而蓬勃发展。然而,反向传播训练算法的无效性阻碍了该领域的研究,该算法广泛用于优化神经网络的参数。支持向量机(SVM)等简单模型可以通过简单的训练解决凸优化问题,在机器学习中逐渐取代神经网络。近年来,新的和改进的训练技术,如无监督预训练和分层贪婪训练,重新唤起了人们对神经网络的兴趣。图形处理单元(GPU)和大规模并行处理(MPP)等计算能力的增强也激发了神经网络的复兴。神经网络研究的复兴导致了具有数千层的模型的发明。神经网络换句话说,浅层神经网络已经演变成深度学习神经网络。深度神经网络在监督学习方面非常成功。当应用于语音和图像识别时,深度学习与人类一样好,甚至更好。应用于特征提取等无监督学习任务,深度学习只需少量人工干预即可从原始图像或语音中提取特征。一个神经网络由三部分组成:输入层、隐藏层和输出层。训练样本定义了输入层和输出层。当输出层是分类变量时,神经网络可以用来解决分类问题。当输出层是连续变量时,神经网络可以用于回归。当输出层与输入层相同时,可以使用神经网络来提取内在特征。隐藏层的数量定义了模型的复杂性和建模能力。5.K-means/K-modes,Gaussianmixturemodelclustering(GMMclustering)高斯混合模型K-means/k-modes,GMM聚类旨在将n个观测值分成k个簇。K-means定义了硬分配:一个样本将与一个且仅与一个集群相关联。而GMM为每个样本定义了一个软分配,其概率与每个集群相关联。当簇数k给定时,这两种算法都足够简单和快速。SASVisualAnalysis中的聚类DBSCAN图像当未给出聚类数k时,可以使用DBSCAN(基于密度的空间聚类)通过密度扩散连接样本。6.层次聚类层次聚类可以使用树状结构(树状图)来可视化层次划分。它不需要输入簇的个数,可以使用不同的K来查看不同粒度的分区(簇)(即可以细化/粗化的簇)。7.主成分分析(PCA)、奇异值分解(SVD)和LatentDirichletPartition(LDA)我们通常不想把大量的特征直接扔进机器学习算法中,因为有些特征可能是无关紧要的,或者“固有”维数可能小于特征数。主成分分析(PCA)、奇异值分解(SVD)和LatentDirichletPartition(LDA)都可以用于降维。PCA是一种无监督的聚类方法,它将原始数据空间映射到较低维空间,同时保留尽可能多的信息。PCA基本上是找到一个最能保留数据方差的子空间,其中子空间由数据协方差矩阵的主特征向量定义。SVD与PCA相关,因为中心数据矩阵(特征与样本)的SVD提供的主左奇异向量也定义与PCA相同的子空间。然而,SVD是一种更通用的技术,因为它也可以做PCA做不到的事情。例如,对于一个用户-电影矩阵,SVD可以提取用户画像和电影画像,可以用于推荐系统。此外,SVD作为主题建模工具也被广泛用于自然语言处理(NLP),该应用也称为潜在语义分析。自然语言处理中的一项相关技术是LatentDirichletPartition(LDA)。LDA是一种概率主题模型,它将文档分解为主题,就像高斯混合模型(GMM)将连续数据分解为高斯密度一样。与GMM不同,LDA对数据(文档中的词)进行离散化建模,并根据Dirichlet分布约束主题先验分布。6.结论这是一个易于遵循的工作流程。记住以下几点:定义问题。你想解决什么问题?从简单的算法开始。熟悉数据和基线结果。然后尝试更复杂的东西。SAS可视化数据挖掘与机器学习平台为初学者提供了一个很好的学习和应用机器学习解决问题的平台。来源:http://blogs.sas.com/content/subconsciousmusings/2017/04/12/machine-learning-algorithm-use/【本文为专栏组织大数据文摘原创翻译,微信♂】大数据文摘(id:BigDataDigest)》】点此阅读作者更多好文