未验证 提交 a038c880 编写于 作者: K Keqi Huang 提交者: GitHub

Update 1.机器学习概览.md

第一章节机器学习概览校对完成
上级 c329ab51
......@@ -4,15 +4,15 @@
机器学习的起点和终点分别是什么呢?确切的讲,机器进行学习是什么意思?如果我下载了一份维基百科的拷贝,我的电脑就真的学会了什么吗?它马上就变聪明了吗?在本章中,我们首先会澄清机器学习到底是什么,以及为什么你要使用它。
然后,在我们出发去探索机器学习新大陆之前,我们要观察下地图,以便知道这片大陆上的主要地区和最明显的地标:监督学习vs非监督学习,线上学习vs批量学习,基于实例vs基于模型学习。然后,我们会学习一个典型的机器学习项目的工作流,讨论可能碰到的难点,以及如何评估和微调一个机器学习系统。
然后,在我们出发去探索机器学习新大陆之前,我们要观察下地图,以便知道这片大陆上的主要地区和最明显的地标:监督学习vs非监督学习,线上学习vs批量学习,基于实例vs基于模型学习。然后,我们会学习一个典型的机器学习项目的工作流,讨论可能碰到的难点,以及如何评估和微调一个机器学习系统。
这一章介绍了大量每个数据科学家需要牢记在心的基础概念(和习语)。第一章只是概览(唯一不含有代码的一章),相当简单,但你要确保每一点都搞明白了,再继续进行学习本书其余章节。端起一杯咖啡,开始学习吧!
> 提示:如果你已经知道了机器学习的所有基础概念,可以直接翻到第2章。如果你不确,可以尝试回答本章末尾列出的问题,然后再继续。
> 提示:如果你已经知道了机器学习的所有基础概念,可以直接翻到第2章。如果你不确,可以尝试回答本章末尾列出的问题,然后再继续。
# 什么是机器学习?
机器学习是通过编程让计算机从数据进行学习的科学(和艺术)。
机器学习是通过编程让计算机从数据进行学习的科学(和艺术)。
下面是一个更广义的概念:
......@@ -49,7 +49,7 @@
图1-2 机器学习方法
进而,如果发送垃圾邮件的人发现所有包含“4U”的邮件都被屏蔽了,可能会转而使用“For U”。使用传统方法的垃圾邮件过滤器需要更新以标记“For U”。如果发送垃圾邮件的人持续更改,你就需要迟勋写入新规则。
进而,如果发送垃圾邮件的人发现所有包含“4U”的邮件都被屏蔽了,可能会转而使用“For U”。使用传统方法的垃圾邮件过滤器需要更新以标记“For U”。如果发送垃圾邮件的人持续更改,你就需要被动地不停地写入新规则。
相反的,基于机器学习的垃圾邮件过滤器会自动注意到“For U”在用户手动标记垃圾邮件中的反常频繁性,然后就能自动标记垃圾邮件而无需干预了(图1-3)。
......@@ -69,7 +69,7 @@
总结一下,机器学习善于:
* 需要进行大量手工调整或长串规则的问题:机器学习算法通常可以简化代码、提高性能。
*   需要进行大量手工调整或需要拥有长串规则才能解决的问题:机器学习算法通常可以简化代码、提高性能。
* 问题复杂,传统方法难以解决:最好的机器学习方法可以找到解决方案。
......@@ -96,7 +96,7 @@
### 监督学习
在监督学习中,用来训练算法训练数据包括了答案,称为标签(图1-5)。
在监督学习中,用来训练算法的训练数据包含了答案,称为标签(图1-5)。
![](https://upload-images.jianshu.io/upload_images/7178691-5a9421970178445c.png)
......@@ -121,7 +121,7 @@
* 逻辑回归
* 支持向量机(SVM)
* 决策树和随机森林
-神经网络
* 神经网络
## 非监督学习
......@@ -156,13 +156,13 @@
![](https://upload-images.jianshu.io/upload_images/7178691-867197e4d09127d8.png)
图1-9 t-SNE可视化案例,突出了聚类(注:注意动物是与汽车分开的,马与鹿很近、与鸟院,以此类推)
图1-9 t-SNE可视化案例,突出了聚类(注:注意动物是与汽车分开的,马和鹿很近、与鸟距离远,以此类推)
与此有关联的任务是降维,降维的目的是简化数据、但是不能失去大部分信息。做法之一是合并若干相关的特征。例如,汽车的里程数与车龄高度相关,降维算法就会将它们合并成一个,表示汽车的磨损。这叫做特征提取。
> 提示:在用训练集训练机器学习算法(比如监督学习算法)时,最好对训练集进行降维。这样可以运行的更快,占用的硬盘和内存空间更少,有些情况下性能也更好。
另一个重要的非监督任务是异常检测(anomaly detection) —— 例如,检测异常的信用卡转账以防欺诈,检测制造缺陷,或者在训练之前自动从训练数据集去除异常值。异常检测的系统使用正常值训练的,当它碰到一个新实例,它可以判断这个新实例是否像正常值或异常值(图1-10)。
另一个重要的非监督任务是异常检测(anomaly detection) —— 例如,检测异常的信用卡转账以防欺诈,检测制造缺陷,或者在训练之前自动从训练数据集去除异常值。异常检测的系统使用正常值训练的,当它碰到一个新实例,它可以判断这个新实例是像正常值还是异常值(图1-10)。
![](https://upload-images.jianshu.io/upload_images/7178691-c8cdd58fabadb8bf.png)
......@@ -180,7 +180,7 @@
图1-11 半监督学习
多数半监督学习算法非监督和监督算法的结合。例如,深度信念网络(deep belief networks)是基于被称为互相叠加的受限玻尔兹曼机(restricted Boltzmann machines,RBMs)的非监督组件。RBMs是先用非监督方法进行训练,再用监督学习方法进行整个系统微调。
多数半监督学习算法非监督和监督算法的结合。例如,深度信念网络(deep belief networks)是基于被称为互相叠加的受限玻尔兹曼机(restricted Boltzmann machines,RBMs)的非监督组件。RBMs是先用非监督方法进行训练,再用监督学习方法进行整个系统微调。
## 强化学习
......@@ -198,7 +198,7 @@
## 批量学习
在批量学习中,系统不能进行持续学习:必须用所有可用数据进行训练。这通常会占用大量时间和计算资源,所以一般是线下做的。首先是进行训练,然后部署在生产环境且不带学习,它只是应用学到的。这称为离线学习。
在批量学习中,系统不能进行持续学习:必须用所有可用数据进行训练。这通常会占用大量时间和计算资源,所以一般是线下做的。首先是进行训练,然后部署在生产环境且停止学习,它只是使用已经学到的策略。这称为离线学习。
如果你想让一个批量学习系统明白新数据(例如垃圾邮件的新类型),就需要从头训练一个系统的新版本,使用全部数据集(不仅有新数据也有老数据),然后停掉老系统,换上新系统。
......@@ -236,7 +236,7 @@
# 基于实例vs基于模型学习
另一种分类机器学习的方法是判断它们是如何进行归纳推广的。大多机器学习任务是关于预测的。这意味着给定一定数量的训练样本,系统需要能推广到之前没见到过的样本。对训练数据集有很好的性能还不够,真正的目标是对新实例的性能。
另一种分类机器学习的方法是判断它们是如何进行归纳推广的。大多机器学习任务是关于预测的。这意味着给定一定数量的训练样本,系统需要能推广到之前没见到过的样本。对训练数据集有很好的性能还不够,真正的目标是对新实例预测的性能。
有两种主要的归纳方法:基于实例学习和基于模型学习。
......@@ -300,7 +300,7 @@
案例1-1,使用Scikit-Learn训练并运行线性模型。
```
```python
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
......@@ -360,7 +360,7 @@ print(lin_reg_model.predict(X_new)) # outputs [[ 5.96242338]]
这就是一个典型的机器学习项目。在第2章中,你会第一手地接触一个完整的项目。
我们已经学习了许多关于基础的内容:你现在知道了机器学习是关于什么的,为什么它这么有用,最常见的机器学习的分类,典型的项目工作流。现在,让我们看一看会发生什么错误,导致不能做出准确的预测。
我们已经学习了许多关于基础的内容:你现在知道了机器学习是关于什么的,为什么它这么有用,最常见的机器学习的分类,典型的项目工作流程。现在,让我们看一看学习中会发生什么错误,导致不能做出准确的预测。
# 机器学习的主要挑战
......@@ -407,7 +407,7 @@ print(lin_reg_model.predict(X_new)) # outputs [[ 5.96242338]]
> * 首先,为了获取发信地址,《文学文摘》使用了电话黄页、杂志订阅用户、俱乐部会员等相似的列表。所有这些列表都偏向于富裕人群,他们都倾向于投票给共和党(即兰登)。
> * 第二,只有25%的回答了调研。这就又一次引入了样本偏差,它排除了不关心政治的人、不喜欢《文学文摘》的人,和其它关键人群。这种特殊的样本偏差称作无应答偏差。
>
> 下面是另一个例子:假如你想创建一个能识别疯克音乐视频的系统。建立训练集的方法之一是在YouTube上搜索“疯克音乐”,使用搜索到的视频。但是这样就假定了YouTube的搜索引擎返回的视频集,是对YouTube上的所有疯克音乐有代表性的。事实上,搜索结果会偏向于人们歌手(如果你居住在巴西,你会得到许多“疯克卡瑞欧卡”视频,它们和James Brown的截然不同)。另一方面,怎么还能得到一个大的训练集呢?
> 下面是另一个例子:假如你想创建一个能识别放克音乐(Funk Music, 别名骚乐)视频的系统。建立训练集的方法之一是在YouTube上搜索“放克音乐”,使用搜索到的视频。但是这样就假定了YouTube的搜索引擎返回的视频集,是对YouTube上的所有放克音乐有代表性的。事实上,搜索结果会偏向于人们歌手(如果你居住在巴西,你会得到许多“funk carioca”视频,它们和James Brown的截然不同)。从另一方面来讲,你怎么得到一个大的训练集呢?
## 低质量数据
......@@ -452,7 +452,7 @@ print(lin_reg_model.predict(X_new)) # outputs [[ 5.96242338]]
图1-23 正规化降低了过度拟合的风险
正规化的度可以用一个超参数(hyperparameter)控制。超参数是一个学习算法的参数(而不是模型的)。这样,它是不会被学习算法本身影响的,它的优于训练数据,在训练中是保持不变的。如果你设定的超参数非常大,就会得到一个几乎是平的模型(斜率接近于0);学习算法几乎肯定不会过拟合训练数据,但是也很难得到一个好的解。调节超参数是创建机器学习算法非常重要的一部分(下一章你会看到一个详细的例子)。
正规化的度可以用一个超参数(hyperparameter)控制。超参数是一个学习算法的参数(而不是模型的)。这样,它是不会被学习算法本身影响的,它优于训练,在训练中是保持不变的。如果你设定的超参数非常大,就会得到一个几乎是平的模型(斜率接近于0);这种学习算法几乎肯定不会过拟合训练数据,但是也很难得到一个好的解。调节超参数是创建机器学习算法非常重要的一部分(下一章你会看到一个详细的例子)。
## 欠拟合训练数据
......@@ -470,16 +470,16 @@ print(lin_reg_model.predict(X_new)) # outputs [[ 5.96242338]]
* 机器学习是让机器通过学习数据对某些任务做得更好,而不使用确定的代码规则。
* 有许多不同类型的机器学习系统:监督或非监督,批量或线上,基于实例或基于模型,等等。
* 在机器学习项目中,训练集来收集数据,然后对学习算法进行训练。如果算法是基于模型的,就调节一些参数,让模型拟合到训练集(即,对训练集本身作出好的预测),然后希望它对新样本也能有好预测。如果算法是基于实例的,就是用记忆学习样本,然后用相似度推广到新实例。
*   在机器学习项目中,我们从训练集中收集数据,然后对学习算法进行训练。如果算法是基于模型的,就调节一些参数,让模型拟合到训练集(即,对训练集本身作出好的预测),然后希望它对新样本也能有好预测。如果算法是基于实例的,就是用记忆学习样本,然后用相似度推广到新实例。
* 如果训练集太小、数据没有代表性、含有噪声、或掺有不相关的特征(垃圾进,垃圾出),系统的性能不会好。最后,模型不能太简单(会发生欠拟合)或太复杂(会发生过拟合)。
还差最后一个主题要学习:训练完了一个模型,你不只希望将它推广到新样本。你想评估它,作出必要的微调。一起来看一看。
还差最后一个主题要学习:训练完了一个模型,你不只希望将它推广到新样本。如果你想评估它,那么还需要作出必要的微调。一起来看一看。
# 测试和确认
要知道一个模型推广到新样本的效果,唯一的办法就是真正的进行试验。一种方法是将模型部署到生产环境,观察它的性能。这么做可以,但是如果模型的性能很差,就会引起用户抱怨 —— 这不是最好的方法。
更好的选项是将你的数据分成两个集合:训练集测试集。正如它们的名字,用训练集进行训练,用测试集进行测试。对新样本的错误率称作推广错误(或样本外错误),通过模型对测试集的评估,你可以预估这个错误。这个值可以告诉你,你的模型对新样本的性能。
更好的选项是将你的数据分成两个集合:训练集测试集。正如它们的名字,用训练集进行训练,用测试集进行测试。对新样本的错误率称作推广错误(或样本外错误),通过模型对测试集的评估,你可以预估这个错误。这个值可以告诉你,你的模型对新样本的性能。
如果训练错误率低(即,你的模型在训练集上错误不多),但是推广错误率高,意味着模型对训练数据过拟合。
......@@ -525,4 +525,4 @@ print(lin_reg_model.predict(X_new)) # outputs [[ 5.96242338]]
18. 如果用测试集调节超参数,会发生什么?
19. 什么是交叉验证,为什么它比验证集好?
练习答案见附录A。
\ No newline at end of file
练习答案见附录A。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册