Skip to content

Latest commit

 

History

History
93 lines (47 loc) · 7.52 KB

ch1.md

File metadata and controls

93 lines (47 loc) · 7.52 KB

1. 如何定义机器学习?

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

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

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

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

带标签的训练集时一个包含每个实例所需解决方案的训练集

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

两个最常见的有监督任务是回归(基于预测器特征来预测一个目标数值)和分类

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

常见的无监督任务包括:聚类、可视化、将为和关联规则学习(其目的是挖掘大量数据,发现属性之间的有趣联系)

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

强化学习可能会表现最好

强化学习, 它的学习系统能够观察环境,做出选择,执行动作,并获得回报。所以它必须自行学习什么是最好的策略,从而随着时间的推移获得最大的回报。策略代表智能体在特定情况下应该选择的动作。

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

如果你不知道如何定义组,则可以使用聚类算法(无监督学习)将客户划分为相似客户集群。但是,如果你知道你想要拥有哪些组,那么可以将每个组的许多实例提供给分类算法(有监督学习),并将所有客户分类到这些组中。

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

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

9. 什么是在线学习系统?

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

10. 什么是核外学习?

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

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

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

需要先确定怎么衡量模型的性能表现。要么定义一个效用函数(或适应度函数)来衡量模型有多好,要么定义一个成本函数来衡量模型有多差。对于线性回归问题,通常的选择是使用成本函数来衡量线性模型的预测与训练实例之间的差距,目的在于尽量使这个差距最小化。

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

一个模型具有一个或多个模型参数,这些参数确定在给定一个新实例的情况下该模型将预测什么(例如,线性模型的斜率)。一种学习算法试图找到这些参数的最优值,以使该模型能很好地泛化到新实例。超参数是学习算法本身的参数,而不是模型的参数(例如,要应用正则化的数量)。

超参数(Hyperparameters)是在机器学习算法中用于控制模型训练过程的参数,而不是由算法自身学习得出的参数。与模型的权重或系数不同,超参数通常在模型训练之前被手动设置,并且在整个训练过程中保持不变。

超参数的选择通常依赖于经验、领域知识、实验结果和调优方法。常见的超参数包括学习率、正则化参数、树的深度、支持向量机的惩罚参数、聚类算法的簇数等。选择合适的超参数对于模型的性能和泛化能力至关重要,因此通常需要进行超参数调优(Hyperparameter Tuning)来找到最佳的超参数组合。

超参数调优可以通过网格搜索、随机搜索、贝叶斯优化等方法来实现。调优的目标通常是使模型在验证集或交叉验证中达到最佳性能,从而提高模型的泛化能力。

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

基于模型的学习算法搜索模型参数的最优值,以便模型可以很好地泛化到新实例。我们通常通过最小化成本函数来训练这样的系统,该函数测量系统对训练数据进行预测时有多不准确,如果对模型进行了正则化则对模型复杂性要加上惩罚。为了进行预测,我们使用学习算法找到的模型参数值,再将新实例的特征输入到模型的预测函数中。

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

数据的缺乏、数据质量差、数据的代表性不足、信息量不足、模型过于简单而欠拟合训练数据以及模型过于复杂而过拟合数据

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

如果模型在训练数据上表现出色,但在新实例上的泛化效果很差,则该模型可能会过拟合训练数据(或者我们在训练数据上非常幸运)。过拟合的可能解决方法是获取更多数据、简化模型(选择更简单的算法,减少使用的参数或特征的数量,或对模型进行正则化)或减少训练数据中的噪声。

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

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

应对新场景的误差率称为泛化误差(或者样例外误差)

17. 验证集的目的是什么?

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

你可以在简化的训练集上(即完整训练集减去验证集)训练具有各种超参数的多个模型,并且选择在验证集上表现最佳的模型。在此保持验证之后,你在完整的训练集(包括验证集)上训练最佳模型,这就是你的最终模型。最后,你在测试集上评估这个模型以获得泛化误差的估计值。

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

当训练数据集与验证数据集和测试数据集中使用的数据之间不匹配时,可以使用train-dev集(该数据集应始终与模型投入生产环境后使用的数据尽可能接近)。train-dev集是训练集的一部分(模型未在其上训练过)。 该模型在训练集的其他部分上进行训练,并在train-dev集和验证集上进行评估。如果模型在训练集上表现良好,但在train-dev集上表现不佳,则该模型可能过拟合训练集。 如果它在训练集和train-dev集上均表现良好,但在验证集上却表现不佳,那么训练数据与验证数据和测试数据之间可能存在明显的数据不匹配,你应该尝试改善训练数据,使其看起来更像验证数据和测试数据。

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

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