读书笔记-《机器学习实战:基于Scikit-Learn、Keras和TensorFlow》 第2版(第一章)

第一部分 机器学习的基础知识

第1章  机器学习概览

在本章中,我们了解到了机器学习中重要的一些概念,现在回答下列问题:

1、如何定义机器学习?

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

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

(1)机器学习非常适合没有算法解答的复杂问题,他可以替代一系列需要手动调整的规则,来构建适应不断变化的环境的系统并最终帮助人类。(2机器学习表现突出的问题:数据挖掘、聚类问题、分类问题(检测信用卡欺诈)、回归问题(预测公司下一年的收入)、文本分类(论坛中自动标记恶评)、图像分类。

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

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

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

两种最常见的有监督学习任务是:回归和分类。

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

常见的无监督任务包括聚类、可视化、降维和关联规则学习。

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

强化学习可能表现最好,因为这通常是强化学习要解决的典型问题。它的学习系统(在其语境中称为智能体)能够观察环境,做出选择,执行动作,并获得回报(或者是以负面的形式获得惩罚)。所以它必须自行学习什么是最好的策略,从而随着时间的推移获得最大的回报。策略代表智能体在特定情况下应该选择的动作。

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

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

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

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

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

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

10、什么是核外学习?

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

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

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

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

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

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

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

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

机器学习中的一些主要挑战为:1)数据的缺乏,训练数据的数量不足;2)数据质量差;3)数据的代表性不足,训练数据不具代表性;4)信息量不足,训练数据里包含较多的无关特征(进行特征工程提取足够多的相关特征);5)模型过于简单二欠拟合训练数据以及模型过于复杂而过拟合数据。

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

(1)模型在训练数据上表现良好,但应用到新实例上的泛化结果却很差,则该模型很可能是过拟合训练数据。(2)过拟合的可能的解决方法是:1)收集更多的训练数据;2)简化模型,可以选择较少参数的模型(例如选择线性模型而不是高阶多项式模型)也可以减少训练数据中的属性数量,或者是约束模型;3)减少训练数据中的噪声(例如,修复错误数据和消除异常值)。

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

(1)测试数据集是用于在启动生产环境之前,估计模型在新实例上产生的泛化误差;(2)通过测试集来评估模型,就可以的得到对这个误差的了解,这个估值可以告诉我们模型在处理新场景时的能力如何,来做到“心中有数”。

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

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

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

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

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

如果使用测试集来调整超参数,则可能会过拟合测试集。而且所测得的泛化误差会过去乐观。

你可能感兴趣的:(读书笔记,机器学习,数据挖掘)