如何为应用选择正确的机器学习算法
听您的数据,遵循您的目标…
刚开始学习和实践数据科学与机器学习时,我会查找资源和教程以实施和使用特定的机器学习算法。
互联网上充满了教您如何使用算法,算法如何工作以及如何将其应用于数据的材料。
但是,当我开始构建项目时,我将花费很长时间来尝试确定要使用哪种算法。
请参阅,有关如何使用特定算法的大多数文章遗漏了何时使用该算法以及如何为数据选择最佳算法。
在本文中,我将尝试介绍为特定项目选择最佳机器学习算法时遵循的过程。
在开始之前,我们首先来学习一下机器学习算法的类型。
机器学习算法的类型
机器学习算法可以大致分为三大类:
监督学习
在监督学习中,该算法从训练数据构建数学模型,该模型具有输入和输出的标签。数据分类和回归算法被认为是监督学习。
无监督学习
在无监督学习中,该算法在仅具有输入功能但没有输出标签的数据上建立模型。然后训练模型以在数据中寻找某些结构。聚类和分段是无监督学习算法的示例。
强化学习
在强化学习中,该模型通过执行一组自己自行完成的动作和决策来学习执行任务,然后从这些动作和决策的反馈中学习。蒙特卡洛是强化学习算法的一个示例。
> Image by the author (made using Canva)
选择正确的算法
因此,您知道不同的算法类型,知道它们的不同之处,并且知道如何使用它们。现在的问题是何时使用每种算法?
要回答此问题,我们需要考虑我们要解决的问题的四个方面:
№1:数据
了解数据是决定算法的第一步,也是最重要的一步。在开始考虑不同的算法之前,您需要熟悉自己的数据。一种简单的方法是可视化数据并尝试查找其中的模式,尝试观察其行为,最重要的是,观察其大小。
了解有关数据的关键信息将有助于您对算法做出初步决策。
· 数据大小:某些算法在处理较大数据时性能要优于其他算法。例如,对于小型训练数据集,具有高bais /低方差分类器的算法将比低偏差/高方差分类器更好地工作。因此,对于小的训练数据,朴素贝叶斯的表现将优于kNN。
· 数据的特征:这意味着您的数据如何形成。您的数据是线性的吗?然后,也许线性模型会最适合它,例如回归(线性和逻辑)或SVM(支持向量机)。但是,如果您的数据更复杂,则需要像随机森林这样的算法。
· 数据的行为:您的功能是顺序的还是链接的?如果是顺序的?您要预测天气还是股市?然后,最好使用与之匹配的算法,例如Markov模型和决策树。
· 数据类型:您可以对输入或输出数据进行分类。如果您的输入数据被标记,则使用监督学习算法;如果不是,那可能是无人监督的学习问题。另一方面,如果您的输出数据是数字,则使用回归,但如果是一组组,则是聚类问题。
№2:准确性
现在,您已经研究了数据,分析了数据的类型,特征和大小,您需要自问,准确性对您要解决的问题有多大影响?
模型的准确性是指其根据给定观察集预测答案的能力,接近该观察集的正确响应。
有时,对于我们的目标应用程序而言,不需要准确的答案。如果近似值足够好,我们可以通过选择近似模型来显着减少训练和处理时间。近似方法可以避免或不进行过度拟合或对数据进行过度拟合,例如对非线性数据进行线性回归。
№3:速度
通常,准确性和速度是相反的。在确定算法时,您需要在两者之间进行权衡。更高的精度通常意味着更长的培训和处理时间。
朴素贝叶斯(NaïveBayes)和线性与逻辑回归(Linear and Logistic regression)等算法易于理解和实施,因此执行速度很快。SVM,神经网络和随机森林等更复杂的算法需要更长的时间来处理和训练数据。
那么,哪个对您的项目更有价值?准确性还是时间?如果有时间的话,使用更简单的算法会更好,而如果准确性是最重要的事情,那么选择更复杂的算法对您的项目会更好。
> Image by the author (made using Canva)
№4:功能和参数
问题的参数是数字,它将影响您选择算法的行为方式。参数是诸如容错性或迭代次数之类的因素,或者是算法行为的变体之间的选项。训练和处理数据所需的时间通常与您拥有多少个参数有关。
处理和训练模型所需的时间随参数数量呈指数增加。但是,具有许多参数通常表示算法更灵活。
通常,在机器学习或数据科学中,功能是您要分析的问题的可量化变量。
具有大量功能可能会减慢某些算法的速度,从而延长培训时间。如果您的问题具有许多功能,那么最好使用诸如SVM之类的算法,该算法非常适合具有大量功能的应用程序。
最后的想法
许多因素控制着选择算法的过程。我们主要可以将您的决策标准分为两部分,即数据相关方面和问题相关方面。
数据的大小,行为,特征和类型可以使您初步了解要使用哪种算法。一旦获得了最初的决定,问题的不同方面将帮助您做出最终决定。
最后,请始终记住两件事:
· 与复杂算法相比,更好的数据可以带来更好的结果。如果您可以使用更简单的算法获得相似的结果,请选择简单。
· 您可以节省更多时间来处理和训练数据,从而提高算法的准确性。根据特定项目的优先级做出决定。
始终听从您的数据试图讲述的故事,并遵循项目的目标。
(本文由闻数起舞翻译自Rubén Romero的文章《How to Choose the Right Machine Learning Algorithm for Your Application》,转载请注明出处,原文链接:https://towardsdatascience.com/how-to-choose-the-right-machine-learning-algorithm-for-your-application-1e36c32400b9)