带你快速找到适合自己的算法!
本文主要适用于初学者到中级数据科学家或分析师,可以应用机器学习算法来解决他们感兴趣的问题。
一个初学者面临各种机器学习算法的典型问题是“我应该使用哪种算法?”问题的答案取决于许多因素,包括:
数据的大小、质量和性质。
可用计算时间。
任务的紧迫性。
你想用数据做什么
即使是经验丰富的数据科学家也不能在尝试不同的算法之前,判断哪种算法会最好。 我们并不是倡导一个一步到位的方法,但是我们希望首先根据一些明确的因素来提供一些尝试哪些算法的指导。
1
机器学习算法速查表
机器学习算法速查表帮助你从各种机器学习算法中选择,以找到适合你的具体问题的算法。 本文将引导你完成如何使用速查表的过程。
由于该速查表是专为初学者数据科学家和分析师设计的,所以在讨论算法时,我们将作出一些简化的假设。
这里推荐的算法是来自几个数据科学家和机器学习专家和开发人员的编译反馈和提示。有几个问题,我们还没有达成协议,对于这些问题,我们试图突出共性及调和差异。
稍后将会添加其他算法,因为我们的库增长包含一套更完整的可用方法。
如何使用速查表?
将图表上的路径和算法标签读为“如果 <路径标签> 则使用<算法>”。例如:
如果要进行降维,则使用主成分分析法。
如果需要快速的数值预测,请使用决策树或逻辑回归。
如果需要分层结果,请使用层次聚类。
有时多个分支适用,其他时候他们都不是绝配。 重要的是要记住这些路径旨在作为有经验的建议,因此有些建议并不准确。我谈到的几位数据科学家说,找到最好算法的唯一方法就是尝试所有的算法。
2
机器学习算法的类型
本节提供最受欢迎的机器学习类型的概述。 如果你熟悉这些类型,并希望继续讨论特定的算法,则可以跳过本节并转到下面的“何时使用特定算法”。
1. 监督学习
监督学习算法基于一组示例进行预测。例如,可以使用历史销售来估计未来价格。通过监督学习,你有一个输入变量,由标记的训练数据和期望的输出变量组成。你使用算法分析训练数据,来得到将输入映射到输出的函数。这个推断函数通过从训练数据推广来预测未知情况下的结果来映射新的未知示例。
分类:当数据用于预测分类变量时,监督学习也称为分类。 当分配标签或指示符时,狗或猫分配给图像就是这种情况。 当只有两个标签时,这被称为二进制分类。当有两类以上时,这些问题被称为多类分类。
回归:当预测连续值时,问题变成一个回归问题。
预测:这是基于过去和现在的数据来预测未来的过程。这是最常用的分析趋势。一个常见的例子可能是根据本年和前几年的销售额估计下一年的销售额。
2. 半监督学习
监督学习的挑战是标注数据可能是昂贵和耗时的。 如果标签有限,你可以使用未标记的示例来增强监督学习。 因为在这种情况下机器没有被完全监督,所以我们说机器是半监督的。 使用半监督学习,你可以使用少量标签数据的未标记示例来提高学习准确性。
3. 非监督学习
执行非监督学习时,机器将呈现完全未标记的数据。 被要求发现基础数据的固有模式,如聚类结构,低维流形或稀疏树和图。
聚类:分组一组数据示例,使一个组(或一个集群)中的示例与其他组中的示例更相似(根据某些标准)。 这通常用于将整个数据集分成几组。 可以在每个组中进行分析,以帮助用户找到固有模式。
降维:减少考虑的变量数量。 在许多应用中,原始数据具有非常高的维度特征,并且一些特征是冗余的或与任务无关的。 降低维度有助于找到真实的,潜在的关系。
4. 增强学习
增强学习根据环境的反馈分析和优化agent行为。机器尝试不同的场景来发现哪些行为会产生最大的回报,而不是被告知要采取哪些行动。
3
选择算法时的注意事项
选择算法时,请务必考虑这些方面:准确度,训练时间和易用性。 许多用户将准确度放在第一位,而初学者则倾向于关注他们最了解的算法。
当被提供一个数据集时,首先要考虑的是如何获得结果,无论这些结果如何。初学者倾向于选择易于实现的算法,并可以快速获得结果。 这样做很好,因为这只是过程的第一步。 获得一些结果并熟悉数据后,你可以花费更多时间使用更复杂的算法来加强对数据的理解,从而进一步改进结果。
即使在这个阶段,最好的算法可能不是实现最高报告精度的方法,因为算法通常需要仔细调整和广泛的训练才能获得最佳的可实现性能。
何时使用特定的算法?
更加仔细地查看各个算法可以帮助你了解它们提供的内容以及如何使用它们。 这些描述提供了更多的细节,并提供了什么时候使用特定算法,与速查表对准。
4
线性回归和逻辑回归
线性回归是对连续因变量y与一个或多个预测变量X之间的关系进行建模的方法。Y和X之间的关系可以线性建模为。根据训练样本,可以学习参数向量β。
如果因变量不是连续的而是分类的,则可以使用logit链接函数将线性回归转换为逻辑回归。逻辑回归是一种简单,快速而强大的分类算法。这里我们讨论二进制的情况,其中因变量y只取二进制值(它可以容易地扩展到多类分类问题)。
在逻辑回归中,我们使用不同的假设类来尝试预测给定示例属于“1”类的概率,而不是它属于“-1”类的概率。具体来说,我们将尝试学习以下形式的函数:和。这里是sigmoid函数。给定训练样例,可以通过使给定数据集β的对数似然度最大化来得知参数向量β。
1. 线性SVM和核SVM
核机制用于将非线性可分离函数映射为更高维度的线性可分离函数。支持向量机(SVM)训练算法找到由超平面的法向量w和偏差b表示的分类器。这个超平面(边界)将不同的类分隔开尽可能大的边距。该问题可以转化为约束优化问题:
支持向量机(SVM)训练算法找到由超平面的法向量w和偏差b表示的分类器。这个超平面(边界)将不同的类分隔开尽可能大的边距。该问题可以转化为约束优化问题:
当类不可线性分离时,可以使用核机制将非线性可分离空间映射到更高维度的线性可分离空间。
当大多数因变量是数字时,逻辑回归和SVM应该是分类的第一个尝试。这些机型易于实现,其参数易调,性能也相当不错。所以这些模式适合初学者。
2. 树和集成树
决策树、随机森林和梯度提升都是基于决策树的算法。决策树有许多变种,但它们都做同样的事情--将特征空间细分为具有相同标签的区域。决策树易于理解和实施。然而,当我们剪枝并深度运行树时往往过度拟合数据。随机森林和梯度提升是使用树算法实现良好准确性以及克服过拟合问题的两种流行方式。
2. 神经网络和深度学习
20世纪80年代中期,由于并行和分布式处理能力,神经网络蓬勃发展。但是,这一领域的研究受到广泛用于优化神经网络参数的反向传播训练算法的无效性的阻碍。支持向量机(SVM)等简单模型,可以通过解决凸优化问题轻松训练,逐渐取代机器学习中的神经网络。
近年来,新的和改进的训练技术,如非监督的预训练和逐层贪婪训练,导致对神经网络兴趣的兴起。越来越强大的计算能力,如图形处理单元(GPU)和大规模并行处理(MPP),也激发了神经网络的复兴。神经网络复兴的研究引起了成千上万层模型的发明。
换句话说,浅层神经网络已经演变成深度学习神经网络。深层神经网络对于监督学习已经非常成功。当用于语言和图像识别时,深层次的学习表现与甚至比人类更好。适用于非监督的学习任务,如特征提取,深度学习还从原始图像或语音中提取少量人为干预的特征。
神经网络由三部分组成:输入层,隐层和输出层。训练样本定义了输入和输出层。当输出层是分类变量时,神经网络是解决分类问题的一种方式。当输出层是连续变量时,网络可以用来做回归。当输出层与输入层相同时,可以使用网络来提取内在特征。隐藏层的数量定义了模型的复杂性和建模能力。
3. K-means/ K-modes,GMM(高斯混合模型)聚类
K-means/ K-modes,GMM聚类旨在将n个观察值分为k个集群。K-means定义硬分配:样本将是且仅与一个集群相关联。然而,GMM为每个样本定义一个软分配。每个样本具有与每个集群相关联的概率。当给定集群k的数量时,两种算法都是简单且足够快的聚类。
4. DBSCAN
当聚类数k没有给出时,可以通过密度扩散连接样本来使用DBSCAN(基于密度的空间聚类)。
5. 分层聚类
可以使用树结构(树形图)来可视化分层分区。它不需要集群的数量作为输入,并且可以使用不同的K来以不同的粒度级(即,可以细化/粗化的集群)来查看分区。
6. 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分布先验分布。
4
结 论
这是易于遵循的工作流程。在此得出的当试图解决一个新问题时的结论:
定义问题。你想解决什么问题?
从简单的开始。熟悉数据和基线结果。
然后尝试更复杂的东西。
End.
来源:云栖社区组织翻译
作者:Hui Li
译者:tiamo_zn
推 荐关 注 ▼