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

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

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

当面对各种各样的机器学习算法时,初学者提出的一个典型问题是“我应该使用哪种算法?”   问题的答案因许多因素而异,包括:

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

即使是经验丰富的数据科学家也无法确定哪种算法在尝试不同的算法之前表现最佳。我们并不主张采用一种方法,但我们希望根据一些明确的因素提供一些指导,以便首先尝试哪种算法。

机器学习算法备忘单

流程图显示了何时使用哪种算法

该  机器学习算法小抄  帮助您从各种机器学习算法选择找到适合您的具体问题适当的算法。本文将指导您完成如何使用工作表的过程。

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

这里推荐的算法来自多个数据科学家和机器学习专家和开发人员的汇编反馈和提示。有几个问题我们没有达成协议,对于这些问题,我们试图强调共性并调和差异。

随着我们的库增长以包含更完整的可用方法集,稍后将添加其他算法。

如何使用备忘单

将图表上的路径和算法标签读作“如果  <路径标签>  然后使用  <算法>”。例如:

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

有时会应用多个分支,有时候它们都不会完美匹配。重要的是要记住这些路径旨在成为经验法则,因此有些建议并不准确。我与之交谈的几位数据科学家表示,找到最佳算法的唯一可靠方法是尝试所有这些算法。

机器学习算法的类型

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

监督学习

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

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

半监督学习

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

无人监督的学习

在执行无监督学习时,机器会显示完全未标记的数据。它被要求发现作为数据基础的内在模式,例如聚类结构,低维流形或稀疏树和图。

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

 强化学习

强化学习根据环境反馈分析并优化代理的行为。机器尝试不同的场景来发现哪些动作产生最大的回报,而不是被告知要采取哪些动作。试错法和延迟奖励将强化学习与其他技术区分开来。

选择算法时的注意事项

在选择算法时,请始终考虑以下因素:准确性,培训时间和易用性。许多用户将准确性放在第一位,而初学者倾向于专注于他们最熟悉的算法。

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

即使在这个阶段,最好的算法可能不是已经达到最高报告准确度的方法,因为算法通常需要仔细调整和广泛的训练以获得其最佳可实现的性能。

何时使用特定算法

更仔细地查看单个算法可以帮助您了解它们提供的内容以及它们的使用方式。这些描述提供了更多详细信息,并提供了何时使用特定算法的附加提示,与备忘单一致。

线性回归和逻辑回归    

线性回归

逻辑回归

 

线性回归是一种建模连续因变量y之间关系的方法ÿ和一个或多个预测变量X。X与Y之间的关系可以线性建模为给出训练样例,参数矢量β 可以学习到。

如果因变量不是连续的但是是分类的,则可以使用logit链接函数将线性回归转换为逻辑回归。Logistic回归是一种简单,快速但功能强大的分类算法。这里我们讨论因变量y的二进制情况ÿ只取二进制值(它可以很容易地扩展到多类分类问题)。

在逻辑回归中,我们使用不同的假设类来尝试预测给定示例属于“1”类的概率与它属于“-1”类的概率。具体来说,我们将尝试学习形式的函数:。这里是一个sigmoid函数。给出训练样例,参数矢量β可以通过最大化β的对数似然来学习β 给定数据集。

    

按线性回归分组

SAS Visual Analytics中的逻辑回归

 

 

线性SVM和内核SVM

内核技巧用于将非线性可分离函数映射到更高维度的线性可分函数。支持向量机(SVM)训练算法找到由法向量w表示的分类器w ^和偏见bb超平面的 这个超平面(边界)以尽可能宽的边距分隔不同的类。问题可以转换为约束优化问题:

 

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

线性和内核SVM图表

内核技巧用于将非线性可分离函数映射到更高维度的线性可分函数。

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

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

决策树

预测模型的决策树。

预测模型的决策树

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

神经网络和深度学习

卷积神经网络架构(图像源:维基百科创意共享

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

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

神经网络

SAS Visual Analytics中的神经网络

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

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

深度学习:它是什么以及它为何重要

k-means/k-modes,GMM(高斯混合模型)聚类

K均值聚类

高斯混合模型

 

 

Kmeans/k-modes,GMM聚类旨在将n个观测值划分为k个聚类。K-means定义硬分配:样本只与一个集群相关联。然而,GMM为每个样本定义了一个软分配。每个样本都有可能与每个群集相关联。当给出簇k的数量时,两种算法都是简单且快速的,以便进行聚类。

DBSCAN

 

DBSCAN插图

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

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

分层聚类

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

PCA,SVD和LDA

我们通常不希望将大量特征直接馈送到机器学习算法中,因为一些特征可能是不相关的,或者“内在”维度可能小于特征的数量。主成分分析(PCA),奇异值分解(SVD)和 潜在Dirichlet分配(LDA)都可用于执行降维。

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

SVD与PCA有关,因为中心数据矩阵的SVD(特征与样本)提供了主要的左奇异向量,这些向量定义了与PCA相同的子空间。然而,SVD是一种更通用的技术,因为它也可以做PCA可能不会做的事情。例如,用户对电影矩阵的SVD能够提取可以在推荐系统中使用的用户简档和电影简档。此外,SVD还被广泛用作自然语言处理(NLP)中的主题建模工具,称为潜在语义分析。

NLP中的相关技术是潜在Dirichlet分配(LDA)。LDA是概率主题模型,它以类似于高斯混合模型(GMM)将连续数据分解为高斯密度的方式将文档分解为主题。与GMM不同,LDA模拟离散数据(文档中的单词),并且它约束主题是根据Dirichlet分布的先验分布。

 结论

这是易于遵循的工作流程。尝试解决新问题时的外卖消息是:

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

 

来源:https://blogs.sas.com/content/subconsciousmusings/2017/04/12/machine-learning-algorithm-use/#prettyPhoto

没有更多推荐了,返回首页