机器学习实战:第一章

根据方教授的建议和要求,在暑假里简单自学《机器学习实战》,记录学习过程和代码。

第一章是对机器学习的一些概念介绍,定义了若干专业术语。列举了很多机器学习的各类实例。给出了一个“金钱能使人更快乐吗”的具体模型,使用scikit-learn训练,暂时理解起来有困难,继续学习后回头尝试理解。

课后习题:(参考答案红色标注)

**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.什么是train-dev集,什么时候需要它,怎么使用?

当模型在验证集的表现不佳,而我们不知道是因为模型过拟合训练集还是因为数据不匹配导致的时,需要使用train-dev集,将一些训练内容放在train-dev集中,在训练集训练后,用train-dev集对其进行评估,如果表现良好,则说明模型没有过拟合,而后如果验证集表现不佳则说明是数据不匹配。

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

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

对测试集的泛化误差进行了多次度量,导致得出的最佳模型对新数据表现往往不理想。

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

小结:

·机器学习是关于如何让机器可以更好地处理某些特定任务的理论,它从数据中学习,而无须清晰地编码规则。

·机器学习系统有很多类型:有监督和无监督,批量的和在线的, 基于实例的和基于模型的,等等。

·在一个机器学习项目中,你从训练集中采集数据,然后将数据交 给学习算法来计算。如果算法是基于模型的,它会调整一些参数来将模 型适配于训练集(即对训练集本身做出很好的预测),然后算法就可以 对新的场景做出合理的预测。如果算法是基于实例的,它会记住这些示 例,并根据相似度度量将它们与所学的实例进行比较,从而泛化这些新 实例。

·如果训练集的数据太少或数据代表性不够,包含太多噪声或者被 一些无关特征污染(垃圾进,垃圾出),那么系统将无法很好地工作。 最后,你的模型既不能太简单(会导致欠拟合),也不能太复杂(会导 致过拟合)。

·测试和验证:引入测试集,验证集,开发集与train-dev集。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值