本文是机器学习实战:基于Scikit-Learn\Keras和TensorFlow
的读书笔记。
第一章 机器学习的基础知识:#
什么是机器学习:#
一门通过编程让计算机从数据中进行学习的科学。重点在于阅读大量数据、获得经验、进而增进解决问题的能力。
比如垃圾邮件过滤器是一个机器学习程序,可以根据垃圾邮件和普通邮件学习并标记垃圾邮件。其中用来进行学习的样例称为训练集,训练样例称为样本。
为什么使用机器学习:#
传统方法需要你精确地编写垃圾邮件地判别规则,这个规则可能又臭又长,难以维护,然而基于机器学习技术的垃圾邮件过滤器会自动学习特征词和特征短语。
引用一段原文:
如果垃圾邮件的发送者发现所有包含“4U”的邮件都被屏蔽了,他们会转而使用“ For U”。使用传统方法的垃圾邮件过滤器需要更新来标记“ For U”。如果垃圾邮件的发送者持续更改,你就需要一直不停地写入新规则。相反,基于机器学习的垃圾邮件过滤器会自动注意到“ For U”在用户手动标记的垃圾邮件中频繁出现,然后就能自动标记垃圾邮件而无须人工干预了。
另外,对于传统方法而言太复杂或者没有已知算法的问题,比如语音识别,机器学习更加简单易行,受波动影响小;机器学习还可以帮助人类进行学习,可以从大量的数据中挖掘出不太明显的规律。称为数据挖掘
示例:#
机器学习系统的类型:#
- 是否监督:有监督学习、无监督学习、半监督学习、强化学习;
- 有监督学习中将已经标记了答案的训练集称为标签,并提供给算法进行学习。
- 常见的有监督学习包括分类任务、回归任务(给定输入预测值)
- 无监督学习的的训练数据是未经标记的。
- 常见的应用有聚类分析、可视化算法、降维(不丢失太多信息的前提下简化数据)、异常检测、关联规则学习(挖掘大量数据,发现属性之间的有趣联系)
- 为了减轻标记的成本引出半监督学习;
- 比如照片托管服务可以根据简单的标记来对照片内容进行分类。
- 强化学习中的学习系统(智能体)能够观察环境,做出选择,执行动作,并获得回馈(依照回馈的类型及逆行策略改变)。
简单来说就是养蛊.- 许多机器人通过强化学习算法来学习如何行走。AlphaGo也是强化学习的重要例子。
- 有监督学习中将已经标记了答案的训练集称为标签,并提供给算法进行学习。
- 是否可以动态地进行增量学习(从传入的数据六种进行增量学习):在线学习、批量学习;
- 批量学习:必须使用所有可用数据进行训练,然后停止学习,开始工作。简而言之就是 先学习,后工作。特点是:解决方案简单,但需要耗费大量的计算资源。
- 在线学习:简而言之就是 学一点,做一点;循序渐进提供训练数据,积累学习成果。非常适合于需要接受持续的数据流(例如股票价格),同时要对数据流的变化做出快速或者自主的反应。
- 但在线学习容易受到不良数据的影响,比如传感器的故障。
匹配/分析:基于实例的学习/基于模型的学习:
比如上面提到的垃圾邮件过滤器就是一个在线的,基于模型的有监督学习系统。
- 基于实例的学习,简而言之就是 死记硬背,这样当机器遇到和训练集中地某个样本完全相同或者非常相似的测试样本时,机器可以很自信地将其标记。
- 基于模型的学习:从一组训练集中抽象出一个模型,在分析新的样本的时候使用模型进行预测并比对。抽象的模型可以使用广泛使用的模型进行拟合,比如线性模型/实指数模型等等。拟合程度需要使用损失函数来进行描述。建立好模型之后就可以对相同性质的样本进行预测等分析。
- 整个过程可以抽象为:分析数据-选择模型-调整参数-应用#
机器学习主要挑战:#
选择学习方法,根据数据对系统进行训练,因此最可能出啊先的两个问题不外乎是 坏算法和坏数据
对复杂问题而言,数据比算法更重要。不过中小型的数据依然非常普遍,获得额外的训练数据不是轻而易举的,因此算法依然重要。
此外,训练数据需要非常具有代表性。使用不具代表性的训练集训练出来的模型不可能做出准确的预估,尤其是针对那些未被代表的数据。 但提高样本的代表性说起来容易做起来难,如果样本集太小,将会出现噪声;样本集太大,就需要慎重考虑采样方式。
还有 低质量数据(完善数据内容)、 无关特征(筛选相关数据)等。
算法上:
过拟合:
虽然诸如深度神经网络这类的复杂模型可以检测到数据中的微小模式,但是如果训练集本身是有噪声的,或者数据集太小(引入了采样噪声),那么很可能会导致模型检测噪声本身的模式。很显然,这些模式不能泛化至新的实例。举例来说,假设你给生活满意度提供了更多其他的属性,包括一些不具信息的属性(例如国家名)。在这种情况下,一个复杂模型可能会检测到这样的事实模式:训练数据中,名字中带有字母 w 的国家,如新西兰(New Zealand,生活满意度为 7.3)、挪威( Norway,生活满意度为 7.4)、 瑞 典(Sweden,生活满意度为 7.2)和瑞士(Switzerland,生活满意度为 7.5),生活满意度均大于 7。当把这个 w 满意度规则泛化到卢旺达(Rwanda)或津巴布韦(Zim-babwe)时,你对结果有多大的自信?显然,训练数据中的这个模式仅仅是偶然产生的,但是模型无法判断这个模式是真实的还是噪声产生的结果。
- 一般的解决方式是:简化模型复杂度(正则化),收集更多的训练数据,并且减少训练数据中的噪声。
- 简化模型复杂度的方式有很多,比如减少参数,或者约束参数范围等等。
欠拟合:略
第二章 端到端的机器学习项目:#
本章介绍一个端到端的项目案例,假设你是一个数据科学家,以下是你将会经历的主要步骤:
- 观察大局
- 获得数据
- 从数据探索和可视化中获得洞见
- 机器学习算法的数据准备
- 选择并训练模型
- 微调模型
- 展示解决方案
- 启动、监控和维护系统
你要做的第一件事是建立加州的房价模型,