1.3 监督学习

参考视频: 1 - 3 - Supervised Learning (12 min).mkv

在这段视频中,我要定义可能是最常见一种机器学习问题:那就是监督学习。我将在后 面正式定义监督学习。

我们用一个例子介绍什么是监督学习把正式的定义放在后面介绍。假如说你想预测房价。 前阵子,一个学生从波特兰俄勒冈州的研究所收集了一些房价的数据。你把这些数据画

出来,看起来是这个样子:横轴表示房子的面积,单位是平方英尺,纵轴表示房价,单位是 千美元。那基于这组数据,假如你有一个朋友,他有一套 750 平方英尺房子,现在他希望把 房子卖掉,他想知道这房子能卖多少钱。

那么关于这个问题,机器学习算法将会怎么帮助你呢?

我们应用学习算法,可以在这组数据中画一条直线,或者换句话说,拟合一条直线,根 据这条线我们可以推测出,这套房子可能卖$150, 000,当然这不是唯一的算法。可能还有更 好的,比如我们不用直线拟合这些数据,用二次方程去拟合可能效果会更好。根据二次方程

的曲线,我们可以从这个点推测出,这套房子能卖接近$200, 000。稍后我们将讨论如何选择 学习算法,如何决定用直线还是二次方程来拟合。两个方案中有一个能让你朋友的房子出售 得更合理。这些都是学习算法里面很好的例子。以上就是监督学习的例子。

可以看出,监督学习指的就是我们给学习算法一个数据集。这个数据集由“正确答案” 组成。在房价的例子中,我们给了一系列房子的数据,我们给定数据集中每个样本的正确价 格,即它们实际的售价然后运用学习算法,算出更多的正确答案。比如你朋友那个新房子的 价格。用术语来讲,这叫做回归问题。我们试着推测出一个连续值的结果,即房子的价格。 一般房子的价格会记到美分,所以房价实际上是一系列离散的值,但是我们通常又把房价看 成实数,看成是标量,所以又把它看成一个连续的数值。

回归这个词的意思是,我们在试着推测出这一系列连续值属性。 我再举另外一个监督学习的例子。我和一些朋友之前研究过这个。假设说你想通过查看

病历来推测乳腺癌良性与否,假如有人检测出乳腺肿瘤,恶性肿瘤有害并且十分危险,而良 性的肿瘤危害就没那么大,所以人们显然会很在意这个问题。

让我们来看一组数据:这个数据集中,横轴表示肿瘤的大小,纵轴上,我标出 1 和 0 表

示是或者不是恶性肿瘤。我们之前见过的肿瘤,如果是恶性则记为 1 ,不是恶性,或者说 良性记为 0。

我有 5 个良性肿瘤样本,在 1 的位置有 5 个恶性肿瘤样本。现在我们有一个朋友很不幸 检查出乳腺肿瘤。假设说她的肿瘤大概这么大,那么机器学习的问题就在于,你能否估算出 肿瘤是恶性的或是良性的概率。用术语来讲,这是一个分类问题。

分类指的是,我们试着推测出离散的输出值:0 或 1 良性或恶性,而事实上在分类问题 中,输出可能不止两个值。比如说可能有三种乳腺癌,所以你希望预测离散输出 0、1、2、 3。0 代表良性,1 表示第一类乳腺癌,2 表示第二类癌症,3 表示第三类,但这也是分类问 题。

因为这几个离散的输出分别对应良性,第一类第二类或者第三类癌症,在分类问题中我

们可以用另一种方式绘制这些数据点。 现在我用不同的符号来表示这些数据。既然我们把肿瘤的尺寸看做区分恶性或良性的特

征,那么我可以这么画,我用不同的符号来表示良性和恶性肿瘤。或者说是负样本和正样本 现在我们不全部画 X,良性的肿瘤改成用 O 表示,恶性的继续用 X 表示。来预测肿瘤的恶性 与否。

在其它一些机器学习问题中,可能会遇到不止一种特征。举个例子,我们不仅知道肿瘤 的尺寸,还知道对应患者的年龄。在其他机器学习问题中,我们通常有更多的特征,我朋友 研究这个问题时,通常采用这些特征,比如肿块密度,肿瘤细胞尺寸的一致性和形状的一致 性等等,还有一些其他的特征。这就是我们即将学到最有趣的学习算法之一。

那种算法不仅能处理 2 种 3 种或 5 种特征,即使有无限多种特征都可以处理。

上图中,我列举了总共 5 种不同的特征,坐标轴上的两种和右边的 3 种,但是在一些学

习问题中,你希望不只用 3 种或 5 种特征。相反,你想用无限多种特征,好让你的算法可以 利用大量的特征,或者说线索来做推测。那你怎么处理无限多个特征,甚至怎么存储这些特 征都存在问题,你电脑的内存肯定不够用。我们以后会讲一个算法,叫支持向量机,里面

有一个巧妙的数学技巧,能让计算机处理无限多个特征。想象一下,我没有写下这两种和 右边的三种特征,而是在一个无限长的列表里面,一直写一直写不停的写,写下无限多个特 征,事实上,我们能用算法来处理它们。

现在来回顾一下,这节课我们介绍了监督学习。其基本思想是,我们数据集中的每个样 本都有相应的“正确答案”。再根据这些样本作出预测,就像房子和肿瘤的例子中做的那样。 我们还介绍了回归问题,即通过回归来推出一个连续的输出,之后我们介绍了分类问题,其 目标是推出一组离散的结果。

现在来个小测验:假设你经营着一家公司,你想开发学习算法来处理这两个问题:

  1. 你有一大批同样的货物,想象一下,你有上千件一模一样的货物等待出售,这时你想预 测接下来的三个月能卖多少件?

  2. 你有许多客户,这时你想写一个软件来检验每一个用户的账户。对于每一个账户,你要 判断它们是否曾经被盗过?

那这两个问题,它们属于分类问题、还是回归问题? 问题一是一个回归问题,因为你知道,如果我有数千件货物,我会把它看成一个实数,

一个连续的值。因此卖出的物品数,也是一个连续的值。 问题二是一个分类问题,因为我会把预测的值,用 0 来表示账户未被盗,用 1 表示账户

曾经被盗过。所以我们根据账号是否被盗过,把它们定为 0 或 1,然后用算法推测一个账号

是 0 还是 1,因为只有少数的离散值,所以我把它归为分类问题。 以上就是监督学习的内容。