如何选择机器学习算法?

  什么时候使用特定算法? 线性回归与逻辑回归,线性SVM与内核SVM,树, 神经网络和深度学习, k-means / k-modes,GMM,分层聚类,PCA,SVD,LDA

  关于一些最流行的机器学习算法,建议阅读:机器学习:十大机器学习算法(v2022–0.2)

  如果您已经熟悉这些算法,则可以跳过本节。

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

  面对各种机器学习算法,经常遇到的一个典型问题是"我应该使用哪种算法?" 该问题的答案取决于许多因素,包括:

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

  即使是经验丰富的数据科学家,也无法在尝试使用不同算法之前就知道哪种算法性能最好。 我们并不是说这是唯一且完美的解决方案,但我们希望基于一些明确的因素提供指导-应该首先尝试使用哪种算法。

  机器学习算法备忘单

  机器学习算法备忘单(位于机器学习算法作弊表)可以帮助您从各种机器学习算法中进行选择,以找到适合您特定问题的合适算法。 本文将解释使用备忘单的过程。

  由于备忘单是为初学者数据科学家和分析师设计的,因此在讨论算法时会做一些简化的假设。 这里推荐的算法来自数位数据科学家以及机器学习专家和开发人员的反馈和技巧。 在一些问题上,我们的观点不一致。 对于这些问题,我们尝试强调通用性并尝试调和差异。 随着我们知识库的发展,将包括一组更完整的方法,稍后将添加其他算法。

  如何使用备忘单

  如何使用备忘单,依次读取路径和算法标签,例如:

  如果要执行降维,请使用主成分分析。 如果需要快速执行数值预测,请使用决策树或逻辑回归。 如果需要分层集群(分层集群)

  有些场景可能应用于多个分支,有些场景无法完美匹配。 重要的是要记住,这些路径仅基于经验,因此某些建议并不完全准确。 许多数据科学家都关闭了电视,要找到最好的算法,唯一的方法就是尝试所有电视。

  什么时候使用特定算法?

  线性回归与逻辑回归

  线性回归是一种讨论连续因变量之间关系的建模方法。 如果因变量不是连续的而是分类的,则可以使用logit链接函数将线性回归转换为逻辑回归。 Logistic回归是一种简单,快速且功能强大的分类算法。

  在逻辑回归中,我们使用不同的假设类来尝试预测给定示例属于类" 1"的概率以及该示例属于类" -1"的概率。

  线性SVM与内核SVM

  支持向量机(SVM)算法等效于通过法向向量和超平面的偏差获得分类器。 该超平面(边界)尽可能地将不同的类分开,该问题可以转换为约束优化问题。

  当大多数因变量是数字时,逻辑回归和SVM是应尝试的第一种分类方法。 这些模型易于实现,参数易于调整,性能相当好。 非常适合初学者。

  树

  决策树,随机森林和梯度提升都是基于决策树的算法。 决策树有许多变体,但是它们都做相同的事情-将要素空间细分为大多数标签相同的区域。 决策树易于理解和实施。 但是,当我们用完所有分支并深入研究时,它们往往会过度拟合数据。 随机森林和梯度提升是两种使用树算法的实现方式,它们具有较高的准确性,并且是克服过度拟合问题的流行方法。

  注意:在统计中,过度拟合(overfit)现象是指在拟合统计模型时使用过多参数。 与可用的数据总量相比,一个荒谬的模型可以完美地适应数据,只要它足够复杂即可。 过度安装通常被视为违反Occam剃刀原则。 当可选参数的*度超过数据中包含的信息的内容时,这将导致最终(拟合后)模型使用任意参数,这将降低或破坏模型对情况进行概括的能力,而不仅仅是对情况的概括。 训练中使用的现有数据(根据其归纳偏差)。 另一个常见的现象是使用太少的参数来适应数据。 这称为欠拟合(或欠拟合)。

  神经网络和深度学习

  由于其并行和分布式处理能力,神经网络在1980年代中期蓬勃发展。 然而,反向传播算法效率低下阻碍了该领域的研究,该算法被广泛用于优化神经网络参数。 支持向量机(SVM)和其他更简单的模型可以通过解决凸优化问题轻松地进行训练,从而逐步取代机器学习中的神经网络。

  近年来,新的和改进的训练技术,例如无监督的预训练和逐层贪婪训练,促进了神经网络的复兴。 越来越强大的计算功能,例如图形处理单元(GPU)和大规模并行处理(MPP),也刺激了神经网络的发展,并发明了具有数千层的神经网络模型。

  注意:反向传播(backpropagation,简称BP)是"错误反向传播"的缩写,是与优化方法(例如梯度下降法)结合使用的一种通用方法,用于训练人工神经网络。 该方法计算网络中权重的损失函数的梯度。 该梯度被反馈给技术教程以更新权重以最小化损失函数。

  SAS Visual Analytics中的神经网络

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

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

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

  k-均值/ k-模式,GMM聚类旨在将n个观测值划分为k个聚类。 简而言之,k均值的结果是将每个数据点分配给一个群集,这是硬分配,而GMM给出将这些数据点分配给每个群集的概率,也称为软分配。 每个样本都有与每个聚类关联的概率。 当给出聚类数k时,两种算法都足够简单,可以快速执行聚类。

  DBSCAN | 基于密度的空间聚类

  DBSCAN是基于噪声的应用程序的基于密度的空间聚类,是Martin Ester等人在1996年提出的一种聚类分析算法。该算法基于密度:给定空间中的一组点,该算法可以将附近点分组 DBSCAN是一起使用(具有许多相邻点的点),并标记出低密度区域中的离群值(最靠近它的点也很远),它是最常用的聚类分析算法。

  分层聚类| 层次聚类

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

  PCA,SVD和LDA

  我们通常不希望直接向机器学习算法提供大量功能,因为某些功能可能无关紧要,或者"内在"维度可能小于功能数目。 主成分分析(PCA,主成分分析),奇异值分解(SVD,奇异值分解)和隐式Dirichlet分布(LDA,潜在Dirichlet分配)都可以用于降维。

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

  SVD和PCA是相关的-*数据矩阵的SVD(功能与样本)可以提供占主导地位的左奇异向量,这些向量定义了PCA发现的相同子空间。 但是,SVD是更通用的技术,因为它也可以完成PCA无法完成的工作。 例如,用户和电影矩阵的SVD可以提取可在推荐系统中使用的用户配置文件和电影配置文件。 此外,在自然语言处理(NLP)中,SVD还被广泛用作主题建模工具,称为潜在语义分析。

  NLP中的相关技术是隐式Dirichlet分布(LDA)。 LDA是一种概率主题模型,类似于高斯混合模型(GMM),即根据高斯密度分解连续数据,该文档分为多个主题。 与GMM不同,LDA对离散数据(文档中的单词)进行建模,并且将主题约束为基于Dirichlet分布的先验分布。

  摘要:选择算法时的注意事项

  选择算法时,请始终考虑以下因素:准确性(准确性),训练时间(训练时间)和易用性(易用性)。 许多用户将准确性放在首位,而初学者则倾向于专注于他们最了解的算法(初学者往往专注于他们最了解的算法)。

  首先要考虑的是如何获得结果,而不管结果如何。 初学者倾向于选择易于实现并且可以快速获得结果的算法(初学者倾向于选择易于实现并且可以快速获得结果的算法)。 这项工作是可以理解的,只需确保它只是流程的第一步即可。 获得一些结果并熟悉数据后,可能需要花费更多时间并使用更复杂的算法来增强对数据的理解,从而进一步改善结果。

  最好的算法可能不是获得最高准确度的算法,因为算法通常需要进行仔细的调整和广泛的培训才能在可用性方面达到最佳性能。

上一篇:小程序云开发入门介绍


下一篇:和Ruby On Rail 创始人讨论软件开发