好书|第一章:The Machine Learning Landscape

2019-05-17 11:49:53 浏览数 (1)

关于机器学习,让我们一起来思考这些问题:

  • 机器学习从哪里开始,又从哪里结束?(有点哲学味道)
  • 一个机器学习到东西到底意味着什么?(就好比很多人会思考活着意味着什么)
  • 如果我赋值一份维基百科,我的电脑真的能够“学到了”一些东西吗?(有了数据,机器就能够学到东西吗?)
  • 机器是不是突然变的聪明了?(未来是人类聪明还是机器聪明呢?)

等等

第一章,作者专注于解决这些问题:

  • 机器学习是什么?为什么要用机器学习?
  • 学习类型:监督学习和无监督学习?在线学习和批量学习?基于实例的学习和基于模型的学习?
  • 机器学习项目工作流程?机器学习项目挑战?
  • 如何评估和微调机器学习系统?

关于这些问题,请您画10分钟时间认真思考下,并且把答案记下来。再继续后面的阅读。

【需要英文电子书籍和配套的EPUB阅读器的朋友,请把这篇文章分享到您的朋友圈,添加我的个人微信:luqin360,截图给我,我会发给您;若是需要一起参与读书和讨论,也请告诉我,我会邀请你入群。】

本章介绍了许多每个数据科学家都应该牢记的基本概念(和术语)。这将是一个高级概述(唯一没有太多代码的章节),所有内容都相当简单,但是在继续本书的其余部分之前,您应该确保所有内容都非常清晰。

机器学习是什么

Machine Learning is the science (and art) of programming computers so they can learn from data.

机器学习是能够让计算机从数据中学习的计算机编程科学和艺术。

一个宽泛的定义

[Machine Learning is the] field of study that gives computers the ability to learn without being explicitly programmed. ——Arthur Samuel, 1959

一个更以工程为导向的定义

A computer program is said to learn from experience E with respect to some task T and some performance measure P, if its performance on T, as measured by P, improves with experience E.——Tom Mitchell, 1997

举例说明: 垃圾邮件识别系统是一个典型的机器学习系统,请您思考这个系统的T是什么?E是什么?P是什么?机器学习系统的数据如何解决?训练集,验证集,测试集分别用来做什么以及如何划分?

请您举出一个不是机器学习的例子。 例如:如果你只是下载一份维基百科,你的电脑就会有更多的数据,但它不会突然变得更擅长任何任务。因此,它不是机器学习。

为什么用用机器学习?

因为现实中,很多问题不是人能够明确告诉计算机去学习的,而必须是计算机自己去学习的,这就需要机器学习。机器通过从数据或者经验中学习以达到性能越来越好的结果。

  • 现有解决方案需要大量手工调优或一长串规则的问题:一种机器学习算法通常可以简化代码并执行得更好。
  • 使用传统方法根本没有好的解决方案的复杂问题:最好的机器学习技术可以找到解决方案。
  • 变化环境:机器学习系统可以适应新的数据。
  • 从复杂问题和大数据集中获得洞见

机器学习方法

自适应变化

机器学习帮助人类学习

应用ML技术挖掘大量数据可以帮助发现那些没有立即显现的模式。这叫做数据挖掘。

机器学习系统的类型
  • 根据是否在人的指导或者监督下进行学习分为有监督学习,无监督学习,半监督学习和强化学习
  • 根据学习系统运行中是否做增量学习分为在线学习和批量学习
  • 根据工作机理是简单地将新数据点与已知数据点进行比较,还是发掘训练数据集中的模式以构建预测模型分为(基于实例的学习和基于模型的学习)

有监督学习的例子——分类任务

有监督学习的例子——回归任务

无监督学习的例子——聚类任务

无监督学习的例子——降维任务

无监督学习例子——奇异值检测任务

增强学习例子

机器学习的主要挑战

简而言之,由于您的主要任务是选择一个学习算法并在一些数据上训练它,因此可能出错的两件事是“不好的数据”和“不好的算法”。

先看下“不好的数据”

  • 训练数据不足够

大多数机器学习算法需要大量的数据才能正常工作。即使对于非常简单的问题,您通常也需要数千个示例,对于复杂的问题,例如图像或语音识别,您可能需要数百万个示例(除非您可以重用现有模型的某些部分)。

  • 训练数据不具有代表性

为了很好地泛化,重要的是您的训练数据集要能够代表您想要泛化的新的实例。无论您使用基于实例的学习还是基于模型的学习,这都是正确的。

  • 低质量的数据

显然,如果您的训练数据充满了错误、异常值和噪声(例如,由于测量质量很差),那么系统将更难检测底层模式,因此您的系统不太可能执行得很好。花时间清洗训练数据集通常是非常值得的。事实上,大多数数据科学家在这方面花费了大量的时间。

  • 无关的特征集

俗话说:垃圾进垃圾出。只有当训练数据包含足够的相关特性而不是太多不相关的特性时,您的系统才能够学习。机器学习项目成功的一个关键部分是提供一组良好的特征来进行训练。

  • 过度拟合训练数据集 假设你在国外旅游,出租车司机把你骗了。你可能会说那个国家所有的出租车司机都是小偷。过度概括是我们人类经常做的事情,不幸的是,如果我们不小心,机器也会落入同样的陷阱。

过拟合问题的有效解决方案: 1)通过选择参数较少的模型(如线性模型而不是高次多项式模型)、减少训练数据中的特征数量或约束模型来简化模型 2)收集更多的培训数据 3)减少训练数据中的噪声(例如,修正数据错误,去除异常值)

  • 欠拟合训练数据集

正如您可能猜到的,欠拟合与过度拟合是相反的:当您的模型过于简单,无法了解数据的底层结构时,就会发生欠拟合。

欠拟合问题的有效解决方案: 1)选择具有更多参数的更强大的模型 2)为学习算法提供更好的特征(特征工程) 3)减少模型上的约束(例如,减少正则化超参数)

总结
  • 机器学习是通过从数据中学习来让机器更好地完成某些任务,而不是必须显式地编写规则。
  • ML系统有许多不同的类型:受监督的的或不受监督的、批处理的或在线的、基于实例的或基于模型的,等等。
  • 在ML项目中,您在一个训练集中收集数据,然后将训练集提供给一个学习算法。如果算法是基于模型的,它会调整一些参数使模型适合于训练集(即,对训练集本身做出良好的预测),然后希望它也能对新的数据集做出良好的预测。如果该算法是基于实例的,那么它只需要记住这些例子,并通过使用相似性度量将它们与所学习的实例进行比较,将其推广到新的实例。
  • 如果您的训练集太小,或者数据不具有代表性、具有噪声,或者被不相关的特征(垃圾输入、垃圾输出)污染,那么系统就不能很好地执行。最后,您的模型既不需要太简单(在这种情况下它将欠拟合),也不需要太复杂(在这种情况下它将过拟合)。

0 人点赞