当前位置: 首页 > 科技观察

算法太棘手?教你如何选择合适的机器学习算法

时间:2023-03-22 14:34:40 科技观察

机器学习既是一门科学,也是一门艺术。纵观各种机器学习算法,没有通用的解决方案或方法。事实上,有几个因素会影响您对机器学习算法的选择。有些问题非常具体,需要特定的解决方案。例如,如果你对推荐系统有所了解,你会发现它是一类非常常见的机器学习算法,用于解决一类非常具体的问题。其他问题非常开放,可能需要试错法(例如:强化学习)。监督学习、分类、回归等问题非常开放,可用于异常检测或构建更通用的预测模型。此外,我们在选择机器学习算法时做出的一些决定与算法的优化或技术方面关系不大,而更多地与业务决策有关。下面,让我们看一下可以帮助您缩小机器学习算法选择范围的因素。1.数据科学过程在你开始研究不同的机器学习算法之前,你需要清楚地了解你拥有的数据、你面临的问题以及相关的约束。1.了解你的数据当我们决定使用哪种算法时,我们拥有的数据的类型和形状起着关键作用。一些算法可以处理较小的样本集,而另一些算法则需要大量样本。某些算法适用于某些类型的数据。例如,朴素贝叶斯算法特别适用于要分类的输入,但对缺失值一点也不敏感。因此,您需要:(1)了解您的数据查看结果的摘要统计和数据可视化百分比可以帮助您识别大多数数据中的范围均值和中位数可以描述集中趋势相关系数可以指向强相关b。数据可视化箱形图可以识别异常值密度图和直方图可以显示数据的分布散点图可以描述二元关系(2)数据清洗a.处理缺失值。缺失数据对某些模型的影响大于其他模型。即使对于那些用于处理缺失数据的模型,它们也可能对缺失数据敏感(某些变量的缺失数据可能导致预测性能不佳)b。选择一种处理离群值的方法多维数据中的离群值很常见。有些模型对离群值的敏感度低于其他模型。通常,树模型对异常值的存在不太敏感。然而,回归模型或任何试图使用方程的模型都可能受到异常值的严重影响。异常值可能是数据收集不当的结果,也可能是合理的极端值。C。数据是否需要聚合?2.数据增强(1)特征工程是从原始数据生成可用于建模的数据的过程,可以起到以下作用:使模型更容易解释(如Databinning)捕获更复杂的关系(如神经网络)减少数据冗余和降低数据维度(如主成分分析(PCA))重新缩放变量(如标准化或归一化)(2)不同的模型可能有不同的特征工程要求。一些模型具有内置的特征工程。3.对问题进行分类下一步是对问题进行分类。这是一个需要分两步实施的过程。(1)Classifybasedoninput:如果你有标签数据,那么这是一个监督学习问题。如果你有未标记的数据并想从中找到有用的结构,那么这就是一个无监督学习问题。如果你想通过与环境交互来优化一个目标函数,那么这就是一个强化学习问题。(2)按输出分类:如果模型的输出是一个(连续的)数,那么这是一个回归问题。如果模型的输出是一个类,那么这就是一个分类问题。如果模型的输出是一组除以输入数据的聚类,那么这是一个聚类问题。你想发现异常吗?此时您面临异常检测问题。4.理解你需要满足的约束。您需要考虑可以存储多少数据。根据系统的存储容量,您可能无法存储几千兆字节用于分类、回归模型或几千兆字节用于聚类分析。数据。例如,在嵌入式系统中,你会面临这种情况。对预测过程的速度有要求吗?在实时应用中,很明显尽快得到预测结果是很重要的。例如,在自动驾驶问题中,应用程序必须尽快对道路标志进行分类,以避免发生交通事故。对学习过程的速度有要求吗?在某些情况下,需要快速训练模型:有时,您需要使用不同的数据集实时快速更新模型。5.找到可用的算法当你清楚地了解你的任务环境时,你可以使用你所掌握的工具来确定要解决的问题的适用和可行的算法。影响您选择模型的一些因素包括:模型是否符合业务目标模型需要多少数据预处理工作模型的准确性模型的可解释性如何模型运行的速度有多快:构建模型?很久?该模型的可扩展性如何?模型的复杂度是影响算法选择的重要标准。通常,更复杂的模型具有以下特征:它依赖于更多特征进行学习和预测(例如,使用十个特征而不是两个特征来预测对象)它依赖于更复杂的特征工程(例如,使用多项特征、交互特征或主成分)它具有更大的计算开销(例如,需要100棵决策树的随机森林而不是单个决策树)否则,相同的机器学习算法可能会根据参数的数量和某些超参数的选择变得更加复杂.例如:回归模型可以有更多的特征,或者多项式项和交互项。决策树可以有更大或更小的深度。使相同的算法更复杂会增加过度拟合的机会。二、常用的机器学习算法1、线性回归这可能是机器学习中最简单的算法了。例如,当您想要计算一些连续值而不是分类输出时,可以使用回归算法。因此,当您需要预测正在运行的流程的未来价值时,您可以使用回归算法。但是,当特征冗余时,即存在多重共线性时,线性回归不太稳定。在以下情况下可以考虑使用线性回归:从一个地方移动到另一个地方所花费的时间预测下个月某种产品的销售情况血液酒精浓度对协调情况的影响,以及提高对年收入的估计2.LogisticRegression逻辑回归进行二元分类,从而输出二元标签。它以特征的线性组合作为输入,并对其应用非线性函数(sigmoid),因此它是一个非常小的神经网络实例。Logistic回归提供了许多方法来规范您的模型,因此在朴素贝叶斯中,您不必担心您的特征是否相关。该模型还有一个很好的概率解释。与决策树或支持向量机不同,您可以轻松更新模型以接收新数据。如果你想使用概率框架,或者你希望以后能够快速将更多的训练数据纳入你的模型,你可以使用逻辑回归算法。逻辑回归还可以帮助你了解预测结果背后的因素,它不完全是一种黑盒方法。逻辑回归算法可以在以下情况下考虑:预测客户流失信用评分和欺诈检测评估营销活动的有效性3.决策树决策树很少单独使用,但不同的决策树可以组合成非常有效的算法,对于例如随机森林或梯度提升树算法。决策树很容易处理特征交互,决策树是非参数模型,所以你不必担心异常值或数据是否线性可分。决策树算法的一个缺点是不支持在线学习,所以当你想使用新的样本时,你必须重建决策树。决策树的另一个缺点是它们容易过度拟合,这就是像随机森林(或增强树)这样的集成学习方法可以派上用场的地方。决策树也需要大量的内存空间(你拥有的特征越多,你的决策树可能越深越大)可能会拖欠银行贷款在“建立”和“购买”之间做出决定销售主管的资格4.K-means特征来标记它。这种问题称为聚类任务。在这种情况下可以使用聚类算法:例如,当你有一大群用户,你想根据他们共有的一些属性将他们分成一些特定的组。如果你的问题陈述中有这样的问题:比如找出一群人是如何组织的,或者把某物分组,或者找到一个特定的组。这时候就应该使用聚类算法。这种方法最大的缺点是K-means算法需要提前知道你的数据会有多少个簇,所以这可能需要大量的实验来“猜测”我们最终定义的最大簇数-K。5.主成分分析(PCA)PCA可以降低数据的维度。有时你有各种各样的特征,这些特征可能高度相关,并且模型可能会过度拟合如此大量的数据。这时,可以使用主成分分析(PCA)技术。主成分分析(PCA)起作用的关键因素在于,除了低维样本表示之外,它还提供了各种变量的同步低维表示。同时样本和变量表征提供了一种直观地查找表征一组样本的变量的方法。6.支持向量机支持向量机(SVM)是一种监督机器学习技术,广泛用于模式识别和分类问题——当您的数据恰好有两个类别时。支持向量机具有较高的准确率,是防止过拟合的良好理论保证。当您使用合适的核函数时,即使您的数据在基本(低维)特征空间中线性不可分,它们也能很好地工作。支持向量机在文本分类问题中非常流行,其中输入是非常高维空间的情况并不少见。然而,SVM是一种内存密集型算法,难以解释和调整。您可以在以下实际应用中使用SVM:从患有糖尿病等常见疾病的人身上寻找手写字符识别基于基于贝叶斯定理的分类技术,它易于构建,非常适合大规模数据集。除了结构简单之外,朴素贝叶斯据说比一些更复杂的分类方法表现得更好。当CPU和内存资源有限时,朴素贝叶斯也是一个不错的选择。朴素贝叶斯非常简单,你只是做了很多计数。如果朴素贝叶斯的条件独立假设成立,朴素贝叶斯分类器将比逻辑回归等判别模型收敛得更快,因此需要更少的训练数据。即使朴素贝叶斯的假设不成立,朴素贝叶斯分类器也往往表现良好。如果您想使用性能良好的快速、简单的模型,朴素贝叶斯是一个不错的选择。该算法最大的缺点是无法学习特征之间的相互作用。您可以在以下实际应用中使用朴素贝叶斯:情感分析和文本分类推荐系统,如Netflix、亚马逊识别垃圾邮件人脸识别8.随机森林随机森林是决策树的集合。它能够同时解决大规模数据集的回归和分类问题,还有助于从数千个输入变量中找到最重要的变量。随机森林具有很强的可扩展性,它们可以处理任何维度的数据,并且通常具有相当不错的性能。此外,还有一些遗传算法可以很好地扩展到任何维度和任何数据,而对数据本身的了解最少,其中最简单的实现是微生物遗传算法。然而,随机森林学习起来可能很慢(取决于参数设置),而且这种方法不能迭代地改进生成模型。您可以在以下实际应用中使用随机森林:预测高风险患者预测生产中零件的故障预测拖欠贷款的人9.神经网络神经网络包含神经元之间连接的权重。这些权重是平衡的,一次学习一个数据点。当所有的权重都训练好后,如果需要对新的给定数据点进行回归,则可以使用神经网络来预测分类结果或特定值。借助神经网络,可以将极其复杂的模型作为黑盒方法进行训练和利用,而无需在训练模型之前进行不可预测的复杂特征工程。通过与“深度方法”相结合,可以采用更加不可预测的模型来完成新任务。例如,最近深度神经网络大大改善了物体识别任务的结果。深度学习也被应用于特征提取等无监督学习任务,它也可以在较少人为干预的情况下从原始图像或语音中提取特征。另一方面,神经网络难以解释,其参数设置异常复杂。此外,神经网络算法也是资源密集型和内存密集型的。3.Scikit参考手册Scikit学习为你提供了非常深入和解释清楚的流程图,可以帮助你选择正确的算法。我觉得这张图很方便。4.结论一般来说,你可以根据上面介绍的几点筛选出一些算法,但一开始很难知道哪种方法最好。您最多可以将选择算法的过程迭代几次。将你的数据输入到你已经识别出的潜在优秀的机器学习算法中,并行或串行运行这些算法,最后评估算法的性能以选择最佳算法。在***,我想告诉你,找到解决现实生活问题的正确方法往往不仅仅是应用数学方法的问题。这需要我们了解业务需求、规则和制度、利益相关者的关注点,以及大量的专业知识。在解决机器学习问题的同时能够结合和平衡这些问题是至关重要的,能够做到这一点的人才能创造最大的价值。原文链接:https://hackernoon.com/choosing-the-right-machine-learning-algorithm-68126944ce1f)》]点此阅读本作者更多好文