Skip to content

Latest commit

 

History

History
178 lines (102 loc) · 8.95 KB

difference-between-algorithm-and-model-in-machine-learning.md

File metadata and controls

178 lines (102 loc) · 8.95 KB

机器学习中算法和模型的区别

原文:https://machinelearningmastery.com/difference-between-algorithm-and-model-in-machine-learning/

最后更新于 2020 年 8 月 19 日

机器学习包括使用机器学习算法模型

对于初学者来说,这非常令人困惑,因为“机器学习算法”经常与“机器学习模型互换使用。”它们是一样的还是不同的?

作为开发人员,你对排序算法和搜索算法等“算法”的直觉将有助于清除这种困惑。

在这篇文章中,你会发现机器学习“算法”和“模型的区别。”

看完这篇文章,你会知道:

  • 机器学习算法是用代码实现并在数据上运行的过程。
  • 机器学习模型由算法输出,由模型数据和预测算法组成。
  • 机器学习算法提供了一种自动编程,其中机器学习模型代表程序。

用我的新书掌握机器学习算法启动你的项目,包括分步教程和所有示例的 Excel 电子表格文件。

我们开始吧。

Difference Between Algorithm and Model in Machine Learning

机器学习中算法和模型的区别 图片由亚当·博兹提供,保留部分权利。

概观

本教程分为四个部分;它们是:

  1. 什么是机器学习中的算法
  2. 机器学习中的模型是什么
  3. 算法与模型框架
  4. 机器学习是自动编程

机器学习中的“T0”算法是什么

机器学习中的“算法”是在数据上运行以创建机器学习“模型”的过程

机器学习算法执行“模式识别”算法“从数据中学习,或者是“在数据集上拟合”。

机器学习算法有很多。

比如我们有分类的算法,比如 k 近邻。我们有回归的算法,比如线性回归,还有聚类的算法,比如 k-means。

机器学习算法的例子:

  • 线性回归
  • 逻辑回归
  • 决策图表
  • 人工神经网络
  • k-最近邻
  • k 均值

你可以像计算机科学中的任何其他算法一样想到机器学习算法。

例如,您可能熟悉的一些其他类型的算法包括用于排序数据的冒泡排序和用于搜索的最佳优先排序。

因此,机器学习算法具有许多特性:

  • 机器学习算法可以用数学和伪代码来描述。
  • 可以分析和描述机器学习算法的效率。
  • 机器学习算法可以用一系列现代编程语言中的任何一种来实现。

比如,你可能会在研究论文和教科书中看到用伪代码或线性代数描述的机器学习算法。您可能会看到特定机器学习算法与另一种特定算法相比的计算效率。

学者可以设计全新的机器学习算法,机器学习从业者可以在他们的项目中使用标准的机器学习算法。这就像计算机科学的其他领域一样,学术界可以设计全新的排序算法,程序员可以在他们的应用程序中使用标准的排序算法。

您还可能会看到多个机器学习算法一起实现,并在具有标准应用程序编程接口(API)的库中提供。一个流行的例子是 Sklearn 库,它提供了 Python 中许多分类、回归和聚类机器学习算法的实现。

什么是机器学习中的“模型”

机器学习中的“模型”是机器学习算法在数据上运行的输出。

模型表示通过机器学习算法学习的内容。

该模型是在对训练数据运行机器学习算法后保存的“东西”,代表进行预测所需的规则、数字和任何其他算法特定的数据结构。

一些例子可能会使这一点更清楚:

  • 线性回归算法产生一个由具有特定值的系数向量组成的模型。
  • 决策树算法产生了一个由具有特定值的 if-then 语句树组成的模型。
  • 神经网络/反向传播/梯度下降算法一起产生一个模型,该模型由具有特定值的权重向量或矩阵的图结构组成。

对于初学者来说,机器学习模型更具挑战性,因为它与计算机科学中的其他算法没有明确的类比。

例如,排序算法的排序列表输出实际上不是一个模型。

最好的类比是把机器学习模型想象成一个“程序

机器学习模型“程序”由数据和使用数据进行预测的过程组成。

例如,考虑线性回归算法和结果模型。该模型由一个系数(数据)向量组成,该向量与一行新数据相乘并相加作为输入,以进行预测(预测过程)。

我们为机器学习模型保存数据以备后用。

我们经常使用机器学习库提供的机器学习模型的预测过程。有时我们可能自己实现预测过程,作为我们应用程序的一部分。考虑到大多数预测程序非常简单,这通常很容易做到。

算法与模型框架

所以现在我们熟悉了一个机器学习“算法”vs 一个机器学习“模型

具体来说,对数据运行算法来创建模型。

  • 机器学习= >机器学习模型

我们还理解,模型由数据和如何使用数据对新数据进行预测的过程组成。如果你愿意,你可以把这个过程想象成一个预测算法。

  • 机器学习模型==模型数据+预测算法

这种划分对于理解广泛的算法非常有帮助。

例如,大多数算法的全部工作都在“算法”中,而“预测算法做的很少。

典型地,该算法是某种优化过程,其最小化模型(数据+预测算法)在训练数据集上的误差。线性回归算法就是一个很好的例子。它执行优化过程(或使用线性代数进行解析求解),以找到一组权重,从而最小化训练数据集上的平方和误差。

线性回归:

  • 算法:在训练数据集上找到一组最小化误差的系数
  • 型号:
    • 模型数据:系数向量
    • 预测算法:输入行系数的倍数和和

有些算法很琐碎甚至什么都不做,所有的工作都在模型或预测算法中。

k 近邻算法除了保存整个训练数据集外,没有算法。因此,模型数据是整个训练数据集,所有工作都在预测算法中,即新的数据行如何与保存的训练数据集交互以进行预测。

k-最近邻

  • 算法:保存训练数据。
  • 型号:
    • 模型数据:整个训练数据集。
    • 预测算法:找出 k 个最相似的行,取其目标变量的平均值。

你可以用这个分解作为一个框架来理解任何机器学习算法。

你最喜欢的算法是什么? 能不能在下面的评论里用这个框架来描述一下?

你知道一个不适合这个细分的算法吗?

机器学习是自动编程

我们真的只是想要一个机器学习的模型,而算法正是我们获得模型所遵循的路径。

机器学习技术用于不能用其他方式有效解决的问题。

例如,如果我们需要将电子邮件分类为垃圾邮件或非垃圾邮件,我们需要一个软件程序来做到这一点。

我们可以坐下来,手动查看大量电子邮件,并编写 if 语句来执行这项任务。人们已经试过了。事实证明,这种方法缓慢、脆弱,而且不是很有效。

相反,我们可以使用机器学习技术来解决这个问题。具体来说,像朴素贝叶斯这样的算法可以从大量的电子邮件历史示例数据集中学习如何将电子邮件分类为垃圾邮件而不是垃圾邮件。

我们不想要“朴素贝叶斯”我们希望朴素贝叶斯给出的模型是我们可以用来分类电子邮件(概率向量和使用它们的预测算法)。我们想要的是模型,而不是用来创建模型的算法。

从这个意义上说,机器学习模型是由机器学习算法自动编写或创建或学习的程序,用于解决我们的问题。

作为开发人员,我们对人工智能意义上的机器学习算法执行的“学习”不太感兴趣。我们不在乎模拟学习过程。有些人可能是,这很有趣,但这不是我们使用机器学习算法的原因。

相反,我们对机器学习算法提供的自动编程能力更感兴趣。我们想要一个有效的模型,它可以被有效地创建,我们可以将它整合到我们的软件项目中。

机器学习算法执行自动编程,机器学习模型是为我们创建的程序。

摘要

在这篇文章中,你发现了机器学习“算法”和“模型的区别。”

具体来说,您了解到:

  • 机器学习算法是用代码实现并在数据上运行的过程。
  • 机器学习模型由算法输出,由模型数据和预测算法组成。
  • 机器学习算法提供了一种自动编程,其中机器学习模型代表程序。

你有什么问题吗? 在下面的评论中提问,我会尽力回答。