原文:https://blogs.sas.com/content/subconsciousmusings/2017/04/12/machine-learning-algorithm-use/
此资源主要面向初级到中级数据科学家或分析师,他们有兴趣识别和应用机器学习算法以解决他们感兴趣的问题。
初学者在面对各种机器学习算法时提出的一个典型问题是“我应该使用哪种算法?”问题的答案取决于许多因素,其中包括:
- 数据的大小,质量和性质。
- 可用的计算时间。
- 任务的紧迫性。
- 你想要对数据做什么。
即使是一位经验丰富的数据科学家,在尝试不同的算法之前,也无法知道哪种算法会表现最好。我们并不是主张采取一种完成的方法,但我们希望能够根据一些明确的因素提供一些指导,说明首先尝试哪些算法。
机器学习算法小抄:
该 机器学习算法小抄 帮助您从各种机器学习算法选择找到适合您的具体问题适当的算法。本文将指导您完成如何使用工作表的过程。
由于备忘单是为初学者数据科学家和分析师设计的,因此在讨论算法时我们会做一些简化的假设。
这里推荐的算法来自几位数据科学家和机器学习专家和开发人员的编译反馈和提示。有几个问题我们没有达成协议,对于这些问题,我们试图强调通用性和调和差异。
随着我们的图书馆发展到包含更完整的可用方法集,其他算法将在稍后添加。
如何使用小抄
阅读图表上的路径和算法标签,如“如果 <路径标签>, 然后使用 <算法>”。例如:
- 如果要执行降维,则使用主成分分析。
- 如果您需要快速进行数字预测,请使用决策树或逻辑回归。
- 如果您需要分层结果,请使用层次聚类。
有时不止一个分支会适用,其他时候不会是完美匹配。重要的是要记住这些路径旨在成为经验法则建议,因此一些建议并不准确。我与之交谈过的几位数据科学家说,找到最好的算法的唯一方法就是尝试所有这些算法。
机器学习算法的类型
本节概述了最流行的机器学习类型。如果您熟悉这些类别并希望继续讨论特定算法,则可以跳过本节并转至下面的“何时使用特定算法”。
监督学习
监督学习算法基于一组示例进行预测。例如,历史销售额可用于估算未来价格。通过监督学习,您可以获得一个输入变量,该输入变量由标记的训练数据和一个期望的输出变量组成 您使用算法分析训练数据以了解将输入映射到输出的函数。这个推断的功能通过从训练数据中推广来预测未见情况下的结果,映射新的未知示例。
- 分类:当数据被用于预测分类变量时,监督学习也被称为分类。将标签或指示器(狗或猫)分配给图像时就是这种情况。当只有两个标签时,这称为二进制分类。当有两个以上的类别时,这些问题被称为多类分类。
- 回归:在预测连续值时,问题成为回归问题。
- 预测:这是根据过去和现在的数据对未来进行预测的过程。它最常用于分析趋势。一个常见的例子可能是根据当年和前几年的销售情况估算下一年的销售额。
半监督学习
监督式学习带来的挑战是标签数据可能很昂贵而且耗时。如果标签有限,可以使用未标记的示例来增强监督式学习。因为在这种情况下机器没有完全监督,所以我们说机器是半监督的。使用半监督学习,您可以使用带有少量标签数据的未标记示例来提高学习的准确性。
无监督学习
在进行无监督学习时,机器会显示完全未标记的数据。要求发现数据基础的内在模式,如聚类结构,低维流形或稀疏树和图。
- 聚类:将一组数据示例分组,以便一个组(或一个聚类)中的示例与其他组中的示例更相似(根据某些标准)。这通常用于将整个数据集分成几个组。可以在每个组中进行分析以帮助用户找到固有模式。
- 降维:减少考虑中的变量数量。在许多应用中,原始数据具有非常高的维度特征,并且一些特征对于任务是多余的或不相关的。减少维度有助于找到真实的,潜在的关系。
强化学习
强化学习根据环境反馈分析和优化代理的行为。机器尝试不同的场景来发现哪些行为产生最大的回报,而不是被告知要采取哪些行动。反复试验和延迟奖励将强化学习与其他技术区分开来。
选择算法时的注意事项
选择算法时,请始终考虑以下方面:准确性,培训时间和易用性。许多用户首先提出了准确性,而初学者倾向于关注他们最熟悉的算法。
当呈现数据集时,首先要考虑的是如何获得结果,无论结果如何。初学者倾向于选择易于实现并能够快速获得结果的算法。这很好,只要它只是这个过程的第一步。一旦您获得了一些结果并熟悉数据,您可能会花更多时间使用更复杂的算法来加强对数据的理解,从而进一步改进结果。
即使在这个阶段,最好的算法可能不是那些已经达到最高报告准确率的方法,因为算法通常需要仔细调整和广泛的培训以获得其最佳可实现的性能。
何时使用特定的算法
仔细观察个别算法可以帮助您了解它们提供的内容以及它们的使用方式。这些描述提供了更多细节,并提供了何时使用特定算法的附加提示,与备忘单一致。
线性回归和Logistic回归
线性回归
逻辑回归
线性回归是一种对连续的依赖变量y和一个或多个预测因子X之间的关系建模的方法,y和X之间的关系可以线性地建模为
y=βTX+ϵ,给出了训练的例子,可以学习参数向量β。
如果因变量不是连续的,而是分类的,线性回归可以用一个logit链接函数转换成逻辑上的隔离。逻辑回归是一种简单、快速但强大的分类算法。这里我们讨论二进制的情况,因变量y只接受二元值,(它可以很容易地扩展到多类分类问题)
在logistic回归中,我们使用一个不同的假设类来预测一个给定的例子属于"1"类和概率的概率。
![](https://i-blog.csdnimg.cn/blog_migrate/316c17a9baa01d988fceebad6f8f245d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c73f5496295d3b619c24c163e2da982e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4835fc3002d7104e2955a537b4ff675b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/aad0c51f5852806e77afce77f7e86bde.png)
SAS可视化分析中的逻辑回归
线性SVM和内核SVM
要利用核函数将非线性可分函数映射到高维线性可分函数。支持向量机(SVM)转换算法。找到由超平面的法向量w和偏置b表示的分类器。这个超平面(边界)可以将不同的类划分为尽可能宽的范围。这个问题可以转化为一个约束优化问题:
支持向量机(SVM)训练算法找到由法向量表示的分类器和超平面的偏差。这个超平面(边界)尽可能宽地分隔不同的类。该问题可以转化为约束优化问题:
内核技巧用于将非线性可分的函数映射为更高维的线性可分的函数。
当类不是线性可分的时候,可以使用内核技巧将非线性可分的空间映射到更高维的线性可分的空间。
当大多数因变量是数字时,logistic回归和SVM应该是分类的第一次尝试。这些模型易于实现,参数调整容易,性能也相当不错。所以这些模型适合初学者。
树和集成树
预测模型的决策树
决策树,随机森林和梯度提升都是基于决策树的算法。决策树有许多变体,但它们都做同样的事情 - 将特征空间细分成大多数标签相同的区域。决策树很容易理解和实施。但是,当我们耗尽树枝并且深入树木时,它们倾向于过度拟合数据。随机Forrest和渐变提升是两种使用树算法实现良好精确度以及克服过度拟合问题的流行方法。
神经网络和深度学习
卷积神经网络架构(图片来源:维基百科创意共享)
神经网络在20世纪80年代中期由于其并行和分布式处理能力而兴旺发达。但是在这个领域的研究受到广泛用于优化神经网络参数的反向传播训练算法的无效性的阻碍。支持向量机(SVM)和其他更简单的模型,通过求解凸优化问题可以很容易地进行训练,逐渐取代机器学习中的神经网络。
近年来,诸如无监督预训练和分层贪婪训练等新的和改进的训练技术已经导致对神经网络重新兴趣。日益强大的计算能力,例如图形处理单元(GPU)和大规模并行处理(MPP),也刺激了神经网络的复兴。神经网络的复兴研究已经引发了具有数千层的模型的发明。
换句话说,浅层神经网络已演变成深度学习神经网络。深度神经网络对于监督学习非常成功。当用于语音和图像识别时,深度学习的表现与人类一样好,甚至更好。应用于无监督学习任务(如特征提取),深度学习还可从原始图像或语音中提取特征,而人工干预则更少。
神经网络由三部分组成:输入层,隐藏层和输出层。训练样本定义了输入和输出层。当输出层是一个分类变量时,那么神经网络就是解决分类问题的一种方法。当输出层是一个连续变量时,网络可以用来做回归。当输出层与输入层相同时,网络可用于提取内在特征。隐藏层的数量定义了模型的复杂性和建模能力。
k-means / k-modes,GMM(高斯混合模型)聚类
![](https://i-blog.csdnimg.cn/blog_migrate/6d1898c71163f594f289a8689ea011ff.png)
K Means 群
高斯混合模型
Kmeans / k模式,GMM聚类旨在将n个观测分为k个聚类。K-表示定义硬分配:样本将被且仅被关联到一个群集。然而,GMM为每个样品定义一个软分配。每个样本都有与每个群集关联的概率。当给定聚类数目k时,两种算法都足够简单快速地进行聚类。
DBSCAN
DBSCAN插图(图片来源:维基百科)
当没有给出聚类数k时,可以通过密度扩散连接样本来使用DBSCAN(基于密度的空间聚类)。
分层聚类
![](https://i-blog.csdnimg.cn/blog_migrate/4199f4a79d803ac42af19d913ecb02f2.png)
分层分区可以使用树结构(树状图)可视化。它不需要集群的数量作为输入,并且可以使用不同的K来在不同粒度级别处查看分区(即,可以精炼/粗化集群)。
PCA,SVD和LDA
我们通常不希望直接将大量特征提供给机器学习算法,因为某些特征可能不相关,或者“内在”维度可能小于特征的数量。主成分分析(PCA),奇异值分解(SVD)和 潜在狄利克雷分配(LDA)均可用于降维。
PCA是一种无监督聚类方法,它将原始数据空间映射到较低维空间,同时保留尽可能多的信息。PCA基本上找到最能保留数据方差的子空间,子空间由数据协方差矩阵的主要特征向量定义。
SVD与PCA有关,因为中心数据矩阵(特征对样本)的SVD提供定义与PCA发现的相同子空间的主导左奇异向量。然而,SVD是一种更通用的技术,因为它也可以做PCA不能做的事情。例如,用户对电影矩阵的SVD能够提取可以在推荐系统中使用的用户简档和电影简档。另外,在自然语言处理(NLP)中,SVD还被广泛用作主题建模工具,称为潜在语义分析。
NLP中的相关技术是潜在Dirichlet分配(LDA)。LDA是概率性主题模型,它以与高斯混合模型(GMM)将连续数据分解为高斯密度相似的方式将文档分解为主题。与GMM不同的是,LDA对离散数据(文档中的词)进行建模,并且它约束根据Dirichlet分布该主题是先验分布的。
结论
这是易于遵循的工作流程。尝试解决新问题时的外带消息是:
- 定义问题。你想解决什么问题?
- 开始简单。熟悉数据和基准结果。
- 然后尝试更复杂的事情。