Sklearn 与 TensorFlow 机器学习实用指南第二版----课后习题答案
仅自用,学习笔记
1.机器学习概览
1. 如何定义机器学习?
机器学习是关于构建可以从数据中学习的系统。学习意味着在某些任务上对于给定的指标(均方误差,召回率,准确度,等等 )变得好。
2. 机器学习可以解决的四类问题?
机器学习对于
1.没有算法解决方案的复杂问题
2. 替换长串手动调整的规则
3. 构建适应波动环境的系统
4.帮助人类学习(例如,数据挖掘)非常有用
3. 什么是带标签的训练集?
带标签的训练集是包含每个实例的所需解决方案(也称为标签)的训练集
4. 最常见的两个监督任务是什么?
两个最常见的监督任务是回归和分类
5. 指出四个常见的非监督任务?
常见的无监督任务包括聚类、可视化、降维和关联规则学习。
6. 要让一个机器人能在各种未知地形行走,你会采用什么机器学习算法?
如果我们想让机器人学会在各种未知的地形中行走,强化学习可能会表现得最好,因为这是强化学习解决的典型问题。有可能将问题表达为监督或半监督的学习问题,但这不太自然。
7. 要对你的顾客进行分组,你会采用哪类算法?
如果不知道如何定义组,那么可以使用聚类算法(无监督学习)将客户划分为相似客户的聚类。
但是,如果知道你想要什么组,那么你可以将每个组的许多例子输入到一个分类算法(监督学习)中,它会将你所有的客户分类到这些组中。
8. 垃圾邮件检测是监督学习问题,还是非监督学习问题?
垃圾邮件检测是一个典型的监督学习问题:算法会收到许多电子邮件及其标签(垃圾邮件或非垃圾邮件)。
9. 什么是在线学习系统?
与批量学习系统相反,在线学习系统可以增量学习。这使得它能够快速适应不断变化的数据和自治系统,并能够对大量数据进行训练
10. 什么是核外学习?
核外算法可以处理大量无法放入计算机主内存的数据。核外学习算法将数据切割成小批量,并使用在线学习技术从这些小批量中学习。
11. 什么学习算法是用相似度做预测?
基于实例的学习系统对训练数据进行记忆;然后,当给定一个新的实例时,它使用相似性度量来找到最相似的学习实例,并使用它们来进行预测。
12. 模型参数和学习算法的超参数的区别是什么?
一个模型有一个或多个模型参数,这些参数决定了给定一个新实例(例如,线性模型的斜率)它将预测什么。学习算法试图找到这些参数的最优值,从而使模型很好地推广到新的实例。
超参数是学习算法本身的参数,而不是模型的参数(例如,要应用的正则化量)。
13. 基于模型学习的算法搜寻的是什么?最成功的策略是什么?基于模型学习如何做预测?
基于模型的学习算法搜索模型参数的最优值,使得模型可以很好地推广到新的实例。我们通常通过最小化成本函数来训练这样的系统,该成本函数衡量系统在对训练数据进行预测方面有多差,如果模型被正则化,还会对模型复杂性进行惩罚。为了进行预测,我们使用学习算法找到的参数值将新实例的特征输入到模型的预测函数中。
14. 机器学习的四个主要挑战是什么?
机器学习中的一些主要挑战是
1.缺乏数据数据质量差,
2. 数据不具代表性、没有信息特征、
3. 过于简单的模型会对数据有较差的拟合效果
4.过于复杂的模型会过拟合数据
15. 如果模型在训练集上表现好,但推广到新实例表现差,问题是什么?给出三个可能的解决方案。
如果一个模型在训练数据上表现很好,但是在新的实例中表现不佳,那么这个模型很可能过度拟合训练数据(或者我们在训练数据上非常幸运)。
过拟合的可能解决方案是
1.获取更多的数据,
2. 简化模型(选择更简单的算法,减少使用的参数或特征的数量,正则化模型)
3. 减少训练数据中的噪声。
16. 什么是测试集,为什么要使用它?
在模型投入生产之前,测试集用于估计模型在新实例上产生的泛化误差。
17. 验证集的目的是什么?
验证集用于比较模型。它使得选择最佳模型和调整超参数成为可能。
18. 如果用测试集调节超参数,会发生什么?
如果使用测试集来调整超参数,则有过度拟合测试集的风险,并测量的泛化误差将是乐观的(可能会启动一个性能比预期的更差的模型)。
19. 什么是交叉验证,为什么它比验证集好?
它的基本思想就是将原始数据(dataset)进行分组,一部分做为训练集来训练模型,另一部分做为测试集来评价模型。
交叉验证用于评估模型的预测性能,尤其是训练好的模型在新数据上的表现,可以在一定程度上减小过拟合。
还可以从有限的数据中获取尽可能多的有效信息。