如何选择机器学习算法?

简介:   什么时候使用特定算法? 线性回归与逻辑回归,线性SVM与内核SVM,树, 神经网络和深度学习, k-means / k-modes,GMM,分层聚类,PCA,SVD,LDA  关于一些最流行的机器学习算法,建议阅读:机器学习:十大机器学习算法(v2022–0.2)  如果您已经熟悉这些算法,则可以跳过本节。  我应该使用哪种机器学习算法?  面对各种机器学习算法,经常遇到的一个典型问题是"我应该使用哪种算法?" 该问题的答案取决于许多因素,包括:  可用数据的大小,质量和性质。 计算时间任务的紧迫性。 您想对数据做什么  即使是经验丰富的数据科学家,也无法在尝试使用

  什么时候使用特定算法? 线性回归与逻辑回归,线性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分布的先验分布。

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

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

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

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

目录
相关文章
|
16天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
51 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
阿里云人工智能平台 PAI 团队发表的图像编辑算法论文在 MM2024 上正式亮相发表。ACM MM(ACM国际多媒体会议)是国际多媒体领域的顶级会议,旨在为研究人员、工程师和行业专家提供一个交流平台,以展示在多媒体领域的最新研究成果、技术进展和应用案例。其主题涵盖了图像处理、视频分析、音频处理、社交媒体和多媒体系统等广泛领域。此次入选标志着阿里云人工智能平台 PAI 在图像编辑算法方面的研究获得了学术界的充分认可。
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
|
2月前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
2月前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
63 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
|
2月前
|
机器学习/深度学习 算法 决策智能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
|
2月前
|
机器学习/深度学习 算法 Python
探索机器学习中的决策树算法:从理论到实践
【10月更文挑战第5天】本文旨在通过浅显易懂的语言,带领读者了解并实现一个基础的决策树模型。我们将从决策树的基本概念出发,逐步深入其构建过程,包括特征选择、树的生成与剪枝等关键技术点,并以一个简单的例子演示如何用Python代码实现一个决策树分类器。文章不仅注重理论阐述,更侧重于实际操作,以期帮助初学者快速入门并在真实数据上应用这一算法。
|
25天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的决策树算法
【10月更文挑战第29天】本文将深入浅出地介绍决策树算法,一种在机器学习中广泛使用的分类和回归方法。我们将从基础概念出发,逐步深入到算法的实际应用,最后通过一个代码示例来直观展示如何利用决策树解决实际问题。无论你是机器学习的初学者还是希望深化理解的开发者,这篇文章都将为你提供有价值的见解和指导。
|
2月前
|
机器学习/深度学习 算法 大数据
机器学习入门:梯度下降算法(下)
机器学习入门:梯度下降算法(下)
|
2月前
|
机器学习/深度学习 算法 API
机器学习入门(五):KNN概述 | K 近邻算法 API,K值选择问题
机器学习入门(五):KNN概述 | K 近邻算法 API,K值选择问题
|
2月前
|
机器学习/深度学习 算法 数据处理
EM算法对人脸数据降维(机器学习作业06)
本文介绍了使用EM算法对人脸数据进行降维的机器学习作业。首先通过加载ORL人脸数据库,然后分别应用SVD_PCA、MLE_PCA及EM_PCA三种方法实现数据降维,并输出降维后的数据形状。此作业展示了不同PCA变种在人脸数据处理中的应用效果。
35 0