机器学习中的“算法”是什么?机器学习中的“算法”是在数据上运行以创建机器学习“模型”的过程。机器学习算法执行“模式识别”。算法从数据中“学习”,或“适应”数据集。有许多机器学习算法。比如我们有分类算法,比如K近邻算法;回归算法,例如线性回归;聚类算法,如K-means算法。以下是机器学习算法的示例:线性回归逻辑回归决策树人工神经网络K-最近邻K-均值您可以将机器学习算法视为计算机科学中的任何其他算法。例如,您可能熟悉的一些其他类型的算法包括用于排序数据的冒泡排序和用于搜索的最佳优先排序。因此,机器学习算法有很多特性:机器学习算法可以用数学和伪代码来描述。可以分析和描述机器学习算法的效率。机器学习算法可以用任何现代编程语言来实现。例如,您可能会在研究论文和教科书中看到以伪代码或线性代数描述的机器学习算法。您可以看到特定机器学习算法与另一种特征算法相比的计算效率。学术界可以设计让你全息的机器学习算法,而机器学习从业者可以在他们的项目中使用标准的机器学习算法。这就像计算机科学的其他领域一样,学术界可以设计全新的排序算法,而程序员可以在他们的应用程序中使用标准排序算法。您还可以看到多种机器学习算法在具有标准API的库中实现和提供。一个流行的例子是scikit-learn库,它在Python中提供了许多分类、回归和聚类机器学习算法的实现。机器学习中的“模型”是什么?机器学习中的“模型”是在数据上运行的机器学习算法的输出。模型代表机器学习算法学到了什么。模型是在训练数据上运行机器学习算法后保存的“东西”,它表示进行预测所需的规则、数字和任何其他算法特定的数据结构。让我举一些例子来说明这一点:线性回归算法的结果是一个由具有特定值的稀疏向量组成的模型。决策树算法的结果是一个模型,该模型由具有特定值的if-then语句树组成。神经网络/反向传播/梯度下降算法共同产生一个由具有特定值的向量或权重矩阵和特定值的图结构组成的模型。机器学习模型对初学者来说更具挑战性,因为与计算机科学中的其他算法没有明确的类比。例如,排序算法的排序列表输出并不是真正的模型。最好的类比是将机器学习模型视为“程序”。机器学习模型“程序”由数据和使用数据进行预测的过程组成。例如,考虑线性回归算法和生成的模型。该模型由系数(数据)向量组成,这些向量与作为输入的新数据行相乘和相加,以进行预测(预测过程)。我们将数据保存为机器学习模型以备后用。我们经常使用机器学习库提供的机器学习模型的预测过程。有时,我们可以将预测过程作为我们应用程序的一部分自己实施。考虑到大多数预测过程非常简单,这通常很简单。算法和模型框架现在我们已经熟悉了机器学习的“算法”和机器学习的“模型”。具体来说,算法在数据上运行以创建模型。机器学习=>机器学习模型我们还了解到,模型由数据以及如何使用它对新数据进行预测的过程组成。如果愿意,您也可以将此过程视为一种预测算法。机器学习模型==模型数据+预测算法的区别对于理解广泛的算法非常有帮助。例如,大多数算法的所有工作都在“算法”中,而“预测算法”的工作很少。通常,算法是某种优化程序,可最大限度地减少模型(数据+预测算法)在训练数据集上的误差。一个很好的例子是线性回归算法。它执行优化程序(或用线性代数解析求解)以找到一组权重,使训练数据集上的误差平方和最小。线性回归算法:在训练数据集上找到误差最小的一组系数。模型:模型数据:整个训练数据集。预测算法:找到K个最相似的行并取其目标变量的平均值。有些算法很琐碎甚至什么都不做,所有的工作都在模型或预测算法中。K最近邻算法除了保存整个训练数据集外什么都不做。所以唤醒数据是整个训练数据集,所有工作都在预测算法中,即新数据行如何与保存的训练数据集交互以进行预测。K近邻算法:保存训练数据。模型:模型数据:整个训练数据集。预测过程:找到K个最相似的行并取其目标变量的均值。您可以使用此分解作为框架来理解任何机器学习算法。机器学习是自动编程我们真的只是想要一个机器学习的“模型”,而“算法”就是我们得到模型的路径。机器学习技术用于解决其他方法无法有效或高效解决的问题。例如,如果我们需要将电子邮件分类为垃圾邮件或非垃圾邮件,我们需要一个软件程序来执行此操作。我们可以坐下来,手动查看大量电子邮件,并编写if语句来完成符合条件的任务。人们已经尝试过这种方法。事实证明,这种方法缓慢、脆弱,而且效果不佳。相反,我们可以使用机器学习技术来解决这个问题。具体来说,像朴素贝叶斯这样的算法可以从历史电子邮件样本的大型数据集中学习如何将电子邮件分类为垃圾邮件和非垃圾邮件。我们不需要“朴素贝叶斯”,我们想要朴素贝叶斯给出的模型,我们可以用来对电子邮件进行分类的模型(概率向量和使用概率的预测算法)。我们需要模型,而不是用于创建它们的算法。从这个意义上说,机器学习模型是一种由机器学习算法自动编写、创建或学习的程序,用于解决我们的问题。作为开发者,我们对AI意义上的机器学习算法的“学习”兴趣不大。我们不关心模拟学习过程。有趣的是有些人可能会关心,但这不是我们使用机器学习算法的原因。相反,我们更感兴趣的是机器学习算法提供的自动编程能力。我们希望能够高效地创建一个工作模型并将其合并到我们的软件项目中。机器学习算法执行自动化编程,而机器学习模型是为我们创建的程序。
