Fork me on GitHub

机器学习19问

机器学习十九问

本文整理来自书籍《Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow》,主要是介绍一些机器学习中常见的概念,仅供学术分享~

如何定义机器学习?

机器学习是关于构建可以从数据中学习的系统。学习意味着在一定的性能指标下,在某些任务上会变得越来越好。

机器学习在哪些问题上表现突出,你能给出四种类型吗?

机器学习非常适合没有算法解答的复杂问题,它可以替代一系列需要手动调整的规则,来构建适应不断变化的环境的系统并最终帮助人类(例如,数据挖掘)

什么是被标记的训练数据集?

带标签的训练集是一个包含每个实例所需解决方案(也称为标签)的训练集

最常见的两种监督学习任务是什么?

两个最常见的有监督任务是回归和分类。

你能举出四种常见的无监督学习任务吗?

常见的无监督任务包括

  1. 聚类
  2. 可视化
  3. 降维
  4. 关联规则学习

要让一个机器人在各种未知的地形中行走,你会使用什么类型的机器学习算法?

如果我们想要机器人在各种未知的地形中学习行走,则强化学习可能会表现最好,因为这通常是强化学习要解决的典型问题。

也可以将强化学习问题表示为有监督学习或半监督学习问题,但这种情况不是很自然的想法

要将顾客分成多个组,你会使用什么类型的算法?

如果你不知道如何定义组,则可以使用聚类算法(无监督学习)将客户划分为相似客户集群。

但是,如果你知道你想要拥有哪些组,那么可以将每个组的许多实例提供给分类算法(有监督学习),并将所有客户分类到这些组中。

你会将垃圾邮件检测的问题列为监督学习还是无监督学习?

垃圾邮件检测是一个典型的有监督学习问题:向该算法提供许多电子邮件及其标签(垃圾邮件或非垃圾邮件)。

什么是在线学习系统?

与批量学习系统相反,在线学习系统能够进行增量学习。这使得它能够快速适应不断变化的数据和自动系统,并能够处理大量数据。

什么是核外学习?

核外算法可以处理无法容纳在计算机主内存中的大量数据。核外学习算法将数据分成小批量,并使用在线学习技术从这些小批量数据中学习。

什么类型的学习算法依赖相似度来做出预测?

基于实例的学习系统努力通过死记硬背来学习训练数据。然后,当给定一个新的实例时,它将使用相似性度量来查找最相似的实例,并利用它们来进行预测。

模型参数与学习算法的超参数之间有什么区别?

一个模型具有一个或多个模型参数,这些参数确定在给定一个新实例的情况下该模型将预测什么(例如,线性模型的斜率)。

一种学习算法试图找到这些参数的最优值,以使该模型能很好地泛化到新实例。超参数是学习算法本身的参数,而不是模型的参数(例如,要应用正则化的数量)

基于模型的学习算法搜索的是什么?它们最常使用的策略是什么?它们如何做出预测?

是什么:基于模型的学习算法搜索模型参数的最优值,以便模型可以很好地泛化到新实例。

策略:我们通常通过最小化成本函数来训练这样的系统,该函数测量系统对训练数据进行预测时有多不准确,如果对模型进行了正则化则对模型复杂性要加上惩罚。

如何预测:为了进行预测,我们使用学习算法找到的模型参数值,再将新实例的特征输入到模型的预测函数中。

你能给出机器学习中的四个主要挑战吗?

机器学习中的一些主要挑战是数据的缺乏、数据质量差、数据的代表性不足、信息量不足、模型过于简单而欠拟合训练数据以及模型过于复杂而过拟合数据

如果模型在训练数据上表现很好,但是应用到新实例上的泛化结果却很糟糕,是怎么回事?能给出三种可能的解决方案吗?

如果模型在训练数据上表现出色,但在新实例上的泛化效果很差,则该模型可能会过拟合训练数据(或者我们在训练数据上非常幸运):过拟合

过拟合的可能解决方法是:

  • 获取更多数据
  • 简化模型(选择更简单的算法,减少使用的参数或特征的数量,或对模型进行正则化)
  • 减少训练数据中的噪声

什么是测试集,为什么要使用测试集?

测试数据集是用于在启动生产环境之前,估计模型在新实例上产生的泛化误差。

验证集的目的是什么?

验证集是用于比较模型,这样就可以选择最佳模型并调整超参数。

什么是train-dev集,什么时候需要它,怎么使用?

当训练数据集与验证数据集和测试数据集中使用的数据之间不匹配时,可以使用train-dev集(该数据集应始终与模型投入生产环境后使用的数据尽可能接近)。

train-dev集是训练集的一部分(模型未在其上训练过)。该模型在训练集的其他部分上进行训练,并在train-dev集和验证集上进行评估。

  • 如果模型在训练集上表现良好,但在train-dev集上表现不佳,则该模型可能过拟合训练集。
  • 如果它在训练集和train-dev集上均表现良好,但在验证集上却表现不佳,那么训练数据与验证数据和测试数据之间可能存在明显的数据不匹配,你应该尝试改善训练数据,使其看起来更像验证数据和测试数据。

如果你用测试集来调超参数会出现什么错误?

如果使用测试集来调整超参数,则可能会过拟合测试集,而且所测得的泛化误差会过于乐观(你可能会得到一个性能比预期差的模型)

本文标题:机器学习19问

发布时间:2022年07月15日 - 22:07

原始链接:http://www.renpeter.cn/2022/07/15/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A019%E9%97%AE.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Coffee or Tea