我应该使用哪种机器学习算法?

该资源主要针对有兴趣识别和应用机器学习算法来解决其感兴趣的问题的初级到中级数据科学家或分析师。

当面对各种各样的机器学习算法时,初学者通常会问的一个问题是“我应该使用哪种算法?” 这个问题的答案取决于许多因素,包括:

  • 数据的大小、质量和性质。
  • 可用的计算时间。
  • 任务的紧迫性。
  • 您想用数据做什么。

即使是经验丰富的数据科学家,在尝试不同的算法之前也无法判断哪种算法效果最好。我们并不提倡一劳永逸的方法,但我们希望根据一些明确的因素提供一些指导,告诉人们应该首先尝试哪种算法。

编者注:这篇文章最初发表于 2017 年。我们将重新发布这篇文章,并附上关于此主题的更新视频教程。您可以在下面观看如何选择机器学习算法。或者继续阅读以找到一份备忘单,帮助您找到适合您项目的算法。

机器学习算法速查表

机器 学习算法速查表 可帮助您从各种机器学习算法中进行选择,以找到适合您特定问题的算法。本文将引导您完成如何使用该表的过程。

由于该备忘单是为初级数据科学家和分析师设计的,因此在讨论算法时我们会做出一些简化的假设。

这里推荐的算法是汇集了多位数据科学家、机器学习专家和开发人员的反馈和建议的结果。我们尚未就几个问题达成一致,对于这些问题,我们试图突出共同点并调和分歧。

随着我们的库不断扩大,包含更完整的可用方法集,稍后还会添加其他算法。

如何使用备忘单

将图表上的路径和算法标签理解为“如果 <路径标签> 则使用 <算法> ”。例如:

  • 如果您想执行降维,那么请使用主成分分析。
  • 如果您需要快速进行数字预测,请使用决策树或线性回归。
  • 如果需要分层结果,请使用层次聚类。

有时不止一个分支适用,有时没有一个分支是完美的匹配。重要的是要记住,这些路径旨在作为经验法则建议,因此有些建议并不准确。我采访过的几位数据科学家说,找到最佳算法的唯一可靠方法是尝试所有算法。

机器学习算法的类型

本节概述了最流行的机器学习类型。如果您熟悉这些类别并希望继续讨论具体算法,则可以跳过本节并转到下面的“何时使用特定算法”。

监督学习

监督学习算法根据一组示例进行预测。例如,历史销售额可用于估计未来价格。通过监督学习,您可以获得一个由标记的训练数据和所需的输出变量组成的输入变量。您可以使用算法分析训练数据,以学习将输入映射到输出的函数。此推断函数通过从训练数据中概括来映射新的未知示例,以预测未见过的情况的结果。

  • 分类:当数据用于预测分类变量时,监督学习也称为分类。当为图像分配标签或指示符(狗或猫)时就是这种情况。当只有两个标签时,这称为二元分类。当有两个以上的类别时,问题称为多类分类。
  • 回归:当预测连续值时,问题就变成了回归问题。
  • 预测:这是根据过去和现在的数据对未来进行预测的过程。它最常用于分析趋势。一个常见的例子可能是根据今年和前几年的销售额估计明年的销售额。

半监督学习

监督学习的挑战在于标记数据可能既昂贵又耗时。如果标签有限,您可以使用未标记的示例来增强监督学习。由于在这种情况下机器不是完全监督的,我们称机器是半监督的。使用半监督学习,您可以使用未标记的示例和少量标记数据来提高学习准确性。

无监督学习

在进行无监督学习时,机器会面对完全未标记的数据。它需要发现数据背后的内在模式,例如聚类结构、低维流形或稀疏树和图。

  • 聚类:对一组数据示例进行分组,使得一个组(或一个簇)中的示例(根据某些标准)比其他组中的示例更相似。这通常用于将整个数据集分成几个组。可以在每个组中进行分析,以帮助用户找到内在模式。
  • 降维:减少要考虑的变量数量。在许多应用中,原始数据具有非常高维的特征,并且某些特征是冗余的或与任务无关的。降低维度有助于找到真实的潜在关系。

 强化学习

强化学习是机器学习的另一个分支,主要用于顺序决策问题。在这种类型的机器学习中,与监督学习和无监督学习不同,我们不需要事先掌握任何数据;相反,学习代理与环境交互,并根据从该环境收到的反馈动态学习最佳策略。具体来说,在每个时间步骤中,代理都会观察环境的状态,选择一个动作,并观察从环境中收到的反馈。代理动作的反馈有许多重要组成部分。一个组成部分是代理对环境采取行动后产生的状态。另一个组成部分是代理在特定状态下执行特定动作所获得的奖励(或惩罚)。奖励是经过精心选择的,以与我们训练代理的目标保持一致。使用状态和奖励,代理会更新其决策策略以优化其长期奖励。随着深度学习的最新进展,强化学习引起了广泛关注,因为它在游戏、机器人和控制等广泛应用中表现出色。要了解 Deep-Q 和 Fitted-Q 网络等强化学习模型的实际作用,请查看本文

选择算法时的注意事项

选择算法时,请务必考虑以下方面:准确性、训练时间和易用性。许多用户将准确性放在首位,而初学者则倾向于关注他们最了解的算法。

当呈现数据集时,首先要考虑的是如何获得结果,无论结果看起来如何。初学者倾向于选择易于实现且可以快速获得结果的算法。只要这只是流程的第一步,这种方法就很好。一旦你获得了一些结果并熟悉了数据,你可能会花更多时间使用更复杂的算法来加强对数据的理解,从而进一步改善结果。

即使在这个阶段,最好的算法也可能不是达到报告的最高准确度的方法,因为算法通常需要仔细调整和大量训练才能获得最佳的性能。

何时使用特定算法

仔细研究各个算法可以帮助您了解它们提供的功能及其使用方式。这些描述提供了更多详细信息,并提供了有关何时使用特定算法的额外提示,与备忘单保持一致。

线性回归和逻辑回归    

线性回归逻辑回归

线性回归是一种对连续因变量之间的关系进行建模的方法是是以及一个或多个预测变量X𝑋。 之间的关系是是和X𝑋可以线性建模为是=β电视X+ ϵ是=𝛽电视𝑋+𝜖给出训练示例{X我,是我}否我= 1{𝑋我,是我}我=1否,参数向量β𝛽是可以学到的。

如果因变量不是连续的而是分类的,则可以使用逻辑回归函数将线性回归转换为逻辑回归。逻辑回归是一种简单、快速但功能强大的分类算法。这里我们讨论二元情况,其中因变量是是仅接受二进制值{是我∈ (−1,1 )​​​}否我= 1{是我∈(−1,1)}我=1否(它可以轻松扩展到多类分类问题)。

在逻辑回归中,我们使用不同的假设类来尝试预测给定示例属于“1”类的概率与属于“-1”类的概率。具体来说,我们将尝试学习以下形式的函数:对(是我= 1 |X我) = σ(β电视X我)页(是我=1|𝑋我)=𝜎(𝛽电视𝑋我)和对(是我= − 1 |X我) = 1 − σ(β电视X我)页(是我=−1|𝑋我)=1−𝜎(𝛽电视𝑋我)。 这里σ(x )=11 + e x p ( − x )𝜎(𝑋)=11+埃𝑋页(−𝑋)是一个 S 型函数。给定训练样本{X我,是我}否我= 1{𝑋我,是我}我=1否,参数向量β𝛽可以通过最大化对数似然来学习β𝛽给定数据集。按线性回归分组SAS Visual Analytics 中的逻辑回归

线性SVM和核SVM

核技巧用于将非线性可分离函数映射到更高维度的线性可分离函数。支持向量机 (SVM) 训练算法找到由法向量表示的分类器瓦瓦和偏见b𝑏超平面。该超平面(边界)将不同的类别尽可能分开。该问题可以转化为约束优化问题:

最小化瓦须遵守| |韓| |是我(瓦电视X我−b ) ≥1 ,​​i = 1 , … , n 。最小化瓦||瓦||须遵守是我(瓦电视𝑋我−𝑏)≥1,我=1,…,𝑛。

支持向量机 (SVM) 训练算法找到由超平面的法向量和偏差表示的分类器。该超平面(边界)将不同的类别尽可能分开。该问题可以转化为约束优化问题:

线性和核 SVM 图表
核技巧用于将非线性可分离函数映射到更高维的线性可分离函数。

当类别不是线性可分时,可以使用核技巧将非线性可分空间映射到更高维的线性可分空间。

当大多数因变量都是数值型时,逻辑回归和 SVM 应该是分类的首选。这些模型易于实现,参数易于调整,性能也相当不错。所以这些模型适合初学者。

树和组合树

预测模型的决策树。
预测模型的决策树

决策树、随机森林和梯度提升都是基于决策树的算法。决策树有很多变体,但它们都做同样的事情——将特征空间细分为具有大致相同标签的区域。决策树易于理解和实施。然而,当我们耗尽分支并深入研究树时,它们往往会过度拟合数据。随机森林和梯度提升是使用树算法实现良好准确性以及克服过度拟合问题的两种流行方法。

神经网络和深度学习

卷积神经网络架构(图片来源:wikipedia creative commons

神经网络凭借其并行和分布式处理能力在 1980 年代中期蓬勃发展。但是,该领域的研究受到广泛用于优化神经网络参数的反向传播训练算法的无效性的阻碍。支持向量机 (SVM) 和其他可以通过解决凸优化问题轻松训练的简单模型逐渐在机器学习中取代了神经网络。

近年来,无监督预训练和逐层贪婪训练等新的和改进的训练技术重新激发了人们对神经网络的兴趣。图形处理单元 (GPU) 和大规模并行处理 (MPP) 等越来越强大的计算能力也刺激了神经网络的重新采用。神经网络研究的复苏催生了数千层模型的发明。

神经网络
SAS Visual Analytics 中的神经网络

换句话说,浅层神经网络已经发展成为深度学习神经网络。深度神经网络在监督学习方面非常成功。当用于语音和图像识别时,深度学习的表现与人类一样好,甚至更好。应用于无监督学习任务,例如特征提取,深度学习还可以从原始图像或语音中提取特征,而无需太多人工干预。

神经网络由三部分组成:输入层、隐藏层和输出层。训练样本定义了输入层和输出层。当输出层是分类变量时,神经网络是一种解决分类问题的方法。当输出层是连续变量时,网络可用于进行回归。当输出层与输入层相同时,网络可用于提取内在特征。隐藏层的数量决定了模型的复杂性和建模能力。深度学习:它是什么以及它为什么重要

k-均值/k-模式、GMM(高斯混合模型)聚类

K 均值聚类高斯混合模型

Kmeans/k-modes,GMM 聚类旨在将 n 个观测值划分为 k 个簇。K-means 定义了硬分配:样本必须且只能与一个簇相关联。而 GMM 为每个样本定义了软分配。每个样本都有与每个簇相关联的概率。当簇数 k 给定时,这两种算法都足够简单且快速地进行聚类。

数据库扫描

DBSCAN 图示
DBSCAN 图示(图片来源:维基百科

当未给定聚类数k时,可以通过密度扩散连接样本,使用DBSCAN(基于密度的空间聚类)。

层次聚类

可以使用树结构(树状图)可视化分层分区。它不需要集群数量作为输入,并且可以使用不同的 K 以不同的粒度级别查看分区(即可以细化/粗化集群)。

PCA、SVD 和 LDA

我们通常不想将大量特征直接输入机器学习算法,因为某些特征可能不相关,或者“固有”维数可能小于特征数量。主成分分析 (PCA)、奇异值分解 (SVD) 和 潜在狄利克雷分配 ( LDA ) 都可用于执行降维。

PCA 是一种无监督聚类方法,它将原始数据空间映射到较低维空间,同时保留尽可能多的信息。PCA 基本上是找到一个最能保留数据方差的子空间,该子空间由数据协方差矩阵的主要特征向量定义。

SVD 与 PCA 相关,因为中心数据矩阵(特征与样本)的 SVD 提供主导左奇异向量,这些向量定义与 PCA 找到的相同子空间。但是,SVD 是一种更通用的技术,因为它还可以完成 PCA 可能无法完成的任务。例如,用户与电影矩阵的 SVD 能够提取可用于推荐系统的用户资料和电影资料。此外,SVD 还广泛用作自然语言处理(NLP) 中的主题建模工具,称为潜在语义分析。

NLP 中的一项相关技术是潜在狄利克雷分配 (LDA)。LDA 是一种概率主题模型,它将文档分解为主题,其方式与高斯混合模型 (GMM) 将连续数据分解为高斯密度的方式类似。与 GMM 不同,LDA 对离散数据(文档中的单词)进行建模,并限制主题根据狄利克雷分布进行先验分布。

 结论

这是易于遵循的工作流程。尝试解决新问题时需要注意的信息是:

  • 定义问题。你想解决什么问题?
  • 从简单开始。熟悉数据和基线结果。
  • 然后尝试一些更复杂的事情。

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注